Na semaforu 1 koji se nalazi na „glavnoj“ cesti upaljeno je zeleno svjetlo za automobile te crveno za pješake. Na semaforu 2 koji se nalazi na „sporednoj“ cesti upaljeno je crveno svjetlo za automobile te zeleno za pješake. Zamišljeno je da je na „glavnoj“ cesti konstantno upaljeno zeleno svjetlo kako bi bio brži „protok“ vozila, a na „sporednoj“ cesti crveno svjetlo sve dok ne naiđe automobil ili pješak koji želi prijeći cestu.
Dependencies: mbed
main.cpp
- Committer:
- tbogdan
- Date:
- 2019-11-28
- Revision:
- 4:88f5dd4e476d
- Parent:
- 3:7d80fb2473cc
File content as of revision 4:88f5dd4e476d:
#include "mbed.h" BusOut semafor1(D7,D6,D5,D4,D3,D2); BusOut semafor2(D12,D11,D10,D9,D8); Timer t; Timer t_2; Ticker pj; InterruptIn button(D13); InterruptIn echo(PB_15); DigitalOut trigger(PB_13); InterruptIn echo_2(D14); DigitalOut trigger_2(D15); bool gotovo=false; bool pritisnuto=false; void startTimer() { t.start(); } void stopTimer() { t.stop(); } void startTimer_2() { t_2.start(); } void stopTimer_2() { t_2.stop(); } void gumb() { pritisnuto=true; } void pjesaci() { if(pritisnuto==true && gotovo==true) { semafor2 = 0b10010; //Semafor 2 pali se crveno svijetlo za pješake wait(1); semafor2 = 0b11010; //Semafor 2 pali se žuto svjetlo za aute wait(3); semafor1 = 0b100010; //Semafor 1 pali se zeleno svjetlo za pješake semafor2 = 0b00110; //Semafor 2 pali se zeleno svjetlo za aute wait(10); semafor1 = 0b100100; //Semafor 1 pali crveno svjetlo za pješake wait(3); semafor2 = 0b01010; //Semafor 2 pali se žuto svjetlo za aute wait(3); semafor2 = 0b10010; //Semafor 2 pali se crveno svjetlo za aute wait(3); semafor1 = 0b110100; //Semafor 1 pali se žuto svjetlo za aute wait(1); pritisnuto=false; gotovo=false; } } int main() { button.mode(PullUp); button.fall(&gumb); echo.rise(&startTimer); echo.fall(&stopTimer); echo_2.rise(&startTimer_2); echo_2.fall(&stopTimer_2); pj.attach(&pjesaci,0.5); while(1) { semafor1 = 0b001100; //Semafor 1 upaljeno zeleno za aute, a crveno za pješake semafor2 = 0b10001; //Semafor 2 upaljeno crveno za aute, a zeleno za pješake wait (15); semafor2 = 0b10010; //Semafor 2 pali se crveno svijetlo za pješake wait(3); semafor1 = 0b010100; //Semafor 1 pali se žuto svjetlo za aute wait(3); semafor1 = 0b100100; //Semafor 1 pali se crveno svjetlo za aute wait(3); semafor1 = 0b100101; //Semafor 1 pali se strelica za skretanje u lijevo wait(5); semafor1 = 0b100100; //Semafor 1 gasi se strelica za skretanje u lijevo trigger = 1; wait_us(10); trigger = 0; wait(1); float distance = t.read() * 1e6 / 58; t.reset(); if (distance <= 5) { pritisnuto=true; gotovo=true; } trigger_2 = 1; wait_us(10); trigger_2 = 0; wait(1); float distance_2 = t_2.read() * 1e6 / 58; t_2.reset(); if (distance_2 <= 5) { pritisnuto=true; gotovo=true; } if(pritisnuto==true) { gotovo=true; } semafor1 = 0b100100; //Semafor 1 pali se crveno svjetlo za aute služi da se pričeka još par sekundi da prođu auti koji skreću na strelicu. wait(1); semafor1 = 0b110100; wait(3); } }