Arduino UNO R4 - Button
De button is een eenvoudig maar belangrijk component dat wordt gebruikt in veel Arduino UNO R4 projecten. Het kan ingewikkeld lijken vanwege de mechanische en fysieke eigenschappen, wat uitdagend kan zijn voor beginners. Deze tutorial is ontworpen om beginners te helpen het gemakkelijk te begrijpen. Laten we beginnen!

※ Notiz:
Voordat we leren hoe de button te gebruiken met Arduino Uno R4, willen we twee veelvoorkomende fouten benadrukken die beginners vaak tegenkomen:
Het zwevende invoer probleem:
Symptoom: Wanneer een button is aangesloten op een Arduino UNO R4 invoerpin, is de toestand van de invoerpin onvoorspelbaar en weerspiegelt niet de button-toestand.
Oorzaak: De button-pin is niet aangesloten op een pull-down of pull-up weerstand.
Oplossing: Sluit een pull-down of pull-up weerstand aan op de invoerpin. Meer details worden later in deze tutorial gegeven.
Het chattering fenomeen:
Symptoom: De Arduino UNO R4 code leest de button-toestand en probeert drukgebeurtenissen te identificeren door veranderingen in toestand te detecteren (van HIGH naar LOW, of LOW naar HIGH). Wanneer de button echter slechts één keer wordt ingedrukt, kan de Arduino Uno R4 meerdere drukken detecteren.
Oorzaak: Mechanische eigenschappen zorgen ervoor dat de invoerpin-toestand snel schakelt tussen LOW en HIGH meerdere keren met slechts één druk.
Chattering beïnvloedt alleen toepassingen die een nauwkeurige telling van button-drukken vereisen. In andere toepassingen is het misschien geen probleem.
Of u kunt de volgende kits kopen:
Openbaarmaking: Sommige van de links in deze sectie zijn Amazon-affiliate links. We kunnen een commissie ontvangen voor aankopen die via deze links worden gedaan, zonder extra kosten voor u. We waarderen uw steun.
De push button, ook bekend als een tactile button of momentary switch, is een schakelaar die gesloten is wanneer u hem indrukt en vasthoudt, en opent wanneer u hem loslaat. Push buttons komen in verschillende typen, voornamelijk verdeeld in twee groepen:
Deze pinnen zijn intern paarsgewijs met elkaar verbonden, dus we hoeven slechts twee van de vier pinnen te gebruiken die intern niet met elkaar verbonden zijn.
Er zijn vier manieren, maar eigenlijk twee omdat ze vergelijkbaar zijn, om de button aan te sluiten (zie de afbeelding).
Een button heeft vier pinnen, maar waarom gebruiken we er slechts twee? ⇒ Dit is om het stabiel te houden op de PCB (printplaat) en de druk te weerstaan.
image source: diyables.io
GND: Sluit deze pin aan op aarde.
VCC: Sluit deze pin aan op een 5V of 3.3V voeding.
OUT: Sluit deze pin aan op een digitale ingang van uw Arduino.
Met deze configuratie geeft de module LOW uit wanneer de button niet wordt ingedrukt en HIGH wanneer de button wordt ingedrukt.
Wanneer de button niet wordt ingedrukt, zijn pin A en pin B niet verbonden.
Wanneer de button wordt ingedrukt, zijn pin A en pin B verbonden.
Eén button-pin sluit aan op VCC of GND, en de andere pin sluit aan op een pin van de Arduino UNO R4.
We kunnen bepalen of de button wordt ingedrukt of niet door de toestand te controleren van een pin op de Arduino UNO R4 die is ingesteld als invoerpin.
De relatie tussen de button-toestand en de indruk-toestand hangt af van hoe we de button aansluiten op de Arduino UNO R4 en de instellingen van de Arduino UNO R4 pin.
Er zijn twee manieren om een button te gebruiken met Arduino UNO R4:
Sluit één button-pin aan op VCC en de andere op een Arduino UNO R4 pin met een pull-down weerstand.
Wanneer de button wordt ingedrukt, is de Arduino UNO R4 pin-toestand HIGH. Anders is de Arduino UNO R4 pin-toestand LOW.
U MOET een externe weerstand gebruiken.
Sluit één button-pin aan op GND en de andere op een Arduino UNO R4 pin met een pull-up weerstand.
Wanneer de button wordt ingedrukt, is de Arduino UNO R4 pin-toestand LOW. Anders is de Arduino UNO R4 pin-toestand HIGH.
U kunt zowel een interne als externe weerstand gebruiken. De interne weerstand is ingebouwd in de Arduino UNO R4 en kan geactiveerd worden via Arduino code.
※ Notiz:
Als we geen pull-down of pull-up weerstand gebruiken, is de invoerpin "zwevend" wanneer de button niet wordt ingedrukt. Dit betekent dat de toestand van de pin onvoorspelbaar kan veranderen naar HIGH of LOW, wat onjuiste aflezingen veroorzaakt.
De slechtste praktijk: Stel de Arduino UNO R4 pin in als invoer met pinMode(BUTTON_PIN, INPUT) zonder pull-down of pull-up weerstand.
De beste praktijk: Stel de Arduino UNO R4 pin in met een interne pull-up weerstand met pinMode(BUTTON_PIN, INPUT_PULLUP). Dit vereist geen externe weerstand.
Om het gemakkelijk te maken voor beginners, gebruikt deze tutorial de eenvoudigste methode: het instellen van de Arduino UNO R4 pin als interne pull-up invoer zonder een externe weerstand nodig te hebben. Beginners hoeven zich geen zorgen te maken over het aansluiten van de pull-up of pull-down weerstand. Ze hoeven alleen de meegeleverde Arduino code te gebruiken.

