Čitanje tipki
Što prikazuje ovaj primjer
Čitanje triju tipkala i reakcija samo kada se neko od njih promijeni. Buttons.ino ispisuje redak u Serial Monitor svaki put kada se tipka pritisne ili otpusti.
Kod primjera
/**
**************************************************
*
* @file Buttons.ino
* @brief Button test for Soldered Button, LED & Buzzer Board
* Host: ESP32 WROVER-E
*
* Prints button states to Serial Monitor (115200 baud).
* Shows press and release events.
*
* @authors Fran Fodor @ soldered.com
***************************************************/
#include "ButtonLedBuzzerBoard-SOLDERED.h"
ButtonLedBuzzerBoard_Soldered board;
uint8_t lastButtons = 0;
void setup()
{
Serial.begin(115200);
Wire.begin(); // if not using Qwiic, specify I2C pins: Wire.begin(21, 22)
board.begin();
delay(2000);
Serial.println("Button, LED & Buzzer Board - Button Test");
Serial.println("Press any button...");
}
void loop()
{
uint8_t buttons = board.readButtons();
if (buttons != lastButtons)
{
for (uint8_t i = 0; i < 3; i++)
{
uint8_t mask = 1 << i;
if ((buttons & mask) && !(lastButtons & mask))
{
Serial.print("BTN"); Serial.print(i + 1); Serial.println(" pressed");
}
else if (!(buttons & mask) && (lastButtons & mask))
{
Serial.print("BTN"); Serial.print(i + 1); Serial.println(" released");
}
}
lastButtons = buttons;
}
delay(20);
}
Ovaj primjer koristi i Wire, koji nije dio biblioteke Soldered-Button-LED-Buzzer-Board: dolazi uz paket vaše Arduino pločice. Wire.begin() pridružuje I2C sabirnicu kao kontroler. Bez Qwiic konektora, komentar u skici pokazuje kako proslijediti vlastite I2C pinove, na primjer Wire.begin(21, 22) na ESP32 hostu za koji je primjer napisan.
Očekivani rezultat:
Otvorite Serial Monitor na 115200 baud. Nakon otprilike dvije sekunde skica ispisuje svoje zaglavlje. Pritisak i otpuštanje tipke BTN1 zatim dodaje posljednja dva retka; ostale tipke ispisuju BTN2 i BTN3 na isti način.
Button, LED & Buzzer Board - Button Test
Press any button...
BTN1 pressed
BTN1 released
Korištene funkcije
ButtonLedBuzzerBoard_Soldered(uint8_t address = BLB_DEFAULT_ADDRESS)returns NoneStvara objekt pločice i pamti njezinu I2C adresu. Sve tri LED diode u početku su isključene u međuspremniku boja biblioteke. Primjer koristi zadanu adresu, 0x30, koju pločica ima kada su sva tri preklopnika adrese u položaju OFF.
ReturnsKonstruktor; nema povratne vrijednosti.
Parametri
| Tip | Naziv | Opis |
|---|---|---|
uint8_t | address | I2C adresa pločice, od 0x30 do 0x37, prema postavci preklopnika adrese. Zadano je BLB_DEFAULT_ADDRESS (0x30). |
begin()returns voidPokreće I2C sabirnicu pozivom Wire.begin(). Pozovite je jednom u setup(), prije bilo koje druge funkcije.
ReturnsNišta.
readButtons()returns uint8_tČita registar tipki pločice i vraća stanje sve tri tipke u jednom bajtu. Bit 0 je BTN1, bit 1 je BTN2, a bit 2 je BTN3; bit je 1 dok je njegova tipka pritisnuta. Ako pločica ne odgovori, funkcija vraća 0, što izgleda isto kao da nijedna tipka nije pritisnuta.
ReturnsBitovi tipki: 0x01 za BTN1, 0x02 za BTN2, 0x04 za BTN3, kombinirani kada je pritisnuto više njih.
Sve zajedno
readButtons() vraća sve tri tipke kao bitove jednog bajta, pa skica u svakom prolasku petlje jednom očita pločicu i usporedi rezultat s prethodnim (lastButtons). Bit koji se uključio je pritisak, a bit koji se isključio je otpuštanje, a petlja se ponavlja svakih 20 ms. Tipke bez promjene ne ispisuju ništa, pa držanje tipke ispisuje pressed samo jednom.