Funkcioniranje semafora za automobile i pjesake, sa tipkalom i buzzerom.

Dependencies:   mbed buzzer

https://os.mbed.com/media/uploads/matej2/slika_sheme.png

Korištene komponente su: • 5 x LED-ica • 1 x tipkalo • 1x Piezzo buzzer • 1x NUCLEO-F072RB pločica mikroupravljača

Rad se sastoji od LED-ice sa desne strane (crvena, žuta i zelena) koje prikazuju glavni semafor tj. semafor za aute, dok LED-ice sa lijeve strane (crvena i žuta) predstavljaju sporedni semafor, tj. semafor za pješake. Na samom početku svijetli crvena LED-ica i za pješaka i za vozače te potom svijetli crvena i žuta za vozače, a ostaje crvena pješacima te na kraju svijetli zelena autima te crvena i dalje pješacima. Ovaj ciklus se ponavlja sve dok se ne pojavi pješak i stisne tipkalo koje služi kao interupt te se u tom trenutku odvije ciklus za semafor do kraja, ukoliko je bilo crveno bude crveno i žuto pa zeleno, te potom ostaje crveno za automobile, a pali se zeleno za pješake nakon čega se ponovno pješacima pali crveno i ostaje crveno dok netko ponovno ne stisne tipkalo. Tipkalo je spojeno na pin povezan sa pull up otpornikom na mikroupravljaču što znači da je na tom pinu cijelo vrijeme prisutan signal zbog prolaska struje sve dok se ne stisne tipkalo; u trenutku kada se stisne tipkalo dolazi do kratkog spoja te je pin spojen na GND i time dajemo signal mikroupravljaču da je tipkalo stisnuto i počinje završavanje ciklusa semafora za automobile te se poziva ciklus semafora za pješaka. Dokle god nije upaljeno zeleno svjetlo pješacima, buzzer proizvodi jedan zvuk dok u trenutku paljenja zelenog svjetla pješacima buzzer proizvodi drugačiji zvuk čime je omogućeno korištenje semafora i za slijepe osobe.

Files at this revision

API Documentation at this revision

Comitter:
matej2
Date:
Wed Jul 07 17:30:40 2021 +0000
Commit message:
inicijalni commit

Changed in this revision

buzzer.lib Show annotated file Show diff for this revision Revisions of this file
main.cpp Show annotated file Show diff for this revision Revisions of this file
mbed.bld Show annotated file Show diff for this revision Revisions of this file
diff -r 000000000000 -r e03b8f02a649 buzzer.lib
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/buzzer.lib	Wed Jul 07 17:30:40 2021 +0000
@@ -0,0 +1,1 @@
+https://os.mbed.com/users/Reniboy/code/buzzer/#622b1d533a1c
diff -r 000000000000 -r e03b8f02a649 main.cpp
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/main.cpp	Wed Jul 07 17:30:40 2021 +0000
@@ -0,0 +1,65 @@
+#include "mbed.h"
+#include "buzzer.h"
+
+InterruptIn pjesakTipka(D6, PullUp);
+DigitalOut aCrveno(A0);
+DigitalOut aZuto(A1);
+DigitalOut aZeleno(A2);
+DigitalOut pCrveno(A4);
+DigitalOut pZeleno(A5);
+Beep buzzer(D2);  
+Ticker ticker;
+
+bool pjesakTipkalo = false;  
+                                
+void kliknutoTipkalo() {  
+    pjesakTipkalo = true;
+}
+
+void sound() {
+    if(pZeleno == 1) {
+        buzzer.beep(400, 0.5);
+    } else {
+        buzzer.beep(200, 0.5);
+    }
+}
+
+void glavniSemafor() {
+    pCrveno = 1;
+    aCrveno = 1;
+    wait(5);
+    aCrveno = 1;
+    aZuto = 1;
+    wait(2);
+    aZuto = 0;
+    aCrveno = 0;
+    aZeleno = 1;
+    wait(5);
+    aZeleno = 0;
+    aCrveno = 1;
+}
+
+void sporedniSemafor() {
+    pCrveno = 1;
+    wait(5);
+    pCrveno = 0;
+    pZeleno = 1;
+    wait(5);
+    pZeleno = 0;
+    pCrveno = 1;
+    pjesakTipkalo = false;
+}
+        
+int main() {
+    
+    ticker.attach(&sound, 1.0);  
+    pjesakTipka.fall(&kliknutoTipkalo);  
+    
+    while(true) {
+        if(!pjesakTipkalo) {  
+            glavniSemafor(); 
+        } else {
+            sporedniSemafor();
+        }
+    }
+}
\ No newline at end of file
diff -r 000000000000 -r e03b8f02a649 mbed.bld
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/mbed.bld	Wed Jul 07 17:30:40 2021 +0000
@@ -0,0 +1,1 @@
+https://os.mbed.com/users/mbed_official/code/mbed/builds/65be27845400
\ No newline at end of file