Go Down

Topic: comunicacion bidireccional entre un esclavo - maestro ht c05 (Read 1 time) previous topic - next topic

dimates

Tengo un problema al tratar de comunicarme con el maestro.. desde el esclavo
Mi proyecto funciona bien desde el maestro me comunico con el esclavo y realizo
acciones.. pero como hago para responderle al maestro que ponga en alto el pint 8 por ejemplo

Code: [Select]


--mi maestro pone en 1 y despues en 0 dependiendo del delay
void loop()
{
mySerial.write('1');  Serial.println("LED: on");
delay(2000);
mySerial.write('0');  Serial.println("LED: off");
delay(2000);
}

--mi esclavo pone el pin 13 en alto cuando el maestro envia un 1 y en bajo
--cuando envia un 0--

--pregunta : como le repondo a mi esclavo que ponga el pin 10 en alto por ejemplo ?????

void loop() {
   if(Serial.available() > 0){
    state = Serial.read();
  }  
  if (state == '0') {
       digitalWrite(ledPin, LOW);
        Serial.println("LED: off");
  }

  else if (state == '1') {
      digitalWrite(ledPin, HIGH);
        Serial.println("LED: on");
  }
}




_jose_

Suponiendo que tienes 2 arduinos y 2 bluetooths desde el maestro tambien puedes hacer un mySerial.availble() para recoger datos del esclavo y desde el esclavo un Serial.write con los datos que quieras enviar.

dimates

esa no me la sabia... entonces simplemente en el loop coloco un condicional que si cumple la condición invierta la comunicación...
es correcto tengo 2 arduino uno y cada uno maneja elementos independientemente...

dimates

tengo esta duda segun lo que me dices

Code: [Select]


--este es mi arduino con bluethoo maestro

void loop()
{

              State = digitalRead(sensorPin);
 
               if (State == HIGH) {    
                 mySerial.write('1');                  
                 digitalWrite ( led , HIGH) ;                  
               }
               else if (State == LOW) {
                 mySerial.write('0');                  
                 digitalWrite( led , LOW) ;
               }
               
               Serial.println("State");
               Serial.println(State);

               if(mySerial.available() > 0)
               {
               State2 = mySerial.read();
               }

     
               if (State2 == '1')
               {  
                 digitalWrite ( led2 , HIGH) ;                  
               }
                else if (State2 == '0')
               {  
                 digitalWrite ( led2 , LOW) ;                  
               }

               Serial.println("State2");
               Serial.println(State2);
               
               delay(2000);            

                     
}


-- ahora mi arduino con bluethoo esclavo

void loop()
{
 

      if(Serial.available() > 0)
      {
     state = Serial.read();
      }
   if (state == '1')
   {
        digitalWrite ( led , HIGH) ;
        digitalWrite( led , LOW) ;
//AQUI ESTOY DICIENDOLE SI    INGRESO AQUI MANDE AL MAESTRO UN 1
    Serial.write('1');
    Serial.println("State");
    Serial.println(state);
   }
   
   else if (state == '0')
   {    
       digitalWrite( led , LOW) ;
//SI NO LE MANDA UN 0 PARA QUE APAGUE EL LED
       Serial.write('0');  
   }


   
   delay(500);
   

 
}



No esta mandando el 1 el esclavo al maestro
en el esclavo se llama Serial
en el maestro myserial debido a que asi se definio SoftwareSerial mySerial(2,3);// RX,TX

en el esclavo los pines del bluethoo estan en 0 , 1 tx rx
debo configurar tambien una conxion softwareserial para la devolluciion del dato
SoftwareSerial mySerial(0,1);// RX,TX

su ayuda con este tema que tengo la confusion si tienes algun ejemplo basico de envio de datos vidireccional entre los 2 bluethoo seria muy util..

_jose_

Si quieres usar el serial monitor para ver mensajes ,no puedes usar los pines 0 y 1 para el bluetooth ,pues son los que usa arduino para la comunicacion serial hardware y en el otro arduino ,idem,si quieres ver el serial monitor,ademas ,y esto no lo se porque no lo he probado nunca ,no se si el ide admitira dos conexiones al serial monitor en un mismo pc,por lo que alomejor deberias tener 2 pc cada uno con un arduino (repito que esto no lo he probado...).suponiendo que tienes esos dos arduinos cada uno con su pc ,tendras que crear una conexion por software como ya habias hecho ,en los dos arduinos.aqui lo explican perfectamente,unicamente habria que adaptar el ejemplo que ponen para que ambos reciban y envien :
https://paruro.pe/aprende/arduino/bluetooth/comunicaci%C3%B3n-entre-dos-arduinos-mediante-bluetooth

dimates

Muy buena información..

Te cuento que en 1 solo pc no se puede ejecutar dos serial monitor es verdad...

en el maestro tengo :
SoftwareSerial mySerial(2,3); y funciona bien

pero el problema que tengo es que para el esclavo ya tengo ocupada esa conexión serial
SoftwareSerial mySerial(2,3);  con una camara asi que tengo esos pines ocupados y
conexion abierta..

cuando trate de colocarla en otros pines no funciono... tambien tengo ocupado los
pines 10 y 11 con modulo sd card..

Tengo esta limitante si puedes darme otra idea o decirme si podria abrir 2 conexiones con el softwareserial
simultaneamente me dices para problarlo..

puede ser abrir una conexion que realice la accion la cierre y pueda abrir otra conexion serial y depues cerrarla..

nuevamente gracias por tus aportes me han servido mucho...

_jose_

hay que buscar un poco ,en este mismo sitio web :
https://www.arduino.cc/en/Reference/SoftwareSerial
puedes usar cualquier pin ,tiene limitaciones para el arduino mega,leonardo y micro.

Go Up