Potpuni demo
Što prikazuje ovaj primjer
Sva tri dijela pločice u jednoj skici: stanja tipki ispisana u Serial Monitor, sve LED diode mijenjaju boju svake dvije sekunde, a pri svakoj promjeni oglasi se kratki zvučni signal.
Kôd primjera
/**
**************************************************
*
* @file FullDemo.ino
* @brief Full demo for Soldered Button, LED & Buzzer Board
* Host: ESP32 WROVER-E
*
* - Prints button states to Serial (115200 baud)
* - Cycles all LEDs through colors every 2 seconds
* - Short beep on each color change
*
* @authors Fran Fodor @ soldered.com
***************************************************/
#include "ButtonLedBuzzerBoard-SOLDERED.h"
ButtonLedBuzzerBoard_Soldered board;
const uint8_t colors[][3] = {
{255, 0, 0}, // red
{ 0, 255, 0}, // green
{ 0, 0, 255}, // blue
{255, 255, 0}, // yellow
{ 0, 255, 255}, // cyan
{255, 0, 255}, // magenta
{255, 255, 255}, // white
{ 0, 0, 0}, // off
};
const uint8_t numColors = sizeof(colors) / sizeof(colors[0]);
uint8_t colorIdx = 0;
unsigned long lastColorChange = 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 - Full Demo");
board.setAllLEDs(0, 0, 0);
}
void loop()
{
Serial.print("BTN1:");
Serial.print(board.isButton1Pressed() ? "ON " : "off");
Serial.print(" BTN2:");
Serial.print(board.isButton2Pressed() ? "ON " : "off");
Serial.print(" BTN3:");
Serial.println(board.isButton3Pressed() ? "ON " : "off");
if (millis() - lastColorChange > 2000)
{
uint8_t r = colors[colorIdx][0];
uint8_t g = colors[colorIdx][1];
uint8_t b = colors[colorIdx][2];
board.setAllLEDs(r, g, b);
board.setBuzzer(2000);
delay(100);
board.setBuzzer(0);
colorIdx = (colorIdx + 1) % numColors;
lastColorChange = millis();
}
delay(100);
}
Ovaj primjer koristi i Wire, koji nije dio biblioteke Soldered-Button-LED-Buzzer-Board: dolazi uz paket vaše Arduino pločice. Wire.begin() priključuje se na I2C sabirnicu kao kontroler. Bez Qwiic konektora, komentar u skici pokazuje kako proslijediti vlastite I2C pinove, na primjer Wire.begin(21, 22) na ESP32 domaćinu za koji je primjer napisan.
Očekivani rezultat:
Otvorite Serial Monitor na 115200 baud. Nakon zaglavlja, redak statusa pojavljuje se otprilike svakih 0,1 s. Pritisnuta tipka prikazuje ON umjesto off, na primjer posljednji redak u nastavku prikazuje pritisnutu tipku BTN1.
Button, LED & Buzzer Board - Full Demo
BTN1:off BTN2:off BTN3:off
BTN1:off BTN2:off BTN3:off
BTN1:ON BTN2:off BTN3:off
Istodobno se svake 2 s sve tri LED diode zajedno mijenjaju kroz crvenu, zelenu, plavu, žutu, cijan, magentu, bijelu i isključeno, a zujalica pri svakoj promjeni svira ton od 2000 Hz u trajanju od 0,1 s.
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 na 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.
setAllLEDs(uint8_t r, uint8_t g, uint8_t b)returns voidPostavlja sve tri LED diode na istu boju i šalje je na pločicu. setAllLEDs(0, 0, 0) isključuje sve LED diode.
ReturnsNišta.
Parametri
| Tip | Naziv | Opis |
|---|---|---|
uint8_t | r | Svjetlina crvene, od 0 (isključeno) do 255 (puna). |
uint8_t | g | Svjetlina zelene, od 0 do 255. |
uint8_t | b | Svjetlina plave, od 0 do 255. |
isButton1Pressed()returns boolČita tipke i javlja je li BTN1 pritisnuta. Svaki poziv čita pločicu.
Returnstrue dok je BTN1 pritisnuta, inače false.
isButton2Pressed()returns boolČita tipke i javlja je li BTN2 pritisnuta. Svaki poziv čita pločicu.
Returnstrue dok je BTN2 pritisnuta, inače false.
isButton3Pressed()returns boolČita tipke i javlja je li BTN3 pritisnuta. Svaki poziv čita pločicu.
Returnstrue dok je BTN3 pritisnuta, inače false.
setBuzzer(uint16_t freq)returns voidŠalje frekvenciju tona u Hz pasivnoj zujalici. Primjeri prosljeđuju 0 za zaustavljanje tona.
ReturnsNišta.
Parametri
| Tip | Naziv | Opis |
|---|---|---|
uint16_t | freq | Frekvencija tona u Hz. Primjeri prosljeđuju 0 za zaustavljanje tona. |
Sastavljanje cjeline
Skica provjerava vrijeme pomoću millis() umjesto čekanja, pa se retci s tipkama nastavljaju ispisivati dok se boje mijenjaju. Boje se nalaze u tablici colors[] kao vrijednosti crvene, zelene i plave, a colorIdx se kreće po njoj. isButton1Pressed(), isButton2Pressed() i isButton3Pressed() svaka zasebno čita pločicu, jer svaka poziva readButtons() i zadržava jedan bit. Kada trebate sve tri tipke odjednom, jedan poziv readButtons(), kao na drugim stranicama, vraća sve tri tipke u jednom bajtu.