Go Down

Topic: Bluetooth Cadenas (Read 1 time) previous topic - next topic

kaizer24

Hola, tengo un problema, cuando envio una cadena por bluetooth al arduino como "Hola" el arduino me tiene que regresar esa misma cadena, pero el problema es que cuando yo le envio "Hola" el arduino me devuelve la misma cadena pero caracter por caracter "H" "o" "l" "a" como le puedo hacer para que el arduino me regrese la cadena de un solo golpe, espero que me puedan ayudar por favor

chiva

A ver que saque la bola de cristal... cambia Serial.println() por Serial.print() dentro del bucle.

Si no es eso, como no nos des más pistas (al menos alguna, porque no tengo ni idea de que has podido hacer), me parece que poco más se puede hacer.
Mercadillo electrónico. Kit iniciación a Arduino, shield LCD a color y más cosas!

kaizer24

Yo le envio la palabra "hola" de mi celular por via bluetooth hacia el arduino, el arduino me tiene que regresar "hola" de un solo ciclo, pero lo que me regresa es "h" "o" "l" "a" una letra por cada ciclo.

Lo que quiero es que me regrese "hola" en un ciclo.

SrDonGato

el puerto serie en un "ciclo" recibe un byte, es decir, un sólo carácter. desde el teléfono hace lo mismo, envía caracter por caracter, tan rapido que no te das cuenta :D

en el programa de arduino debes leer caracter por caracter y meterlo en un array o tipo String de manera que cuando llegue un retorno de carro puedas imprimir la linea entera de golpe

hay infinidad de ejemplos de esto y en el playground seguro lo encuentras

un saludo

kaizer24

gracias por la ayuda srdongato, solo que no he encontrado la manera de guardar el Serial.read en el array no se si puede ayudarme en eso tambien


kaizer24

gracias otra vez SrDonGato ya funcionó, ahora necesito que compare la cadena String con una palabra como por ejemplo if(myString == 'hola'), espero que me ayuden.
aqui esta mi codigo de lo que hecho:

String readString

void loop()
{
  switch(state)
  {
  case 0:
    digitalWrite(13,LOW);
    break;
  case 1:
    digitalWrite(13,HIGH);
    while(Serial.available()){
      delay(100);
      char c = Serial.read();
      if(c == ',')
        break;
      readString += c;
    }
    Serial.print(readString);
    readString="";
    break;
  }
}

SrDonGato

leete las funciones de String y verás fácilmente lo que quieres hacer, es una de las funiones

http://arduino.cc/en/Reference/StringObject


un saludo


kaizer24

hola otra vez, ya puedo leer y comparar Strings por bluetooth, ahora si me pueden ayudar tengo que convertir una String a un int y tambien si es posible que cuando yo le ingrese un dato que me verifique si es un numero o una letra.

por ejemplo

String leer;
int valor;

if(leer es un numero)
   entonces valor va a ser igual que leer;
else
   que siga leyendo

Go Up