bluetooth

Salve ragazzi ho gia' richiesto altre volte il vostro aiuto e mi avete dato una mano, mi rivolgo ancora una volta a voi umilmente per il seguente problema:
Dovrei fare una applicazione che collega lo smartphone ad arduino tramite bluetooth.
Io ho tutti i componenti necessari arduino uno, moduo bt h05, smartphone con applicazione(controldevice installata).
ho inserito il seguente codice:

SoftwareSerial mySerial =(10, 11); 

// imposto i pin per la comunicazione seriale
// Collegare i pin: RX=>11 TX=>10

void setup()
{
 pinMode(2, OUTPUT); //questi sono i pin di ciascun relè
 pinMode(3, OUTPUT);
 pinMode(4, OUTPUT);
 pinMode(5, OUTPUT);
 pinMode(6, OUTPUT);
 pinMode(7, OUTPUT);
 pinMode(8, OUTPUT);
 pinMode(9, OUTPUT);


  mySerial.begin(9600); // setto la comunicazione seriale
  Serial.println("ok go!");  //scrivo sul monitor seriale
  delay(1000);
}


void loop()
{
  while (mySerial.available())
  {
      char dato= mySerial.read(); // "dato" è il valore che viene ricevuto dalla seriale
      switch(dato)
      {
        case 'A': // Se ricevo la lettera A,
        {
 digitalWrite(2, HIGH); // attivo il relè collegato al pin12
           mySerial.println("Relè 1 ON");
          break;
        }
        case 'a': // Se ricevo la lettera a
        {
 digitalWrite(2, LOW); // Spengo il relè
          mySerial.println("Relè 1 OFF");
          break;
        }    
                  // E così anche di seguito...
                 case 'B':
        {
 digitalWrite(3, HIGH);
           mySerial.println("Relè 2 ON");
          break;
        }
        case 'b':
        {
 digitalWrite(3, LOW);
          mySerial.println("Relè 2 OFF");
          break;
        }    


        case 'C':
        {
 digitalWrite(4, HIGH);
           mySerial.println("Relè 3 ON");
          break;
        }
        case 'c':
        {
 digitalWrite(4, LOW);
          mySerial.println("Relè 3 OFF");
          break;
        }    
                 case 'D':
        {
 digitalWrite(5, HIGH);
           mySerial.println("Relè 4 ON");
          break;
        }
        case 'd':
        {
 digitalWrite(5, LOW);
          mySerial.println("Relè 4 OFF");
          break;
        }    
                 case 'E':
        {
 digitalWrite(6, HIGH);
           mySerial.println("Relè 5 ON");
          break;
        }
        case 'e':
        {
 digitalWrite(6, LOW);
          mySerial.println("Relè 5 OFF");
          break;
        }    
                 case 'F':
        {
 digitalWrite(7, HIGH);
           mySerial.println("Relè 6 ON");
          break;
        }
        case 'f':
        {
 digitalWrite(7, LOW);
          mySerial.println("Relè 6 OFF");
          break;
        }    
                 case 'G':
        {
 digitalWrite(8, HIGH);
           mySerial.println("Relè 7 ON");
          break;
        }
        case 'g':
        {
 digitalWrite(8, LOW);
          mySerial.println("Relè 7 OFF");
          break;
        }    
                 case 'H':
        {
 digitalWrite(9, HIGH);
           mySerial.println("Relè 8 ON");
          break;
        }
        case 'h':
        {
 digitalWrite(9, LOW);
          mySerial.println("Relè 8 OFF");
          break;
        }    
      }       
  } 
}

ma lo sketch non viene caricato dandomi il seguente errore:

prova_bluetooth.ino:4:1: error: 'SoftwareSerial' does not name a type
prova_bluetooth.ino: In function 'void setup()':
prova_bluetooth.ino:21:4: error: 'mySerial' was not declared in this scope
prova_bluetooth.ino: In function 'void loop()':
prova_bluetooth.ino:29:11: error: 'mySerial' was not declared in this scope
Errore durante la compilazione

mi potreste dire dove sbaglio giusto per vedere in che direzione documentarmi.
Grazie tante

Hai dimenticato all'inizio di includere la libreria:

