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!

Arduino UNO R4 button

※ Notiz:

Voordat we leren hoe de button te gebruiken met Arduino Uno R4, willen we twee veelvoorkomende fouten benadrukken die beginners vaak tegenkomen:

  1. 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.
    • Oplossing: Implementeer debounce. Meer details staan in de Arduino UNO R4 - Button - Debounce tutorial.

    Chattering beïnvloedt alleen toepassingen die een nauwkeurige telling van button-drukken vereisen. In andere toepassingen is het misschien geen probleem.

    Over de Button

    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:

    • Push buttons voor PCB-montage (kan gebruikt worden op een breadboard)
    • Push buttons voor montage op een paneel
    Arduino UNO R4 Push button

    Pinout

    De PCB-mount buttons hebben gewoonlijk vier pinnen.

    Button Pinout

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

    How To Use Button

    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.

    De paneel-mount buttons hebben gewoonlijk twee pinnen.

    two-pin push button Pinout
    image source: diyables.io

    De push button module bevat een ingebouwde pull-down weerstand, die ervoor zorgt dat de uitgang LOW blijft wanneer de button niet wordt ingedrukt. Het heeft drie pinnen:

    • 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.

    Hoe het Werkt

    • 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.
    How Button Works

    Arduino UNO R4 - Button

    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.

    Button-toestand en Indruk-toestand

    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:

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

    Bedradingsschema

    • Bedradingsschema voor Arduino UNO R4 en PCB-mount button
    Arduino UNO R4 Button Wiring Diagram

    This image is created using Fritzing. Click to enlarge image

    • Bedradingsschema voor Arduino UNO R4 en paneel-mount button
    Arduino UNO R4 two-pin push button Wiring Diagram

    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.

    Hoe te Programmeren voor Button

    • Stelt pin 7 op de Arduino UNO R4 in als interne pull-up invoer met de pinMode() functie.
    pinMode(7, INPUT_PULLUP);
    • Gebruikt de digitalRead() functie om de toestand van de Arduino UNO R4 pin te controleren.
    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.

    Arduino UNO R4 Code - Het lezen van de button-toestand

    #define BUTTON_PIN 7 // The Arduino UNO R4 pin connected to the button void setup() { // initialize serial communication at 9600 bits per second: Serial.begin(9600); // initialize the pushbutton pin as a pull-up input pinMode(BUTTON_PIN, INPUT_PULLUP); } void loop() { // read the state of the switch/button: int button_state = digitalRead(BUTTON_PIN); // print out the button's state Serial.println(button_state); delay(500); }

    Snelle Stappen

    Volg deze instructies stap voor stap:

    • Als dit uw eerste keer is met de Arduino UNO R4 WiFi/Minima, raadpleeg de tutorial over het instellen van de omgeving voor Arduino UNO R4 WiFi/Minima in de Arduino IDE.
    • 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.
    Arduino IDE - How to Upload Code
    • Open de Serial Monitor.
    • Druk de button meerdere keren in en laat los.
    • Controleer het resultaat op de Serial Monitor.
    COM6
    Send
    1 1 1 0 0 0 0 0 0 1 1 1
    Autoscroll Show timestamp
    Clear output
    9600 baud  
    Newline  

    1 betekent AAN, 0 betekent UIT.

    Code Uitleg

    De uitleg staat in het commentaargedeelte van de Arduino code hierboven.

    Arduino UNO R4 Code - Het detecteren van button indruk- en loslaatgebeurtenissen

    Laten we de code veranderen om te herkennen wanneer buttons worden ingedrukt en losgelaten.

    /* * Deze Arduino UNO R4 code is ontwikkeld door newbiely.nl * Deze Arduino UNO R4 code wordt zonder enige beperking aan het publiek beschikbaar gesteld. * Voor volledige instructies en schema's, bezoek: * https://newbiely.nl/tutorials/arduino-uno-r4/arduino-uno-r4-button */ #define BUTTON_PIN 7 // The Arduino UNO R4 pin connected to the button int button_state; // the current state of button int prev_button_state = LOW; // the previous state of button void setup() { // initialize serial communication at 9600 bits per second: Serial.begin(9600); // initialize the pushbutton pin as a pull-up input pinMode(BUTTON_PIN, INPUT_PULLUP); } void loop() { // read the state of the switch/button: 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"); // save the last state prev_button_state = button_state; }

    Snelle Stappen

    • 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.
    COM6
    Send
    The button is pressed The button is released
    Autoscroll Show timestamp
    Clear output
    9600 baud  
    Newline  

    ※ 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.
    • Om het proces te vereenvoudigen voor beginners die meerdere buttons gebruiken, hebben we een bibliotheek ontwikkeld genaamd ezButton. U kunt hier leren over de ezButton bibliotheek.
    • 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.

    Video Tutorial

    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.

    ※ ONZE BERICHTEN

    • U bent welkom om de link naar deze tutorial te delen. Gebruik onze inhoud echter niet op andere websites. We hebben veel moeite en tijd gestoken in het maken van de inhoud, respecteer alstublieft ons werk!