Perché usare resistenze con pulsanti e interruttori su Arduino
Questo tutorial spiega perché l'uso di una resistenza con pulsanti e interruttori collegati a un Arduino è cruciale per un funzionamento affidabile. Comprendere questo concetto è fondamentale per qualsiasi progetto Arduino che coinvolga input dell'utente. Questa conoscenza previene comportamenti imprevisti e assicura che i tuoi progetti funzionino correttamente. Ecco alcune idee di progetto in cui questa conoscenza è essenziale:
- Semplice interruttore on/off per un LED
- Controller di gioco interattivo
- Telecomando per elettrodomestici
- Sistema di sicurezza con attivazione tramite pulsante
Esploriamo i motivi per cui si utilizzano i resistori in questi circuiti.

Hardware/Componenti
I componenti principali necessari per questo progetto sono minimi: una scheda Arduino, un interruttore a pulsante e una resistenza (maggiore di 300 ohm). Il valore della resistenza non è critico; valori come 1kΩ, 10kΩ o anche 100kΩ generalmente funzioneranno bene (nel video a 00:41).
Guida al cablaggio
Ci sono due configurazioni principali di cablaggio (nel video a 00:30):
- Configurazione 1:Collega il pulsante tra il pin dell'Arduino e +5V. L'altro lato del pulsante è collegato a massa tramite una resistenza. Quando il pulsante è premuto, il pin legge HIGH; quando viene rilasciato, legge LOW.
- Configurazione 2:Collega il pulsante tra il pin dell'Arduino e la massa. L'altro lato del pulsante è collegato a +5V tramite una resistenza. Quando il pulsante è premuto, il pin legge LOW; quando viene rilasciato, legge HIGH.

Uno schema di cablaggio visivo sarebbe utile qui.
Spiegazione del codice
Il codice Arduino utilizza ilpinMode()funzione per configurare il pin come ingresso. La parte cruciale è l'uso diINPUT_PULLUP(nel video a 04:06, 04:23). Questo resistore pull-up interno elimina la necessità di un resistore esterno in certe configurazioni, semplificando il cablaggio. IldigitalRead()La funzione legge lo stato del pin, e un sempliceif-elseL'istruzione determina se il pulsante è premuto (LOW) o meno (HIGH) (nel video a 08:34).
pinMode(2, INPUT_PULLUP); // Configures pin 2 as input with internal pull-up resistor
int pushButton = digitalRead(2); // Reads the state of pin 2
if (pushButton == LOW) {
// Button is pressed
} else {
// Button is not pressed
}
Progetto/Dimostrazione dal vivo
Il video mostra entrambe le configurazioni di cablaggio e i rispettivi comportamenti. Evidenzia i problemi che possono insorgere quando la resistenza viene omessa, come letture erratiche dovute al rumore e all'accoppiamento capacitivo (nel video a 06:18, 06:39, 07:21). La dimostrazione mostra chiaramente il funzionamento stabile e affidabile ottenuto con la resistenza in posizione (nel video a 08:08).
Capitoli
- [00:00] Introduzione
- [00:30] Configurazioni di cablaggio
- [04:12] Spiegazione del codice usando INPUT_PULLUP
- [05:36] Rimozione del resistore: dimostrazione pratica
- [08:33] Spiegazione del codice
Immagini
/*
* This is an Arduino Sketch for a tutorial video
* explaining why a resistor is needed to be used with a push button
* with Arduino.
*
* Written by Ahmad Shamshiri on July 17, 2018 at 23:11 in Ajax, Ontario, Canada
* For Robojax.com
* Watch the instruction video for this code: https://youtu.be/TTqoKcpIWkQ
* This code is "AS IS" without warranty or liability. Free to be used as long as you keep this note intact.
*/
void setup() {
// Robojax.com push button tutorial
pinMode(3,INPUT_PULLUP);
Serial.begin(9600);
Serial.println("Robojax Push Button Tutorial");
}
void loop() {
// Robojax.com push button tutorial
int pushButton = digitalRead(3);
if(pushButton == LOW)
{
Serial.println("Pin 3 LOW");
}else{
Serial.println("Pin 3 HIGH");
}
delay(500);
}
/*
* This is an Arduino Sketch for a Tutorial video
* explaining why a resistor is needed to be used with a push button
* with an Arduino to connect the pin to Ground (GND)
*
* Written by Ahmad Shamshiri on July 18, 2018 at 17:36 in Ajax, Ontario, Canada
* For Robojax.com
* Watch the instruction video for this code: https://youtu.be/TTqoKcpIWkQ
* This code is "AS IS" without warranty or liability. Free to be used as long as you keep this note intact.
*/
void setup() {
// Robojax.com push button tutorial
pinMode(2,INPUT_PULLUP);
Serial.begin(9600);
Serial.println("Robojax Push Button Tutorial");
}
void loop() {
// Robojax.com push button tutorial
int pushButton = digitalRead(2);
if(pushButton == LOW)
{
Serial.println("Button is pushed.");
}else{
Serial.println("Button is NOT pushed.");
}
delay(500);
}
Cose di cui potresti avere bisogno
-
Amazon
Risorse e riferimenti
Nessuna risorsa ancora.
File📁
Nessun file disponibile.
