Cerca codice

Perché usare resistenze con pulsanti e interruttori su Arduino

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.

Arduino wiring for Push button wihthout resistor

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):

  1. 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.
  2. 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.

Arduino wriring for push button and LED
Arduino wriring for push button and LED

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

Perché dovremmo usare una resistenza con un pulsante in un progetto Arduino?
Perché dovremmo usare una resistenza con un pulsante in un progetto Arduino?
Perché dovremmo utilizzare una resistenza con un pulsante per Arduino?
Perché dovremmo utilizzare una resistenza con un pulsante per Arduino?
2 pin tactile push button switch
2 pin tactile push button switch
Arduino wriring for push button and LED
Arduino wriring for push button and LED
Arduino wiring for Push button with resistor-2
Arduino wiring for Push button with resistor-2
Arduino wiring for Push button with resistor-1
Arduino wiring for Push button with resistor-1
Arduino wiring for Push button wihthout resistor
Arduino wiring for Push button wihthout resistor
132-Code example using a resistor
Lingua: C++
/*
 * 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);
}
133-Code example using INPUT_PULLUP without a resistor
Lingua: C++
/*
 * 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

Risorse e riferimenti

Nessuna risorsa ancora.

File📁

Nessun file disponibile.