Pages: [1]   Go Down
Author Topic: Comunicación bluetooth, App Inventor - Arduino - App Inventor  (Read 36 times)
0 Members and 1 Guest are viewing this topic.
Colombia
Offline Offline
Newbie
*
Karma: 0
Posts: 1
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

Saludos a todos!, de ante mano agradezco su atención y colaboración.

necesito una ayuda para un proyecto que ando armando. Necesito la siguiente comunicación:
Aplicación android - Arduino - Aplicación android.
App manda por ejemplo "#" a arduino, y cuando arduino recibe "#", envía un string de caracteres, en mi caso un código leído de una smart card.... El problema es que esto debe funcionar al activar un inicio, pero aparentemente la app hace eso tan rápido que no logra recibir el dato de arduino y se bloquea (o eso creo) es decir, si bien apenas ha enviado "#", inmediatamente está pidiendo un dato que aun no ha recibido por parte de arduino. Yo he probado por separado envío y recepción y funcionan perfectamente, el problema es cuando hago eso "junto", entrecomillas porque están en serie.

El siguiente es el código que grabé en la placa Arduino, y adjunto también captura de los bloques de Appinventor.

Code:
#include <Wire.h>
int c,o,d,i,go,rol,mas;
String inData;                                 //declarar variable string donde se almacenaran las ordenes que el arduino recibe.
void setup () {
  
  Wire.begin();
  Wire.beginTransmission(0x50);
    //Wire.write(0x00); //direccion 0
    //Wire.write(0x00); //direccion 0
    /*
    Wire.write(0x23); // rol
    Wire.write(0x20); //c
    Wire.write(0x10); //o
    Wire.write(0x21); //d
    Wire.write(0x90); //i
    Wire.write(0x65); //go
    Wire.write(0x13); //mas */
    Wire.endTransmission();
  
Serial.begin(9600); // Establece la velocidad de datos del puerto serie
    
}
 char k[3];

void loop () {
  Wire.beginTransmission(0x50);
        Wire.write(0x00); //direccion 0
    Wire.write(0x00); //direccion 0
  Wire.endTransmission();
  
  Wire.requestFrom(0x50,7);
  rol=Wire.read();
 c=Wire.read();
 o=Wire.read();
 d=Wire.read();
 i=Wire.read();
 go=Wire.read();
 mas=Wire.read();
 
String roll=("");
 roll+=rol;

String codigo=("");
codigo+=rol;
codigo+=c;
codigo+=o;
codigo+=d;
codigo+=i;
codigo+=go;

  if (Serial.available()>0)
  {
  
   Serial.readBytes(k,2); //vamos cargando el ascii de cada letra enviada por puerto serial a la variable k
    for(int z=0;z<2;z++)
    {
      if(k[z]==35) //preguntamos por el ascii de "#" (que es 35)
      {
       Serial.print(codigo);
        break; //interrumpimos si se cumple.
      }
    }
    
  }
  
 
  
 }


De nuevo agradezco su atención y ayuda smiley


* esto.PNG (133.73 KB, 1181x669 - viewed 7 times.)
« Last Edit: April 17, 2014, 07:05:41 pm by rjpuppo » Logged

Pages: [1]   Go Up
Jump to: