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

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