miércoles, 13 de marzo de 2019

¿CÓMO CONECTAR EL MÓVIL CON ARDUINO?

EL PROGRAMA QUE SE USA PARA COMUNICAR EL MÓDULO HC 06 CON EL MOVIL ES EL ARDUDROID, Y EL PROGRAMA ES EL SIGUIENTE:

//MUY IMPORTANTE: EL PROGRAMA POR FIN FUNCIONA, PERO ... PARA PASARSELO HAY QUE DESCONECTAR RX Y TX. POR OTRA PARTE RX DEL BLUETOOTH VA CONECTADO A TX DE LA PLACA
//Y TX DEL BLUETOOTH VA CONECTADO A RZ DE LA PLACA.

#define START_CMD_CHAR '*'
#define END_CMD_CHAR '#'
#define DIV_CMD_CHAR '|'
#define CMD_DIGITALWRITE 10
#define CMD_ANALOGWRITE 11
#define CMD_TEXT 12
#define CMD_READ_ARDUDROID 13
#define MAX_COMMAND 20  // max command number code. used for error checking.
#define MIN_COMMAND 10  // minimum command number code. used for error checking.
#define IN_STRING_LENGHT 40
#define MAX_ANALOGWRITE 255
#define PIN_HIGH 3
#define PIN_LOW 2
String inText;
void setup() {
  Serial.begin(9600);
  Serial.println("ArduDroid 0.12 Alpha by TechBitar (2013)");
  Serial.flush();
}
void loop()
{
  Serial.flush();
  int ard_command = 0;
  int pin_num = 0;
  int pin_value = 0;
  char get_char = ' ';  //read serial
  // wait for incoming data
  if (Serial.available() < 1) return; // if serial empty, return to loop().
  // parse incoming command start flag
  get_char = Serial.read();
  if (get_char != START_CMD_CHAR) return; // if no command start flag, return to loop().
  // parse incoming command type
  ard_command = Serial.parseInt(); // read the command
 
  // parse incoming pin# and value 
  pin_num = Serial.parseInt(); // read the pin
  pin_value = Serial.parseInt();  // read the value
  // 1) GET TEXT COMMAND FROM ARDUDROID
  if (ard_command == CMD_TEXT){  
    inText =""; //clears variable for new input  
    while (Serial.available())  {
      char c = Serial.read();  //gets one byte from serial buffer
      delay(5);
      if (c == END_CMD_CHAR) { // if we the complete string has been read
        // add your code here
        break;
      }             
      else {
        if (c !=  DIV_CMD_CHAR) {
          inText += c;
          delay(5);
        }
      }
    }
  }
  // 2) GET digitalWrite DATA FROM ARDUDROID
  if (ard_command == CMD_DIGITALWRITE){ 
    if (pin_value == PIN_LOW) pin_value = LOW;
    else if (pin_value == PIN_HIGH) pin_value = HIGH;
    else return; // error in pin value. return.
    set_digitalwrite( pin_num,  pin_value);  // Uncomment this function if you wish to use
    return;  // return from start of loop()
  }
  // 3) GET analogWrite DATA FROM ARDUDROID
  if (ard_command == CMD_ANALOGWRITE) { 
    analogWrite(  pin_num, pin_value );
    // add your code here
    return;  // Done. return to loop();
  }
  // 4) SEND DATA TO ARDUDROID
  if (ard_command == CMD_READ_ARDUDROID) {
    // char send_to_android[] = "Place your text here." ;
    // Serial.println(send_to_android);   // Example: Sending text
    Serial.print(" Analog 0 = ");
    Serial.println(analogRead(A0));  // Example: Read and send Analog pin value to Arduino
    return;  // Done. return to loop();
  }
}
// 2a) select the requested pin# for DigitalWrite action
void set_digitalwrite(int pin_num, int pin_value)
{
  switch (pin_num) {
  case 13:
    pinMode(13, OUTPUT);
    digitalWrite(13, pin_value); 
    // add your code here     
    break;
  case 12:
    pinMode(12, OUTPUT);
    digitalWrite(12, pin_value);  
    // add your code here      
    break;
  case 11:
    pinMode(11, OUTPUT);
    digitalWrite(11, pin_value);        
    // add your code here
    break;
  case 10:
    pinMode(10, OUTPUT);
    digitalWrite(10, pin_value);        
    // add your code here
    break;
  case 9:
    pinMode(9, OUTPUT);
    digitalWrite(9, pin_value);        
    // add your code here
    break;
  case 8:
    pinMode(8, OUTPUT);
    digitalWrite(8, pin_value);        
    // add your code here
    break;
  case 7:
    pinMode(7, OUTPUT);
    digitalWrite(7, pin_value);        
    // add your code here
    break;
  case 6:
    pinMode(6, OUTPUT);
    digitalWrite(6, pin_value);        
    // add your code here
    break;
  case 5:
    pinMode(5, OUTPUT);
    digitalWrite(5, pin_value);
    // add your code here      
    break;
  case 4:
    pinMode(4, OUTPUT);
    digitalWrite(4, pin_value);        
    // add your code here
    break;
  case 3:
    pinMode(3, OUTPUT);
    digitalWrite(3, pin_value);        
    // add your code here
    break;
  case 2:
    pinMode(2, OUTPUT);
    digitalWrite(2, pin_value);
    // add your code here      
    break;     
    // default:
    // if nothing else matches, do the default
    // default is optional
  }
}

No hay comentarios:

Publicar un comentario