Go Down

Topic: uso de if anidados para usar arduino-netbeans (Read 524 times) previous topic - next topic

crirodgue

Buenas !

Estoy realizando un proyecto que consiste en la decodificación de un mando cualquiera y redecodificarlo con arduino, usando una interfaz gráfica creada en netbeans, la conexión entre netbeans y arduino se realiza a través del serial.

Mi problema aparece a la hora de emitir el protocolo, código hexadecimal de la tecla decodificada y numero de bits, ya que mi intención es crear una interfaz gráfica en la cual hay 6 botones.

Una vez que he decodificado todos los códigos de X mando, debo asociar estos códigos a los botones de mi aplicación a través del serial.
En Netbeans lo que hago es mostrar el protocolo del mando, el código hexadecimal y el num de bits, y cierto usuario, asocia este código al botón deseado.

¿Alguien sabe cómo se puede hacer, teniendo 3 variables (protocolo, codigo y bits) asociar a los botones?

Una vez asociados, cada vez que se pulsa este botón, mi idea es que se envíe a través del serial el protocolo que utiliza (ya que tengo en cuenta diferentes protocolos, NEC, RC5, RC6 SAMSUNG...) y una vez que pulsa el botón emitir el código y realizar la acción deseada.

He probado a realizar if anidados, pero en la función loop, tengo dos if principales, uno para la función que decodifica y otro para la función emite, las cuales se ejecutan cuando pulso X botón dentro de la aplicación, por lo tanto una vez que entra en la función emite, no entra en el resto de if que están dentro del if principal. ¿Alguien sabría ayudarme?



Gracias de antemano.

Un saludo !


crirodgue

El código en loop es:

void  loop ( )
{
  digitalWrite(12, LOW);
  while (Serial.available()>0){
    caracter = Serial.read();
    comando.concat(caracter);
    delay(10);
   
  }

    if (comando.equals("1") == true){
   
      digitalWrite (12, HIGH);       
      decode_results  results;       
 
       if (irrecv.decode(&results)) {
          irrecv.blink13(true);
          Serial.println("");
          dumpInfo(&results);         
         
          Serial.println("");         
          irrecv.resume();             
       }

   }

   if (comando.equals("2")==true){

      if (comando.equals ("RC5") == true){
        irsend.sendRC5(0x810,12);
        Serial.println("Enviado");
        delay(10);
        irrecv.enableIRIn();
                 
      }else if ...//Por cada protocolo se realiza la misma acción.

    }

    comando = ""; //Limpiamos la cadena para volver a recibir el siguiente comando.
}

Go Up