Skip to main content

Č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​

Select Board
Buttons.ino
/**
**************************************************
*
* @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.

Serial MonitorAutoscrollShow timestampNewline115200 baud
Message (Enter to send message to the board)
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 None

Stvara 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

TipNazivOpis
uint8_taddressI2C adresa pločice, od 0x30 do 0x37, prema postavci preklopnika adrese. Zadano je BLB_DEFAULT_ADDRESS (0x30).
begin()returns void

Pokreć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.