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
Diff: main.cpp
- Revision:
- 0:907d265d7286
diff -r 000000000000 -r 907d265d7286 main.cpp --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/main.cpp Thu Dec 02 21:07:40 2021 +0000 @@ -0,0 +1,56 @@ +#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(); +} \ No newline at end of file