Go Down

Topic: Ayuda con proyecto Arduino y Android (Read 431 times) previous topic - next topic

neo80

Hola gente. Necesito ayuda para un proyecto que estoy haciendo
Les comento un poco como es lo que necesito y en donde estoy parado
Yo hice una APP en Android que lo que hace es mandar un dato de texto para prender y apagar un ping del Arduino Uno
por Bluetooth.

Lo que mando es por ejemplo el texto "9on" o "9off" y con eso prendo y apago es puerto

Ahora bien lo que estoy necesitando hacer es enviar un número por ejemplo 5000 y que eso se guarde en una variable
en arduino hasta que yo la cambie enviando otro distinta.

El problema se divide en dos ahora
1 - Cuando mando el dato lo cual lo hace bien desde android llega pero no me lo permite poner en una variable como la que quiero para usar en un delay()
2 - Tengo que enviar desde mi formulario de android varios datos de esos al mismo tiempo y estos se tiene uqe tabular en distintas variables para usar en distintos delay() posterior mente

Pongo el una parte de codigo de prueba que estoy haciendo


Code: [Select]

String dato;
int verde=13;
int cuanto;

void setup()
{
  Serial.begin(9600);                        //Iniciamos comunicación serial
  //Salidas digitales
  pinMode(verde, OUTPUT);
}

void loop()
{
  while (Serial.available()) {
    delay(10);
     if (Serial.available() > 0) {
      char c = Serial.read();                //Cuando se recibe un dato, se guarda como carácter
      dato += c;                             //Cadena de caracteres formada por la suma de los datos recibidos
     }
  }

cuanto=3000;

if (dato.length() > 0) {                   //Comprueba que la variable "dato" tenga al menos un caracter
  Serial.println(dato);
  // inicio la llamada a los pines
   if(dato == "9on") {
      digitalWrite(verde, HIGH);
      delay(cuanto);
      digitalWrite(verde, LOW);
    }
    if(dato == "9off") {
      digitalWrite(verde, LOW);
    }

      dato="";  //Declaramos la variable "vacía" para volver a guardar de nuevo caracteres y compararlos con cada uno de los casos
  }
}


En la variable "cuanto" puse un numero fijo pero es ahí donde quiero que se guarde el numero que paso por Bluetooth.
Incluso lo ideal sería que yo envie varios numeros a la vez ejemplo

Dato que paso: "a3000#b5000#c9000"

Lo que necesito que haga:
int a=3000;
int b=5000;
int c=9000;

Para despues usarlo así:
delay(a);
delay(b);
delay(c);

Espero alguien me pueda dar una mano con esto
Muchas gracias


Naruto128

lo que pasa es que estas leyendo texto,  caracteres, y lo queres poner en un delay , que acepta
un entero.

debes convertir esto de un cadena de caracteres a un Entero.
fijate esto si ye funciona.

Code: [Select]


String readString="";
int n=0;
int led = 13;
   
int NumeroRecivido=0;

void setup() {
Serial.begin(9600);
   pinMode(led, OUTPUT);     
        digitalWrite(led, LOW);    // turn the LED off by making the voltage LOW

  }

void loop() {
      NumeroRecivido= ReadPort();
       if(NumeroRecivido==5000){
           digitalWrite(led, HIGH);
       }   
else{
   digitalWrite(led, LOW);
      }
      delay(100);
     
}
   
   
   int  ReadPort(){
    int index=0;
  while (Serial.available()) {
 
    delay(10);
   if (Serial.available() >0 ) {
       char c = Serial.read();  //gets one byte from serial buffer
       readString += c;
               index++; //makes the string readString
             }
             
  }

if (index >0) {   
   
         char carray[readString.length()+1];
             readString.toCharArray(carray, sizeof(carray));
             n = atof(carray); ////  N, DATA SEND
            readString="";
       
}
           
         
   return n;
   
   
   }



Go Up
 


Please enter a valid email to subscribe

Confirm your email address

We need to confirm your email address.
To complete the subscription, please click the link in the email we just sent you.

Thank you for subscribing!

Arduino
via Egeo 16
Torino, 10131
Italy