Skip to main content

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​

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

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

Stvara 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

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.

setAllLEDs(uint8_t r, uint8_t g, uint8_t b)returns void

Postavlja 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

TipNazivOpis
uint8_trSvjetlina crvene, od 0 (isključeno) do 255 (puna).
uint8_tgSvjetlina zelene, od 0 do 255.
uint8_tbSvjetlina 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

TipNazivOpis
uint16_tfreqFrekvencija 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.