Pages: [1]   Go Down
Author Topic: Ayuda con proyecto Arduino y Android  (Read 164 times)
0 Members and 1 Guest are viewing this topic.
Offline Offline
Newbie
*
Karma: 0
Posts: 7
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

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:
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

Logged

Offline Offline
Sr. Member
****
Karma: 1
Posts: 305
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

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:

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;
   
   
   }


Logged

Pages: [1]   Go Up
Jump to: