Sensore effetto Hall Arduino: A3144 e 49E per magneti e giri
Sensore Hall con Arduino: A3144 digitale e KY-024 / 49E analogico, pull-up, polo e intensità del campo, misura dei giri, sensore porta, Hall dell'ESP32 e reed.
Un sensore a effetto Hall è un piccolo chip a semiconduttore che rileva presenza, polarità e forza di un magnete senza parti in movimento. Nei progetti con Arduino serve a contare i giri di un motore, misurare la velocità di una bici, capire se una porta è aperta o chiusa o leggere la posizione di un joystick. La cover a libro che spegne lo schermo del telefono, il segnale di velocità di una ventola del PC e i sensori di velocità delle ruote delle auto funzionano tutti con l'effetto Hall. Nei kit trovi di solito due tipi: l'A3144 digitale, che dà un segnale acceso/spento, e il 49E analogico (modulo KY-024), che restituisce l'intensità del campo come tensione.
In questa guida spiegheremo con parole semplici la fisica dell'effetto Hall, poi la differenza tra sensori digitali e analogici, come si collegano e perché serve una resistenza di pull-up. Poi rileveremo un magnete con l'A3144, misureremo con il 49E quale polo si avvicina e quanti gauss vale il campo e conteremo i giri di un motore con un interrupt. Troverai anche a cosa serve il sensore Hall integrato dell'ESP32 e perché le versioni nuove l'hanno eliminato, codice MicroPython per il Raspberry Pi Pico e un confronto tra sensore Hall e reed switch.

Che cos'è l'effetto Hall e come funziona un sensore Hall?
Nel 1879 Edwin Hall scoprì che, applicando un campo magnetico perpendicolare a un conduttore sottile percorso da corrente, tra i suoi due bordi compare una piccola tensione. Il motivo è che le cariche in movimento vengono spinte di lato dal campo magnetico (forza di Lorentz): gli elettroni si accumulano su un bordo della lamina, sull'altro mancano e la differenza si misura come tensione di Hall. Questa tensione è proporzionale all'intensità del campo e cambia segno quando il campo si inverte. Nei semiconduttori l'effetto è molto più marcato che nei metalli, ma resta comunque tra i microvolt e i millivolt. Per questo i chip dei sensori Hall contengono, accanto alla lamina di Hall, un regolatore, un amplificatore e, nei modelli digitali, un trigger di Schmitt e un transistor di uscita.
L'intensità del campo magnetico si misura in gauss (G) o in millitesla (mT); 1 mT = 10 G. Il campo magnetico terrestre vale circa 0,25–0,65 G e quindi non influenza i sensori Hall. Sulla superficie di un piccolo magnete al neodimio ci sono alcune migliaia di gauss, ma il valore cala molto in fretta con la distanza: raddoppiando la distanza il campo scende all'incirca a un ottavo. Per questo la distanza di rilevamento, a seconda della soglia del sensore e delle dimensioni del magnete, va di solito da pochi millimetri a qualche centimetro.
Tipi di sensore Hall: A3144, KY-024 / 49E e altri
In base all'uscita, i sensori Hall si dividono in tre gruppi. Nei tipi interruttore unipolare, come l'A3144, l'uscita va LOW solo quando un polo (il sud nell'A3144) si avvicina abbastanza e torna HIGH quando il magnete si allontana. Nei tipi a ritenuta (latch), come l'US1881, il polo sud porta l'uscita in uno stato e il nord nell'altro, e l'ultimo stato resta anche quando il magnete se ne va; sono ideali per motori con magneti N–S alternati tutto intorno. Nei tipi lineari, come il 49E, l'uscita non è un interruttore ma una tensione analogica proporzionale al campo: senza magnete vale metà dell'alimentazione, sale con un polo e scende con l'altro.
| Caratteristica | A3144 (digitale) | 49E / SS49E (analogico) | US1881 (latch) |
|---|---|---|---|
| Alimentazione | 4,5–24 V | 2,7–6,5 V | 3,5–24 V |
| Uscita | Collettore aperto, LOW col magnete | Analogica, VCC/2 senza campo | Drain aperto, LOW con S, HIGH con N |
| Polo rilevato | Solo sud (S) | Entrambi, con segno | S attiva, N disattiva |
| Soglia / sensibilità | Soglia di attivazione di circa 70–350 G | Tipica 1,4 mV/G a 5 V | Tipica ±95 G |
| Serve un pull-up? | Sì (10 kΩ o INPUT_PULLUP) | No | Sì |
| Nome del modulo | KY-003 | KY-024 (con DO tramite LM393), KY-035 | Raro come modulo |
| Piedini (lato stampato verso di te) | VCC, GND, OUT | VCC, GND, OUT | VDD, GND, OUT |
Collegamento del sensore Hall ad Arduino e resistenza di pull-up
L'uscita dell'A3144 è un transistor a collettore aperto: con il magnete collega l'uscita a GND, senza magnete non la collega a niente e la lascia fluttuante. Un pin fluttuante legge HIGH e LOW a caso per colpa del rumore. Per questo l'uscita va tirata verso l'alimentazione con una resistenza: è il pull-up. Su Arduino la via più semplice è attivare la resistenza interna da 20–50 kΩ con pinMode(pin, INPUT_PULLUP). Se il cavo è lungo, l'ambiente rumoroso o stai contando un albero che gira veloce, una resistenza esterna da 10 kΩ tra uscita e alimentazione dà fronti più puliti. Il collettore aperto ha un vantaggio pratico: se alimenti il sensore a 5 V e porti il pull-up a 3,3 V, anche le schede a 3,3 V come ESP32 e Pico possono usarlo in sicurezza.
| Collegamento | Arduino Uno | ESP32 | Raspberry Pi Pico |
|---|---|---|---|
| A3144 VCC | 5V | VIN (5 V) | VBUS (5 V) |
| A3144 OUT | D2 + INPUT_PULLUP (o 10 kΩ → 5V) | GPIO 27 + INPUT_PULLUP (o 10 kΩ → 3V3) | GP15 + PULL_UP (o 10 kΩ → 3V3) |
| 49E VCC | 5V | 3V3 | 3V3 |
| 49E OUT | A0 | GPIO 34 | GP26 (ADC0) |
| GND (entrambi) | GND | GND | GND |
Rilevare un magnete con l'A3144
- Con il lato stampato dell'A3144 verso di te, i piedini da sinistra a destra sono VCC, GND e OUT. Collega VCC a 5V, GND a GND e OUT a D2.
- Carica il codice qui sotto e apri il monitor seriale a 9600 baud.
- Avvicina una faccia del magnete al lato stampato del sensore. Se il LED integrato della scheda non si accende, gira il magnete: l'A3144 risponde solo al polo sud.
- Annota le distanze a cui il LED si accende e si spegne; la differenza tra le due è l'isteresi interna del sensore.
1const byte HALL_PIN = 2; // A3144 OUT
2const byte LED_PIN = 13; // dahili LED / onboard LED
3
4bool lastMagnet = false;
5
6void setup() {
7 pinMode(HALL_PIN, INPUT_PULLUP); // açık kolektör çıkış için pull-up / pull-up for the open-collector output
8 pinMode(LED_PIN, OUTPUT);
9 Serial.begin(9600);
10}
11
12void loop() {
13 bool magnet = digitalRead(HALL_PIN) == LOW; // mıknatıs varken LOW / LOW when a magnet is present
14 digitalWrite(LED_PIN, magnet ? HIGH : LOW);
15
16 if (magnet != lastMagnet) { // yalnız durum değişince yaz / print only on change
17 Serial.println(magnet ? F("Miknatis var / magnet detected") : F("Miknatis yok / no magnet"));
18 lastMagnet = magnet;
19 }
20}A differenza di un reed o di un pulsante, l'A3144 non ha bisogno di antirimbalzo. Il trigger di Schmitt interno fa sì che la soglia di attivazione (BOP) sia almeno 20 G sopra quella di rilascio (BRP); anche se il magnete tremola al limite, l'uscita non rimbalza avanti e indietro. Non avendo contatti mobili, i fronti di uscita sono puliti e può commutare migliaia di volte al secondo. Ricorda che la logica è invertita: con INPUT_PULLUP leggi LOW quando c'è il magnete e HIGH quando non c'è; è la stessa logica di pull-up del collegamento di un pulsante.
Misurare polo e intensità del campo con KY-024 / 49E
Il 49E è un sensore lineare: alimentato a 5 V, senza magnete la sua uscita è a circa 2,5 V e varia tipicamente di 1,4 mV per gauss. Quando il polo sud si avvicina al lato stampato la tensione sale, con il polo nord scende. Così puoi misurare non solo se c'è un magnete, ma anche quale polo si avvicina e quanto è forte il campo: B (G) = (Vuscita − Vzero) / 0,0014. Nel modulo KY-024 il pin AO è direttamente l'uscita del 49E; il pin DO è l'uscita digitale del comparatore LM393, che cambia quando il campo supera la soglia impostata con il trimmer. Il codice qui sotto misura il punto zero all'avvio, poi scrive il campo in gauss e millitesla e indica il polo.
1const byte HALL_PIN = A0; // 49E OUT ya da KY-024 AO / 49E OUT or KY-024 AO
2const float VCC = 5.0;
3const float SENSITIVITY = 0.0014; // 1,4 mV/G (5 V'ta tipik) / 1.4 mV/G (typical at 5 V)
4const float DEAD_BAND = 20.0; // bu değerin altını yok say (G) / ignore below this (G)
5
6float zeroVolt = 2.5;
7
8float readVolt() {
9 long sum = 0;
10 for (byte i = 0; i < 32; i++) sum += analogRead(HALL_PIN); // 32 ölçüm ortalaması / average of 32 readings
11 return sum / 32.0 * VCC / 1023.0;
12}
13
14void setup() {
15 Serial.begin(9600);
16 delay(200);
17 zeroVolt = readVolt(); // mıknatıs yokken sıfır noktası / zero point with no magnet nearby
18 Serial.print(F("Sifir / zero: "));
19 Serial.print(zeroVolt, 3);
20 Serial.println(F(" V"));
21}
22
23void loop() {
24 float gauss = (readVolt() - zeroVolt) / SENSITIVITY;
25 Serial.print(gauss, 0);
26 Serial.print(F(" G ("));
27 Serial.print(gauss / 10.0, 1); // 10 G = 1 mT
28 Serial.print(F(" mT) "));
29 if (gauss > DEAD_BAND) Serial.println(F("Guney kutbu / south pole"));
30 else if (gauss < -DEAD_BAND) Serial.println(F("Kuzey kutbu / north pole"));
31 else Serial.println(F("Alan yok / no field"));
32 delay(250);
33}L'ADC a 10 bit dell'Uno divide 5 V in 1024 passi, quindi ogni passo vale circa 4,9 mV; con il 49E significa una risoluzione di circa 3,5 G. Poiché il modo di indicare i poli può cambiare da un produttore all'altro, controlla con una bussola la prima volta: la punta dell'ago che indica il nord si gira verso il polo sud del magnete. Il sensore va in saturazione intorno a ±1000 G; se lo tocchi quasi con un magnete molto forte, il valore smette di salire. Il punto zero può spostarsi di qualche millivolt con la temperatura, quindi per misure precise ripeti l'azzeramento subito prima di misurare.
Misurare giri e velocità con un sensore Hall
Per misurare i giri di un motore, di una ventola o di una ruota, incolli un piccolo magnete sull'albero o sul cerchio e fissi l'A3144 dove il magnete gli passa davanti una volta per giro. A ogni passaggio l'uscita va LOW una volta. Cercare di catturare gli impulsi con digitalRead() dentro loop() fa perdere impulsi ad alta velocità; il metodo giusto è un interrupt. Il codice qui sotto misura il tempo tra due impulsi al microsecondo e calcola la velocità con giri/min = 60.000.000 / (periodo_µs × numero_di_magneti). Se per 2 secondi non arriva alcun impulso, l'albero è considerato fermo. Spieghiamo come funzionano gli interrupt nella guida agli interrupt di Arduino.
1const byte HALL_PIN = 2; // A3144 OUT, Uno'da kesme pini (INT0) / interrupt pin on the Uno (INT0)
2const byte MAGNETS = 1; // mildeki mıknatıs sayısı / magnets on the shaft
3const unsigned long MIN_GAP_US = 2000; // 2 ms'den sık darbeler gürültüdür / pulses closer than 2 ms are noise
4const unsigned long STOP_US = 2000000; // 2 sn darbe yoksa durdu / no pulse for 2 s means stopped
5
6volatile unsigned long lastPulse = 0;
7volatile unsigned long period = 0; // iki darbe arası süre (µs) / time between pulses (µs)
8
9void onPulse() {
10 unsigned long now = micros();
11 unsigned long gap = now - lastPulse;
12 if (gap > MIN_GAP_US) {
13 period = gap;
14 lastPulse = now;
15 }
16}
17
18void setup() {
19 pinMode(HALL_PIN, INPUT_PULLUP);
20 attachInterrupt(digitalPinToInterrupt(HALL_PIN), onPulse, FALLING); // mıknatıs gelince LOW'a iner / falls LOW when the magnet arrives
21 Serial.begin(9600);
22}
23
24void loop() {
25 noInterrupts(); // iki değişkeni birlikte oku / read both variables together
26 unsigned long p = period;
27 unsigned long last = lastPulse;
28 interrupts();
29
30 float rpm = 0;
31 if (p > 0 && micros() - last < STOP_US) {
32 rpm = 60000000.0 / ((float)p * MAGNETS);
33 }
34 Serial.print(F("RPM: "));
35 Serial.println(rpm, 0);
36 delay(500);
37}Il codice usa un tempo di blocco di 2 ms, quindi con un solo magnete puoi misurare fino a 30.000 giri/min, più che sufficienti per la maggior parte dei motori hobbistici. Con due o quattro magneti sull'albero la misura si aggiorna più spesso alle basse velocità; basta cambiare MAGNETS. Distribuisci i magneti in modo bilanciato: un peso da un lato solo fa vibrare un albero veloce. Il filo giallo di una ventola del PC è in realtà un'uscita a collettore aperto di un sensore Hall interno e dà due impulsi per giro; con MAGNETS = 2 lo stesso codice legge i giri della ventola. Il calcolo della circonferenza e dei km/h per un tachimetro da bici è nella guida al reed switch; la formula è la stessa con un sensore Hall.
Sensore per porte e coperchi con un sensore Hall
Per un sensore porta, metti il magnete sull'anta mobile e l'A3144 sul telaio, in modo che a porta chiusa il polo sud del magnete sia rivolto verso il lato stampato del sensore. A porta chiusa l'uscita è LOW, quando si apre va HIGH. Anche se il cavo si rompe, il pull-up porta il pin a HIGH e il sistema lo legge come «porta aperta», quindi il guasto resta dal lato sicuro. Qui il sensore Hall ha due vantaggi: senza contatti mobili non si usura su porte che vibrano o su coperchi che si aprono e chiudono molte volte al secondo, e rileva il magnete anche attraverso la parete di una scatola stagna. Lo svantaggio è che consuma sempre: l'A3144 assorbe circa 4–5 mA, che da soli esaurirebbero una batteria da 2000 mAh in circa 18 giorni. Per un sensore porta che deve funzionare a batteria per mesi è più adatto un reed, che non consuma nulla.
Il sensore Hall integrato dell'ESP32
Il chip ESP32 originale contiene un piccolo sensore Hall che, nelle versioni 2.x del core Arduino ESP32, si legge con la funzione hallRead(). Ma questo sensore è molto rumoroso e mostra una variazione chiara solo quando un magnete potente tocca quasi la schermatura metallica del modulo; durante la misura usa inoltre GPIO 36 e GPIO 39, quindi se a questi pin è collegato altro i risultati si rovinano. I chip più recenti come ESP32-S2, S3 e C3 non lo hanno affatto e, poiché Espressif ha tolto il supporto con ESP-IDF 5, hallRead() non esiste più nel core Arduino ESP32 3.x. Il codice qui sotto compila con entrambe le versioni: con la 2.x scrive il valore medio, con la 3.x mostra invece un avviso. Per un progetto serio è sempre meglio collegare all'ESP32 un A3144 o un 49E esterno; le caratteristiche generali della scheda sono in cos'è l'ESP32.
1// ESP32 dahili Hall sensörü (yalnız orijinal ESP32) / built-in Hall sensor (original ESP32 only)
2void setup() {
3 Serial.begin(115200);
4}
5
6void loop() {
7#if ESP_ARDUINO_VERSION_MAJOR < 3
8 long sum = 0;
9 for (int i = 0; i < 100; i++) {
10 sum += hallRead(); // GPIO 36 ve 39'u kullanır / uses GPIO 36 and 39
11 }
12 Serial.println(sum / 100); // gürültülü, ortalama al / noisy, so average it
13#else
14 Serial.println("hallRead() 3.x cekirdekte yok / not available in core 3.x");
15#endif
16 delay(200);
17}Misurare i giri con il Raspberry Pi Pico (MicroPython)
Sul Pico alimenta l'A3144 a 5 V da VBUS, collega l'uscita a GP15 e attiva il pull-up interno del pin; dato che questa resistenza va a 3,3 V, il pin non vede mai 5 V. Il codice qui sotto conta gli impulsi con un interrupt e ogni secondo legge e azzera il contatore. Disattivare per un attimo gli interrupt durante la lettura evita che un impulso si infili tra lettura e azzeramento e vada perso. Con un magnete la risoluzione di questo metodo è di 60 giri/min; per un risultato più fine puoi misurare il tempo tra due impulsi con time.ticks_us(), come nell'esempio per Arduino.
1from machine import Pin, disable_irq, enable_irq
2import time
3
4hall = Pin(15, Pin.IN, Pin.PULL_UP) # A3144 OUT (sensör VBUS'tan 5 V ile) / A3144 OUT (sensor on 5 V from VBUS)
5MAGNETS = 1 # mildeki mıknatıs sayısı / magnets on the shaft
6count = 0
7last_us = 0
8
9def on_pulse(pin):
10 global count, last_us
11 now = time.ticks_us()
12 if time.ticks_diff(now, last_us) > 2000: # 2 ms gürültü filtresi / 2 ms noise filter
13 count += 1
14 last_us = now
15
16hall.irq(trigger=Pin.IRQ_FALLING, handler=on_pulse)
17
18while True:
19 time.sleep(1)
20 state = disable_irq() # sayacı güvenle oku / read the counter safely
21 pulses = count
22 count = 0
23 enable_irq(state)
24 print("RPM:", pulses * 60 // MAGNETS)Sensore Hall o reed switch?
Entrambi rilevano un magnete, ma in modi del tutto diversi. Il reed è un interruttore meccanico in cui due lamine metalliche dentro un'ampolla di vetro si toccano quando si avvicina un magnete, e non consuma nulla. Il sensore Hall è un chip elettronico senza parti mobili che ha bisogno di alimentazione. La regola veloce: reed per un sensore che scatta di rado e deve funzionare mesi a batteria; sensore Hall per un albero che gira veloce, un ambiente con vibrazioni o qualsiasi lavoro che richieda il polo o l'intensità del campo.

| Caratteristica | Sensore Hall (A3144 / 49E) | Reed switch |
|---|---|---|
| Funzionamento | Semiconduttore, nessuna parte mobile | Contatto meccanico |
| Alimentazione | Necessaria (circa 4–6 mA) | Non necessaria |
| Polo e intensità | A3144 solo sud; 49E dà polo e intensità | Il polo non conta, solo presente / assente |
| Velocità | Fino a decine di kHz, fronti puliti | Centinaia di Hz, rimbalzi del contatto |
| Durata e robustezza | Non si usura, regge le vibrazioni | Milioni di commutazioni, il vetro può rompersi |
| Uso migliore | Giri, velocità, posizione, rilevamento del polo | Sensori porta e finestra a batteria |
Idee di progetti con un sensore Hall
- Tachimetro per bici: Un magnete su un raggio e un A3144 sulla forcella; mostra velocità, distanza e media su un display OLED.
- Contagiri per motori e ventole: Misura i giri di un motore DC o di una ventola del PC e osserva la velocità reale mentre la regoli in PWM.
- Anemometro: Monta un magnete sull'albero di un rotore a coppette, calcola la velocità del vento dai giri e registrala con un ESP32.
- Flussimetro per acqua: Anche i sensori di flusso come lo YF-S201 hanno un sensore Hall all'interno; contando gli impulsi misuri i litri, dettagli nella guida al sensore di flusso dell'acqua.
- Scatola segreta o serratura per cassetti: Un 49E nascosto nel coperchio apre la serratura solo quando il magnete viene tenuto nel punto esatto.
- Allarme per porte o coperchi: Un allarme con A3144 che fa suonare un buzzer o manda una notifica al telefono tramite ESP32 quando si apre un coperchio.
Errori comuni e come risolverli
| Sintomo | Causa probabile | Soluzione |
|---|---|---|
| Il pin legge HIGH e LOW a caso | Manca il pull-up sull'uscita dell'A3144 | Usa INPUT_PULLUP o metti 10 kΩ tra uscita e VCC |
| Avvicinando il magnete non succede nulla | Polo sbagliato: l'A3144 risponde solo al polo sud | Gira il magnete e tienilo di fronte al lato stampato |
| Il sensore è instabile su ESP32 o Pico | L'A3144 è alimentato a 3,3 V | Alimenta il sensore a 5 V e collega il pull-up a 3,3 V |
| Giri bassi o irregolari ad alta velocità | Gli impulsi vengono letti in loop() e persi | Usa un interrupt con attachInterrupt() |
| Il 49E segna un valore senza magnete | Il punto zero non è a 2,5 V o si è spostato | Misura lo zero all'avvio e sottrailo |
| hallRead() non compila sull'ESP32 | Stai usando il core Arduino ESP32 3.x | Usa un sensore Hall esterno o passa al core 2.x |
Il sensore Hall è il modo più flessibile per rilevare un magnete senza contatto, senza rumore e senza usura: l'A3144 ti dà un segnale acceso/spento veloce e pulito, il 49E polo e intensità del campo, e con gli interrupt ottieni una misura dei giri affidabile. Se non dimentichi la resistenza di pull-up, il polo giusto e il dettaglio dell'alimentazione sulle schede a 3,3 V, funziona al primo colpo. Nell'app BlueGrays trovi i progetti Lettura del reed e Sensore porta con reed, insieme a esempi con pulsanti e interrupt, l'allarme di movimento con ESP32 e progetti di antirimbalzo con il Pico, con schemi e codice passo dopo passo.
Domande frequenti
Come funziona un sensore a effetto Hall?
Dentro il sensore Hall c'è una sottile lamina di semiconduttore percorsa da corrente. Quando un campo magnetico la colpisce perpendicolarmente, le cariche vengono spinte verso un bordo e tra i due bordi compare una piccola tensione proporzionale al campo. Un amplificatore interno la aumenta; nei modelli digitali un circuito a soglia la trasforma in un'uscita acceso/spento.
Perché l'A3144 ha bisogno di una resistenza di pull-up?
L'uscita dell'A3144 è a collettore aperto: con il magnete la collega a GND, senza non la collega a niente. Un pin fluttuante legge valori casuali per colpa del rumore, quindi l'uscita va tirata verso l'alimentazione con una resistenza. Su Arduino basta INPUT_PULLUP; con cavi lunghi e alte velocità è meglio una resistenza esterna da 10 kΩ.
A quale polo risponde l'A3144?
L'A3144 è un interruttore unipolare e porta l'uscita a LOW solo quando il polo sud si avvicina abbastanza al suo lato stampato. Con il polo nord non succede niente. Se non conosci il polo del magnete, prova entrambe le facce o controllalo con un sensore lineare come il 49E.
Che differenza c'è tra KY-024 e KY-003?
Il KY-003 è un modulo con il sensore digitale A3144 e dice solo se c'è un magnete o no. Il KY-024 monta un sensore lineare 49E e un comparatore LM393; il pin AO fornisce l'intensità del campo come valore analogico, il pin DO un segnale digitale in base alla soglia impostata con il trimmer.
Da che distanza un sensore Hall rileva un magnete?
Dipende dalla forza del magnete e dalla soglia del sensore. Un piccolo magnete al neodimio attiva di solito un A3144 da 1–3 cm; con un magnete in ferrite debole si scende a pochi millimetri. Poiché il campo magnetico cala molto in fretta con la distanza, il modo più efficace per aumentare la portata è usare un magnete più grande o più potente.
Si può usare il sensore Hall integrato dell'ESP32?
L'ESP32 originale ha un sensore Hall integrato che nel core Arduino ESP32 2.x si legge con hallRead(). È però molto rumoroso, nota solo un magnete forte e molto vicino e usa GPIO 36 e 39. Non c'è su ESP32-S2, S3 e C3, e hallRead() è stato rimosso dal core Arduino ESP32 3.x; per progetti seri usa un sensore esterno.
Progetti da realizzare dopo questo articolo
Vedi tutti i progetti
Accendere un LED con un pulsante (Push)
Come un campanello: la luce resta accesa finché premi e si spegne quando lasci. L'Arduino ascolta il pulsante di continuo; mentre è premuto accende il LED, e appena togli il dito lo spegne. Con questo

Controllo LED ESP32 con pulsante (Push)
Il LED si accende quando il pulsante viene premuto e si spegne quando viene rilasciato. Mostra come vengono utilizzati il pin di ingresso digitale dell'ESP32 e la resistenza di pull-up interna. Grazie alla modalità INPUT_PULLUP, non è necessaria alcuna resistenza esterna.

Lettura di un sensore reed
Ti sei mai chiesto come funziona l'interruttore magnetico degli allarmi per porte e finestre? Quando una calamita si avvicina al modulo relè reed, il minuscolo interruttore al suo interno si chiude; l

Sensore porta con contatto reed
Capisci se la tua porta è aperta o chiusa guardando una luce. Metti un piccolo magnete sulla porta e sul telaio un interruttore che sente i magneti; a porta chiusa stanno vicini e si accende il LED ve

Sistema di Allarme Movimento ESP32 (PIR + Buzzer + LED + Telegram)
Un sistema di allarme di sicurezza intelligente che attiva buzzer e LED quando il sensore PIR rileva movimento, inviando contemporaneamente una notifica istantanea al proprietario tramite Telegram. Dispone di un tempo di attesa di 30 secondi per limitare la frequenza degli allarmi ripetuti; questo meccanismo non verifica la validità dei rilevamenti del sensore PIR né elimina le false attivazioni. Adatto a sicurezza domestica, monitoraggio di garage, magazzini o studi. Con l'ESP32-CAM è possibile

Raspberry Pi Pico Pulsante Debounce: IRQ vs Software Polling
Una pressione e il codice conta 3-4? È contact bounce! Confronta 2 metodi di conteggio in Serial: polling RAW (cattura bounce, conta male) vs IRQ + software debounce (preciso). Impara fisica del bounce, software debounce, Pin.irq() interrupt, IRQ_FALLING trigger, ISR handler, sicurezza delle variabili globali ISR.

Rilevatore di movimento con sensore di movimento
Un semplice guardiano che ti avvisa quando qualcuno entra nella stanza. Il sensore di movimento percepisce il calore emesso dal corpo umano, e l'Arduino tiene acceso il LED finché c'è movimento e lo s
Altri articoli
App BlueGrays
Costruisci questo circuito passo passo sul telefono
Schema, codice ed elenco componenti in un’unica schermata. Oltre 200 progetti Arduino, ESP32 e Pico da realizzare.
Inquadra con il telefono
Punta la fotocamera sul codice: si apre lo store del tuo telefono.
oppure apri lo store

