ClubEnsayos.com - Ensayos de Calidad, Tareas y Monografias
Buscar

Comunicación i2c esclavo


Enviado por   •  24 de Febrero de 2022  •  Tareas  •  832 Palabras (4 Páginas)  •  67 Visitas

Página 1 de 4

esclavo:

# include "mbed.h"

#include <iostream>

#include<string>

# define BUFFER_SIZE 3

# define SLAVE_ADDR 0xA0

using namespace std;

I2CSlave slave (D14,D15);

RawSerial pc (USBTX, USBRX);

AnalogIn Potenciometro(A5);

DigitalOut Mderecha(A0);

DigitalOut Mizquierda (A4);

int ADCdata,datoSensor,ADCdataU,ADCdataD;

char buf [BUFFER_SIZE]="AB";

char buf2 [BUFFER_SIZE]="FG";

char buff [BUFFER_SIZE]="FG";

void leer_sensor();

bool f=0;

void motor ();

void leer_sensor();

Ticker timer;

void motor (){

Mderecha=0;

Mizquierda=0;

timer.detach();

}

int main (){

slave.address(SLAVE_ADDR);

while(1){

int i = slave.receive();

switch(i){

case I2CSlave::ReadAddressed:

slave.write(buf,BUFFER_SIZE);

pc.printf("Enviado al maestro: %s\n",buf);

f=1;

break;

case I2CSlave::WriteGeneral:

slave.read(buf,BUFFER_SIZE);

pc.printf("Leido del maestro (general): %s\n",buf);

break;

case I2CSlave::WriteAddressed:

slave.read(buf2,BUFFER_SIZE);

pc.printf("Leido del maestro: %s\n",buf2);

break;

}

if (f== 1){

leer_sensor();

f=0;

}

if (buf2[1]==100){

Mderecha=1;

Mizquierda=0;

timer.attach(&motor, 10);

buf2[1]=buff[1];

}

else if (buf2[1]==105){

Mizquierda=1;

Mderecha=0;

timer.attach(&motor, 10);

buf2[1]=buff[1];

}

}

}

void leer_sensor(){

int valor=0;

int vector[2];

for (int i=0; i<2; i++) {

vector[i]= Potenciometro.read_u16();

valor= valor +vector[i]; //Toma de datos

//wait (0.01);

}

ADCdata = valor/2;

ADCdataU = ADCdata>>8;

...

Descargar como (para miembros actualizados) txt (2 Kb) pdf (42 Kb) docx (8 Kb)
Leer 3 páginas más »
Disponible sólo en Clubensayos.com