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

https://os.mbed.com/media/uploads/mpistelek/pistelek_shema1.jpg https://os.mbed.com/media/uploads/mpistelek/pistelek_shema2.jpg

Committer:
mpistelek
Date:
Thu Dec 02 21:07:40 2021 +0000
Revision:
0:907d265d7286
Pistelek_Gasenje-Paljenje_Svjetla_Pljeskanjem

Who changed what in which revision?

UserRevisionLine numberNew contents of line
mpistelek 0:907d265d7286 1 #include "mbed.h"
mpistelek 0:907d265d7286 2 #include "LEDController.h"
mpistelek 0:907d265d7286 3
mpistelek 0:907d265d7286 4 #define MINDIFFTIME 200
mpistelek 0:907d265d7286 5 #define MAXDIFFTIME 350
mpistelek 0:907d265d7286 6
mpistelek 0:907d265d7286 7 Serial pc(USBTX, USBRX); // tx, rx
mpistelek 0:907d265d7286 8 InterruptIn mic(PB_3);
mpistelek 0:907d265d7286 9 InterruptIn button(PB_4);
mpistelek 0:907d265d7286 10 Timer debounce;
mpistelek 0:907d265d7286 11 Timer micTimer;
mpistelek 0:907d265d7286 12
mpistelek 0:907d265d7286 13 int measuredTime;
mpistelek 0:907d265d7286 14
mpistelek 0:907d265d7286 15 LEDController controller(PB_5, 0.25, false, true);
mpistelek 0:907d265d7286 16
mpistelek 0:907d265d7286 17 void button_interrupt();
mpistelek 0:907d265d7286 18 void mic_interrupt();
mpistelek 0:907d265d7286 19
mpistelek 0:907d265d7286 20 int main(){
mpistelek 0:907d265d7286 21 pc.baud(9600);
mpistelek 0:907d265d7286 22
mpistelek 0:907d265d7286 23 debounce.start();
mpistelek 0:907d265d7286 24 button.rise(&button_interrupt);
mpistelek 0:907d265d7286 25 mic.rise(&mic_interrupt);
mpistelek 0:907d265d7286 26
mpistelek 0:907d265d7286 27 while (true) {
mpistelek 0:907d265d7286 28 controller.checkOnOffState();
mpistelek 0:907d265d7286 29 }
mpistelek 0:907d265d7286 30 }
mpistelek 0:907d265d7286 31
mpistelek 0:907d265d7286 32 void mic_interrupt() {
mpistelek 0:907d265d7286 33 micTimer.stop();
mpistelek 0:907d265d7286 34
mpistelek 0:907d265d7286 35 measuredTime = micTimer.read_ms();
mpistelek 0:907d265d7286 36
mpistelek 0:907d265d7286 37 if(measuredTime > 50){
mpistelek 0:907d265d7286 38 pc.printf("Mikrofon prekid! %d\n\r", measuredTime);
mpistelek 0:907d265d7286 39 if (measuredTime > MINDIFFTIME && measuredTime < MAXDIFFTIME) {
mpistelek 0:907d265d7286 40 pc.printf("Pali/gasi!\n\r");
mpistelek 0:907d265d7286 41 controller.toggleShouldBeOn();
mpistelek 0:907d265d7286 42 }
mpistelek 0:907d265d7286 43 }
mpistelek 0:907d265d7286 44
mpistelek 0:907d265d7286 45 micTimer.reset();
mpistelek 0:907d265d7286 46 micTimer.start();
mpistelek 0:907d265d7286 47 }
mpistelek 0:907d265d7286 48
mpistelek 0:907d265d7286 49 void button_interrupt(){
mpistelek 0:907d265d7286 50 if(debounce.read_ms() > 200){
mpistelek 0:907d265d7286 51 controller.toggleBlinkingMode();
mpistelek 0:907d265d7286 52 pc.printf("Blinking mod: %s\n\r", controller.getBlinkingMode()?"true":"false");
mpistelek 0:907d265d7286 53 }
mpistelek 0:907d265d7286 54
mpistelek 0:907d265d7286 55 debounce.reset();
mpistelek 0:907d265d7286 56 }