This image is created using Fritzing. Click to enlarge image

This image is created using Fritzing. Click to enlarge image
Zie De beste manier om Arduino Uno R4 en andere componenten van stroom te voorzien.
pinMode(7, INPUT_PULLUP);
int button_state = digitalRead(BUTTON_PIN);
※ Notiz:
Er zijn twee veelvoorkomende gebruikssituaties:
De eerste: Wanneer de invoer HIGH is, voer een actie uit. Wanneer de invoer LOW is, voer de tegenovergestelde actie uit.
De tweede: Wanneer de invoer verandert van LOW naar HIGH (of HIGH naar LOW), voer een actie uit.
Gebaseerd op het doel, selecteren we één van deze opties. Bijvoorbeeld, bij het gebruiken van een button om een LED te besturen:
Als we de LED willen laten branden wanneer de button wordt ingedrukt en uitschakelen wanneer deze niet wordt ingedrukt, moeten we het eerste scenario kiezen.
Als we willen dat de LED schakelt tussen AAN en UIT elke keer dat de button wordt ingedrukt, moeten we voor het tweede scenario kiezen.
#define BUTTON_PIN 7
void setup() {
Serial.begin(9600);
pinMode(BUTTON_PIN, INPUT_PULLUP);
}
void loop() {
int button_state = digitalRead(BUTTON_PIN);
Serial.println(button_state);
delay(500);
}
Volg deze instructies stap voor stap:
Sluit de button aan op Arduino UNO R4 volgens het meegeleverde schema.
Sluit het Arduino Uno R4 board aan op uw computer met een USB-kabel.
Start de Arduino IDE op uw computer.
Selecteer het juiste Arduino Uno R4 board (bijv., Arduino Uno R4 WiFi) en COM-poort.
Kopieer de bovenstaande code en open het in de Arduino IDE
Klik op de Upload knop in Arduino IDE om de code naar uw Arduino UNO R4 te sturen.
1 betekent AAN, 0 betekent UIT.
De uitleg staat in het commentaargedeelte van de Arduino code hierboven.
Laten we de code veranderen om te herkennen wanneer buttons worden ingedrukt en losgelaten.
#define BUTTON_PIN 7
int button_state;
int prev_button_state = LOW;
void setup() {
Serial.begin(9600);
pinMode(BUTTON_PIN, INPUT_PULLUP);
}
void loop() {
button_state = digitalRead(BUTTON_PIN);
if (prev_button_state == HIGH && button_state == LOW)
Serial.println("The button is pressed");
else if (prev_button_state == LOW && button_state == HIGH)
Serial.println("The button is released");
prev_button_state = button_state;
}
Kopieer de bovenstaande code en plak het in Arduino IDE
Klik op de Upload knop in Arduino IDE om code naar Arduino UNO R4 te sturen.
Open de Serial Monitor.
Druk de button in en laat los.
Controleer het resultaat op de Serial Monitor.
The button is pressed
The button is released
※ Notiz:
Zelfs als u de button slechts één keer indrukt en loslaat, kan de Serial Monitor meerdere indruk- en loslaatgebeurtenissen weergeven. Dit gebruikelijke gedrag staat bekend als "chattering fenomeen". U kunt meer details vinden in de
Arduino UNO R4 - Button Debounce tutorial.
Als u de
button module gebruikt, stel de pin in op invoermodus met
pinMode(BUTTON_PIN, INPUT). In deze configuratie geeft de module
LOW uit wanneer de button niet wordt ingedrukt en
HIGH wanneer de button wordt ingedrukt.
We overwegen het maken van videotutorials. Als u videotutorials belangrijk vindt, abonneer u dan op ons YouTube-kanaal om ons te motiveren de video's te maken.