![](/media/cache/group/default_image.jpg.50x50_q85.jpg)
U ovom radu implementiran je sustav za beskontaktno paljenje i gašenje LED-ice detekcijom dva uzastopna pljeska rukama. Za detekciju zvučnih signala koristi se mikrofon CZN-15E. Dva uzastopna pljeska prepoznata su mjerenjem vremena između dva hardverska prekida. U slučaju da izmjereno vrijeme odgovara eksperimentalno određenom intervalu, dolazi do paljenja ili gašenja svjetleće diode. U sustavu se također nalazi tipkalo pomoću kojeg se mijenja način svijetljenja diode. Pritiskom tipkala omogućuje se trepereći način rada, odnosno dioda se pali i gasi u određenom vremenskom periodu.
Dependencies: mbed LEDController
Korištene su komponente: ● svjetleća dioda, ● tipkalo, ● otpornik 470 Ω, ● zvučni senzorski modul s mikrofonom CZN-15E, ● NUCLEO-F072RB pločica mikroupravljača
main.cpp
- Committer:
- mpistelek
- Date:
- 2021-12-02
- Revision:
- 1:7e8ffea44423
- Parent:
- 0:907d265d7286
File content as of revision 1:7e8ffea44423:
#include "mbed.h" #include "LEDController.h" #define MINDIFFTIME 200 #define MAXDIFFTIME 350 Serial pc(USBTX, USBRX); // tx, rx InterruptIn mic(PB_3); InterruptIn button(PB_4); Timer debounce; Timer micTimer; int measuredTime; LEDController controller(PB_5, 0.25, false, true); void button_interrupt(); void mic_interrupt(); int main(){ pc.baud(9600); debounce.start(); button.rise(&button_interrupt); mic.rise(&mic_interrupt); while (true) { controller.checkOnOffState(); } } void mic_interrupt() { micTimer.stop(); measuredTime = micTimer.read_ms(); if(measuredTime > 50){ pc.printf("Mikrofon prekid! %d\n\r", measuredTime); if (measuredTime > MINDIFFTIME && measuredTime < MAXDIFFTIME) { pc.printf("Pali/gasi!\n\r"); controller.toggleShouldBeOn(); } } micTimer.reset(); micTimer.start(); } void button_interrupt(){ if(debounce.read_ms() > 200){ controller.toggleBlinkingMode(); pc.printf("Blinking mod: %s\n\r", controller.getBlinkingMode()?"true":"false"); } debounce.reset(); }