Problema novato leonardo + bluetooth =(

Hola amigos, soy nuevo en este mundo de arduino, pero eso no me detuvo para comprar una targeta leonardo y un modulo bluetooth, y desde ese punto, salio todo mal =(
he seguido alrededor de 50 tutoriales (entre español e ingles) para poder dar el primer paso en esto, pero nada me resulta
he escrito un programa super basico, con el fin de poder prender un led al precionar un boton, y apagarlo al precionar otro
la coneccion con el modulo bluetooth es con los tx y rx invertidos, alimentado a 3,3v y gnd (la cual funciona ya que la interfaz en android se conecta y deja de parpadear la luz del bluetooth)
mi programa es este

int ledPin = 13;
int ledEstado = 2;
char dato;
char datos;
void setup()  {
  Serial.begin(9600);
  Serial1.begin(9600);
  pinMode(ledPin, OUTPUT);
  pinMode(ledEstado, OUTPUT);
}

void loop()  {
  while (Serial1.available() > 0)  {
    delay(3);
    dato = Serial1.read();
    datos = Serial.read();
    if (dato == 'A');
    {
      digitalWrite(ledPin, HIGH);
    } 
    if (dato == 'off');
    {
      digitalWrite(ledPin, LOW);
    }
  }
}

y eso es todo, no puedo encender el led en el pin 13, he intentado mandar "A" como cadena de texto, como numero del ascii (en cadena de texto y en numero) he probado de mil formas y ningun resultado
porfavor ayudenme con esto =(

Hola,

Te envio algo a ver si te sirve ya que yo tambien tuve muchos problemas cuando empece con bluetooth por mi desconocimiento.

Lo siguiente es un codigo para encender un led RGB que esta conectado a los pins 13 (R), 12, (G) y 11 (B).

Mi placa es duemilanove, no se si esto te afectara al codigo o a los pins.

A traves de un movil con bluetooth (yo uso la APP bluetooth term) encendemos y apagamos las luces con las teclas R (rojo), A (azul) y V (verde), las apagamos con las teclas T,S y B que son las que estan inmediatamente a la derecha de las primeras.

Los problemas que yo tuve:

Pretendia usar los pins 0 y 1 para enviar y recibir del modulo bluetooth al mismo tiempo que tenia el USB conectado (parerece ser que no se puede, que al estar el USB coenctado tiene prioridad esa comunicacion serial).Por eso se incluye la libreria software serial para crear dos salidas para Tx y Rx adicionales, en mi caso pins 2 y 3 en donde conecto los datos del bluetooth.

Luego hay que verificar que el modulo sincronice, en mi caso cuando esta sincronizado el led que incorpora deja de parpadear.

Tambien es importante la velocidad a la que este configurado.

Si sigues teniendo problemas con las luces te aconsejo que hagas lo siguiente. Deja un poco las luces de lado y haz un codigo para poder comunicarte entre el movil y el monitor del programo arduino. Una vez que verifiques que la comunicacion es buena, es decir que los que escribes en el telefono lo ves en el monitor y visceversa, pasate a las luces. De lo contrario no sabras si el problema esta en la comunicacion o en otro lado. Al menos es lo que hice yo.

Espero que te sirva.

#include <SoftwareSerial.h>

SoftwareSerial sw(2,3);


void setup () {
Serial.begin(9600);
sw.begin(9600);
pinMode(13,OUTPUT);
pinMode(12,OUTPUT);
pinMode(11,OUTPUT);


}

void loop() {
if (sw.available()>0) {
char c=sw.read();
Serial.print(c);
  if (c=='r') {
    digitalWrite (13,HIGH);
  }
  if (c=='t') {
    digitalWrite (13,LOW);
  }
  if (c=='v') {
    digitalWrite (12,HIGH);
  }
  if (c=='b') {
    digitalWrite (12,LOW);
  }
    if (c=='a') {
    digitalWrite (11,HIGH);
  }
  if (c=='s') {
    digitalWrite (11,LOW);
  }
}
if (Serial.available()>0) {
char c=Serial.read();
sw.print(c);

}
}

gracias amigo cas6678
lo resolvi de la siguiente manera

void setup()
{
  pinMode(13,OUTPUT);
  Serial.begin(9600);
  Serial1.begin(9600);
}

void loop()
{
  char  c;
  if (Serial1.available())
  {                 //para que solo lo lea cuando haya datos, como dice noter
    c = Serial1.read();
  }
  switch (c){
    case 'a':
         digitalWrite(13,HIGH);
         break;
    case 'b':
          digitalWrite(13,LOW);
          break;
  }
   if (c>='0' ) {
    Serial.print(c);
    //en este caso como definimos la variable como char, no imprime un caracter.
   // si la huviesemos definido como int, nos imprimiria el número decimal. Serial.print(c,byte()); para convertirlo a digito.
   }
  delay(500);
}

aplique la solucion desde aqui, aunque aun no entiendo bien la solucion
gracias igual por tu respuesta =)

Hola, tengo el mismo problema que presentan en este Hilo, y nada, intento con todos los códigos y no puedo aún :confused: tengo módulo JY-MCU y Aduino Leonardo…

Alguien me puede echar una mano ?

Gracias.