Sensore di battito cardiaco con Arduino e LED
Leggiamo il segnale digitale di un sensore di battito e facciamo lampeggiare un LED ogni volta che il modulo rileva una pulsazione o una vibrazione compatibile.
Cosa imparerai
- come leggere un sensore digitale con
digitalRead(); - come accendere un LED quando viene rilevato un evento;
- come distinguere ingresso e uscita digitale;
- come verificare la polarità del modulo;
- come collegare questo progetto a Processing per visualizzare il segnale su PC.
Come funziona il sensore
Il modulo viene alimentato a 5 V e genera un segnale digitale quando rileva una lieve vibrazione. Arduino legge questo segnale e lo utilizza per accendere un LED.
Sensore utilizzato In questa guida.
Materiale necessario
🧰 Kit Arduino consigliato
Molti progetti del sito usano LED, resistenze, breadboard e cavetti. Un kit completo può essere comodo per iniziare.
👉 Guarda il kit Arduino consigliatoLink di affiliazione Amazon: in qualità di Affiliato Amazon ricevo un guadagno dagli acquisti idonei, senza alcun costo aggiuntivo per te.
📘 Vuoi imparare Arduino passo dopo passo?
Se vuoi approfondire e realizzare progetti più completi, puoi dare un’occhiata anche ai miei libri dedicati ad Arduino. All’interno troverai spiegazioni semplici, schemi chiari e molti progetti pratici pensati per chi parte da zero.
👉 Scopri i miei libri su ArduinoLink di affiliazione Amazon: in qualità di Affiliato Amazon ricevo un guadagno dagli acquisti idonei, senza alcun costo aggiuntivo per te.
Schema del circuito
Schema di collegamento. questa immagine era visualizzata a circa 526 px.
Pin utilizzati
| Elemento | Pin Arduino | Funzione |
|---|---|---|
| Uscita digitale sensore | D3 | Rilevazione evento |
| LED | D12 | Segnalazione visiva |
Codice Arduino commentato
// ==========================================================
// SENSORE DI BATTITO / VIBRAZIONE CON ARDUINO
// Lettura digitale + LED
// ==========================================================
// Pin collegato all'uscita digitale del sensore
const int sensorePin = 3;
// Pin collegato al LED
const int ledPin = 12;
void setup() {
// Il LED è un'uscita
pinMode(ledPin, OUTPUT);
// Il sensore fornisce un segnale digitale
pinMode(sensorePin, INPUT);
}
void loop() {
// Legge lo stato del sensore:
// HIGH = evento rilevato
// LOW = nessun evento
int stato = digitalRead(sensorePin);
if (stato == HIGH) {
// Accende il LED
digitalWrite(ledPin, HIGH);
// Mantiene il LED acceso per un secondo,
// come Nello sketch
delay(1000);
}
else {
// Se non viene rilevato alcun evento,
// il LED resta spento
digitalWrite(ledPin, LOW);
}
}
Come funziona il programma
1. Il sensore viene letto sul pin 3
digitalRead(3) restituisce HIGH oppure LOW. Lo sketch interpreta HIGH come rilevazione di un battito o di una vibrazione.
2. Il LED segue il rilevamento
Quando il sensore va HIGH, il LED sul pin 12 viene acceso. Se il sensore è LOW, il LED viene spento.
3. Il delay da 1 secondo
Lo sketch mantiene il LED acceso per un secondo. È semplice da vedere a occhio, ma blocca temporaneamente il programma.
delay(1000) Arduino non legge nuovi eventi durante quel secondo. Per un vero conteggio dei battiti questo approccio è troppo lento e può perdere impulsi.Versione più reattiva senza delay()
Se vuoi che il LED lampeggi brevemente senza bloccare Arduino, puoi usare millis():
const int sensorePin = 3;
const int ledPin = 12;
unsigned long spegniLedA = 0;
bool ledAcceso = false;
void setup() {
pinMode(sensorePin, INPUT);
pinMode(ledPin, OUTPUT);
}
void loop() {
int stato = digitalRead(sensorePin);
// Se arriva un evento, accende il LED
// per 100 millisecondi
if (stato == HIGH) {
digitalWrite(ledPin, HIGH);
ledAcceso = true;
spegniLedA = millis() + 100;
}
// Spegne il LED senza bloccare il programma
if (ledAcceso && millis() >= spegniLedA) {
digitalWrite(ledPin, LOW);
ledAcceso = false;
}
}
Visualizzare il segnale su Processing
Per osservare sul computer l’andamento del segnale puoi abbinare questo progetto al tutorial dedicato al grafico con Processing, purché il sensore utilizzato disponga dell’uscita adatta e lo sketch venga adattato alla modalità di lettura scelta.
📈 Vai al progetto Arduino + Processing
Perché questo progetto non calcola i BPM
Per calcolare i battiti al minuto bisogna misurare gli intervalli temporali tra impulsi validi, filtrare rimbalzi o falsi rilevamenti e sapere con certezza che il sensore stia producendo un impulso affidabile per ogni battito.
Il progetto non implementa questa logica, quindi è più corretto mantenerlo come rilevatore di eventi con LED.
Risultato del progetto
Scarica lo sketch
⬇️ Scarica sensore_battito_cardiaco.inoDebug rapido
- controlla VCC, GND e OUT sulla serigrafia del sensore;
- verifica che l’uscita digitale sia collegata al pin D3;
- controlla polarità e resistenza del LED;
- se il LED non reagisce, verifica con un multimetro o Monitor Seriale lo stato dell’uscita del modulo;
- se il LED resta sempre acceso, controlla la logica del sensore e l’eventuale soglia regolabile del modulo;
- se vuoi contare impulsi ravvicinati, elimina il
delay(1000).
Varianti del progetto
- aggiungere il Monitor Seriale;
- misurare l’intervallo tra due impulsi;
- calcolare una stima dei BPM;
- visualizzare il segnale con Processing;
- aggiungere un display OLED;
- registrare gli eventi su scheda SD.
Cosa devi ricordare
- Il sensore viene letto sul pin D3.
- Il LED è collegato al pin D12.
- Lo sketch lavora con un semplice segnale HIGH/LOW.
- Il delay da un secondo rende il progetto facile da vedere ma poco adatto al conteggio rapido.
- La polarità dei moduli può cambiare: controlla sempre VCC e GND.
- Questo è un progetto didattico, non un dispositivo medico.
Domande frequenti
Questo progetto misura i battiti al minuto?
No. Lo sketch rileva soltanto uno stato digitale e accende un LED. Per i BPM serve una logica temporale aggiuntiva.
Perché il LED resta acceso per un secondo?
Perché lo sketch usa delay(1000). Puoi ridurre il tempo oppure usare millis() per evitare di bloccare Arduino.
Posso collegarlo a Processing?
Sì. Puoi usare il progetto 22 come riferimento per visualizzare il segnale sul PC, adattando lo sketch al tipo di uscita disponibile sul sensore.
Posso usarlo per controllare la mia frequenza cardiaca?
Puoi sperimentare a scopo didattico, ma non devi considerare il risultato come misura clinica o affidabile per decisioni sanitarie.