#include <SoftwareSerial.h>

e inizializzare la seriale (normale):

Serial.begin(9600);

ais26:
Salve ragazzi
ho inserito il seguente codice:

Il codice devi racchiuderlo nei tag code, vedi sezione 7 del regolamento, spiega bene come fare.
Altrimenti parte del codice può essere visualizzata male o mancare perchè interpretato come attributo del testo stesso.

Ok grazie mille cybers tutto ok e scusami nid69ita non mancherò di farlo la prossima volta.Ora cybers che sono riuscito a collegare i dispositivi puoi indicarmi dove poter trovare la documentazione necessaria per poter entrare nel dettaglio ossia: (poter cambiare la password di accesso al dispositivo bt, e altri dettagli)?
Grazie in anticipo.

guarda in Megatopic, c'è una guida in 3 parti sui moduli bluetooth

scusatemi ma c'è una ragione per la quale quando carico lo sketch ho tutte le uscite alte?Non riesco a capire.Poi una volta che intervengo ad abbassarle con l'applicazione funziona tutto correttamente ma quando l'arduino viene alimentato si accendono tutte le uscite.Non capisco

No, i pin dopo l'accensione sono settate come entrate.

Come sono pilotati i relé (circuito elettrico)?

Ciao Uwe

ciao, i pin sono configurati come output e comandano un scheda rele (8 rele).Poi ci sono i due collegamenti (rx,tx) sul pin 10,11.

Cosa fa la scheda relé se non riceve un segnale di pilotaggio?

Ciao Uwe

se fisicamente stacco un filo che dall'arduino arrivano sui pin di comando di un rele della scheda, tale rele si diseccita quindi per forza l'uscita dell'arduino è high.Non capisco proprio.

Se i relè si attivano con lo stato logico HIGH, metti delle resistenze di pull-down tra ogni pin di comando e GND. Scegli delle R di valore tra 10K e 47K.

scusa potresti indirizzarmi ad uno schema elettrico di esempio per capire meglio?Grazie

Fatto al volo... comunque dovreste prendere un pò tutti l'abitudine a dare più informazioni... uwe qualche post più sopra, ti aveva già chiesto lo schema che utilizzi... altrimenti si va per ipotesi...

pull-down-relè.png

scusami tanto pensavo si fosse capito, perdonami.Proverò in base al tuo schema.Grazie tante

Ok, provato ma niente da fare.Sembra che lo sketch porti tutte le uscite in high ma non è cosi'.Poi un volta che le comando con lo smartphone e le abbasso funzionano correttamente ma in avvio vanno tutte alte.

Fai una foto al circuito e postala

Qui c'è una guida per i relè che ad un certo punto dice:

IMPORTANT NOTE: There is a issue with start-up of Arduino programs that control these relays. All of these 2,4, or 8 relay boards input controls are Active LOW, meaning that setting a pin LOW turns them ON. To assure that no relays activate at Reset or Power-On until you want them to, the initialization sequence in SETUP should be:

  • digitalWrite(Relay, HIGH);*
  • pinMode(Relay, OUTPUT);*
    This design is intentional, so that it is possible to guarantee that at power-on of a system, or system reset, that no relays activate except when expected under program control. There may be pumps, lights etc attached and chaos could ensue if this was not controlled definitively for each output port being used.

forse nel tuo caso sostituendo HIGH con LOW potrebbe funzionare

DOPPIOZERO ti sono debitore. nel setup ho portato tutte le uscite HIGH e il prolema si è risolto.Io avevo provato ad aggirare l'ostacolo mettendole tutte il LOW ma non funzionava .Ma dove hai scovato quella guida??credo di aver perso molto tempo per una cazzata che difficilmente scorderò.Ti ringrazio molto.Per gli altri che hanno cercato di aiutarmi vi ringrazio tanto e la prossima volta sarò piu' preciso e allegherò piu' materiale in modo da facilitarvi il lavoro.Vi ringrazio tutti :slight_smile:

:smiley: l'ha postata qualcuno qui sul forum e me l'ero letta e salvata :wink:

:slight_smile: è venuta decisamente buona!!!
Grazie tante!!!