Nota
Ciao, benvenuto nella community SunFounder per appassionati di Raspberry Pi, Arduino ed ESP32 su Facebook! Approfondisci le tue conoscenze su Raspberry Pi, Arduino ed ESP32 insieme ad altri appassionati.
Perché unirsi?
Supporto Esperto: Risolvi problemi post-vendita e sfide tecniche con l’aiuto della nostra community e del nostro team.
Impara e Condividi: Scambia consigli e tutorial per migliorare le tue competenze.
Anteprime Esclusive: Accedi in anteprima agli annunci dei nuovi prodotti.
Sconti Speciali: Approfitta di sconti esclusivi sui nostri prodotti più recenti.
Promozioni e Giveaway Festivi: Partecipa a concorsi e promozioni durante le festività.
👉 Pronto a esplorare e creare con noi? Clicca su [qui] e unisciti oggi stesso!
Lezione 47: Semaforo controllato via Bluetooth
Questo progetto è pensato per controllare un semaforo (LED rosso, giallo, verde) tramite comunicazione Bluetooth. L’utente può inviare un carattere (‘R’, ‘Y’ o ‘G’) da un dispositivo Bluetooth. Quando Arduino riceve uno di questi caratteri, accende il LED corrispondente e spegne gli altri due.
Componenti Necessari
Per questo progetto sono necessari i seguenti componenti.
È sicuramente comodo acquistare l’intero kit. Ecco il link:
Nome |
COMPONENTI NEL KIT |
LINK |
---|---|---|
Universal Maker Sensor Kit |
94 |
In alternativa, puoi acquistare i componenti singolarmente dai link qui sotto.
Introduzione al Componente |
Link Acquisto |
---|---|
Arduino UNO R3 o R4 |
|
- |
|
- |
Collegamenti

Codice
Connessione all’app e al modulo Bluetooth
Possiamo usare un’app chiamata «Serial Bluetooth Terminal» per inviare messaggi dal modulo Bluetooth ad Arduino.
Installa Serial Bluetooth Terminal
Vai su Google Play per scaricare e installare Terminale Bluetooth Seriale .
Connetti il Bluetooth
Attiva il Bluetooth sul tuo smartphone.
Vai nelle impostazioni Bluetooth e cerca nomi come JDY-31-SPP.
Dopo averlo selezionato, accetta la richiesta di abbinamento. Se richiesto, inserisci il codice «1234».
Comunica con il modulo Bluetooth
Apri l’app Serial Bluetooth Terminal e connettiti a «JDY-31-SPP».
Invia comandi
Usa l’app per inviare comandi via Bluetooth ad Arduino. Invia “R” per accendere il rosso, “Y” per il giallo e “G” per il verde.
Analisi del Codice
Inizializzazione e configurazione del Bluetooth
// Impostazione della comunicazione con il modulo Bluetooth #include <SoftwareSerial.h> const int bluetoothTx = 3; const int bluetoothRx = 4; SoftwareSerial bleSerial(bluetoothTx, bluetoothRx);
Iniziamo includendo la libreria SoftwareSerial, utile per la comunicazione Bluetooth. I pin TX e RX del modulo Bluetooth sono quindi definiti e associati ai pin 3 e 4 sull’Arduino. Infine, inizializziamo l’oggetto
bleSerial
per la comunicazione Bluetooth.Definizioni dei pin dei LED
// Numeri dei pin per ciascun LED const int rledPin = 10; //rosso const int yledPin = 11; //giallo const int gledPin = 12; //verde
Qui, definiamo a quali pin dell’Arduino sono connessi i nostri LED. Il LED rosso è sul pin 10, il giallo sul 11 e il verde sul 12.
Funzione setup()
void setup() { pinMode(rledPin, OUTPUT); pinMode(yledPin, OUTPUT); pinMode(gledPin, OUTPUT); Serial.begin(9600); bleSerial.begin(9600); }
Nella funzione
setup()
, impostiamo i pin dei LED comeOUTPUT
. Avviamo anche la comunicazione seriale sia per il modulo Bluetooth che per la seriale di default (collegata al computer) con un baud rate di 9600.Ciclo principale loop() per la comunicazione Bluetooth
void loop() { while (bleSerial.available() > 0) { character = bleSerial.read(); Serial.println(character); if (character == 'R') { toggleLights(rledPin); } else if (character == 'Y') { toggleLights(yledPin); } else if (character == 'G') { toggleLights(gledPin); } } }
All’interno del nostro
loop()
principale, controlliamo continuamente se sono disponibili dati dal modulo Bluetooth. Se riceviamo dati, leggiamo il carattere e lo visualizziamo nel monitor seriale. A seconda del carattere ricevuto (R, Y, o G), attiviamo il rispettivo LED usando la funzionetoggleLights()
.Funzione Toggle Lights
void toggleLights(int targetLight) { digitalWrite(rledPin, LOW); digitalWrite(yledPin, LOW); digitalWrite(gledPin, LOW); digitalWrite(targetLight, HIGH); }
Questa funzione,
toggleLights()
, spegne prima tutti i LED. Dopo aver verificato che siano tutti spenti, accende il LED target specificato. Questo garantisce che solo un LED sia acceso alla volta.