Hola, estoy teniendo problemas al leer datos enviados desde una raspberry a un arduino UNO vía Serial. La idea general es enviar un caracter desde el arduino a la raspberry y que luego la raspberry devuelva otro valor al arduino y el arduino ejecute algo. El código que tengo es el siguiente:
En el arduino
int estado = 0;
typedef struct
{
byte mov;
byte luz;
} sensores;
sensores sensor[4];
void setup() {
pinMode(3, INPUT);
pinMode(13, OUTPUT);
pinMode(4, INPUT);
pinMode(11, OUTPUT);
pinMode(6, INPUT);
pinMode(12, OUTPUT);
Serial.begin(9600);
//Sector #1//
sensor[0].mov = 3;
sensor[0].luz = 13;
//Sector #2//
sensor[1].mov = 6;
sensor[1].luz = 12;
//Sector #3//
sensor[2].mov = 5;
sensor[2].luz = 11;
}
void loop() {
estado = digitalRead(sensor[0].mov);
if (estado == HIGH && Serial.available()==0){
Serial.println('A');
delay(2000);
}
estado = digitalRead(sensor[1].mov);
if (estado == HIGH && Serial.available()==0){
Serial.println('B');
delay(2000);
}
estado = digitalRead(sensor[2].mov);
if (estado == HIGH && Serial.available()==0){
Serial.println('C');
delay(2000);
}
byte data = Serial.read();
if(data == 0){
digitalWrite(sensor[0].luz, HIGH);
delay(1000);
}
else if(data == 1){
digitalWrite(sensor[1].luz, HIGH);
delay(1000);
}
else if(data == 2){
digitalWrite(sensor[1].luz, HIGH);
delay(1000);
}
else{
delay(1000);
}
}
Lo que hago es enviar A, B o C dependiendo del sensor que se activó y luego la raspberry recibe eso, Hasta ahi no tengo problemas ya que la probe con un código en python y recibe A, B, o C sin problemas, el error que tengo es que cuando quiero enviar de vuelta otro comando al arduino no pasa nada. Aquí dejo el código en python que tengo por ahora:
#!/usr/bin/python
import serial
import time
se = serial.Serial('/dev/ttyACM0', 9600)
while True:
rec = se.readline()
print rec
'''
if rec == (str('A')):
se.write(str('1'))
time.sleep(1)
elif rec == (str('B')):
se.write(str('2'))
time.sleep(1)
elif rec == (str('C')):
se.write(str('3'))
time.sleep(1)
else:
time.sleep(1)
se.close()
Muchas gracias