[risolto]problema modulo bluetooth

ciao a tutti. ho un programma che dovrebbe accendere un led da un dispositivo esterno(smartphone android) connesso al modulo bluetooth hc-05
non funziona. come faccio a capire dove ho sbagliato?

#include <SoftwareSerial.h>

SoftwareSerial mySerial(10, 11); // imposto i pin per la comunicazione seriale
// Collegare i pin nel seguente modo: RX=>11 TX=>10

void setup()
{
  pinMode(2, OUTPUT);
  mySerial.begin(9600); // setto la comunicazione
   Serial.println("ok");
   delay(1000);               
}


void loop()
{
   if (mySerial.available()>0)
   {
     char val= mySerial.read();
     if (val=='1'){digitalWrite(2,HIGH);}
     else{digitalWrite(2,LOW);}
     
   }
}

Ciao,
due cose …

  1. sarebbe meglio scrivere in forma incolonnata … è molto più leggibile
#include <SoftwareSerial.h>

SoftwareSerial mySerial(10, 11); // imposto i pin per la comunicazione seriale
// Collegare i pin nel seguente modo: RX=>11 TX=>10

void setup()
{
   pinMode(2, OUTPUT);
   mySerial.begin(9600); // setto la comunicazione
   Serial.println("ok");
   delay(1000);               
}

void loop()
{
   if (mySerial.available()>0)
   {
      char val= mySerial.read();
      if (val=='1'){
         digitalWrite(2,HIGH);
      }
      else{
         digitalWrite(2,LOW);
      }
   }
}
  1. dopo aver ricevuto il carattere … stampalo sul monitor seriale così sei sicuro di ciò che hai ricevuto :wink:

Guglielmo

P.S. : nell’IDE usa sempre la funzione Tools → Auto Format … ti mette a posto la formattazione del sorgente :wink:

Anzi ... ... fallo stampare in HEX .. così vediamo ESATTAMENTE cosa ricevi ;)

char val = mySerial.read();
Serial.println(val, HEX);

Guglielmo

Sicuro di aver collegato il pin TX del bluetooth al pin 10 di Arduino (RX) e il RX del bluetooth al pin 11 di Arduino (TX) ?

Sicuro che il modulo bluetooth sia programmato per lavorare a 9600 ?

Sei mai entrato in modalità comando per verificare le impostazioni ?

Hai il datasheet ed il set di comandi ?

Questo codice è ultra-collaudato … ed è già previsto sia per parlarci a 9600 che a 38400 quando lo metti in “Control mode” (ovvero con il pin KEY connesso al +5) …
… tutto quello che digiti nel monitor seriale finisce sul BT, tutto quello che ricevi dal BT finisce sul monitor seriale :wink:

#include <SoftwareSerial.h>

// #define  BT_CONTROLMODE      // Uncomment if you set the KEY pin to HIGH (Control mode)

#define  BT_RX 10            // PIN to receive from bluetooth
#define  BT_TX 11            // PIN TO transmit to bluetooth

SoftwareSerial btSerial(BT_RX, BT_TX);

void setup()
{
  delay (2000);
  //
  Serial.begin(9600);        // Initialize USB Serial port
  //
  #ifdef BT_CONTROLMODE
    btSerial.begin(38400);   // Initialize Bluetooth SoftwareSerial port for default control speed
  #else
    btSerial.begin(9600);    // Initialize Bluetooth SoftwareSerial port for selected data speed
  #endif
  //
  Serial.println("--- Ports ready ---");
  Serial.println("");
  //
  #ifdef BT_CONTROLMODE
    delay(1000);  
    btSerial.print("AT");
    btSerial.print("\r\n");
  #endif
}

void loop()
{
  if (btSerial.available() > 0) Serial.write(btSerial.read());
  if (Serial.available() > 0) btSerial.write(Serial.read());
}

Fammi sapere …

Guglielmo

Puoi modificare il tuo primo post e aggiungere davanti al titolo [RISOLTO] :D

ma mi chiedevo, com'è che non funziona se lo attacco alla presa della corrente con l'adattatore da 5v?

A cosa colleghi l'adattatore a 5V su Arduino ???

Guglielmo

si dove c'è il jack accanto a quello usb

L'alimentazione via Jack NON può essere di 5V ...

... c'è un regolatore a bordo e l'alimentazione deve essere tra minimo 7V e massimo 12V ... consigliata, al fine di evitare eccessivi riscaldamenti del regolatore, 9V. :)

Guglielmo