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

Committer:
tbogdan
Date:
Sun Aug 05 19:04:45 2018 +0000
Revision:
2:7897e64de2f3
Parent:
0:a30d2e391254
Child:
3:7d80fb2473cc
100% radi svjetla i sve

Who changed what in which revision?

UserRevisionLine numberNew contents of line
tbogdan 0:a30d2e391254 1 #include "mbed.h"
tbogdan 0:a30d2e391254 2 Serial pc(USBTX,USBRX);
tbogdan 0:a30d2e391254 3 BusOut semafor1(D7,D6,D5,D4,D3,D2);
tbogdan 0:a30d2e391254 4 BusOut semafor2(D12,D11,D10,D9,D8);
tbogdan 0:a30d2e391254 5 DigitalOut led5(D7);
tbogdan 0:a30d2e391254 6 Timer t;
tbogdan 0:a30d2e391254 7 Ticker pj;
tbogdan 0:a30d2e391254 8 InterruptIn button(PC_13);
tbogdan 0:a30d2e391254 9 InterruptIn echo(PB_15);
tbogdan 0:a30d2e391254 10 DigitalOut trigger(PB_13);
tbogdan 0:a30d2e391254 11 bool gotovo=false;
tbogdan 0:a30d2e391254 12 bool pritisnuto=false;
tbogdan 0:a30d2e391254 13 void startTimer()
tbogdan 0:a30d2e391254 14 {
tbogdan 0:a30d2e391254 15 t.start();
tbogdan 0:a30d2e391254 16 }
tbogdan 0:a30d2e391254 17
tbogdan 0:a30d2e391254 18 void stopTimer()
tbogdan 0:a30d2e391254 19 {
tbogdan 0:a30d2e391254 20 t.stop();
tbogdan 0:a30d2e391254 21 }
tbogdan 0:a30d2e391254 22
tbogdan 0:a30d2e391254 23 void gumb()
tbogdan 0:a30d2e391254 24 {
tbogdan 0:a30d2e391254 25 pritisnuto=true;
tbogdan 0:a30d2e391254 26 }
tbogdan 0:a30d2e391254 27
tbogdan 0:a30d2e391254 28 void pjesaci()
tbogdan 0:a30d2e391254 29 {
tbogdan 0:a30d2e391254 30 if(pritisnuto==true && gotovo==true) {
tbogdan 0:a30d2e391254 31 wait(2);
tbogdan 0:a30d2e391254 32 semafor1 = 0b001100;
tbogdan 2:7897e64de2f3 33 semafor2 = 0b10010; //Semafor 2 pali se crveno svijetlo za pješake
tbogdan 0:a30d2e391254 34 wait(5);
tbogdan 0:a30d2e391254 35 semafor1 = 0b010100; //Semafor 1 pali se žuto svjetlo za aute
tbogdan 0:a30d2e391254 36 semafor2 = 0b10010;
tbogdan 0:a30d2e391254 37 wait(5);
tbogdan 0:a30d2e391254 38 semafor1 = 0b100100; //Semafor 1 pali se crveno svjetlo za aute
tbogdan 0:a30d2e391254 39 semafor2 = 0b10010;
tbogdan 0:a30d2e391254 40 wait(1);
tbogdan 0:a30d2e391254 41 semafor1 = 0b100101; //Semafor 1 pali se strelica za skretanje u lijevo
tbogdan 0:a30d2e391254 42 semafor2 = 0b10010;
tbogdan 0:a30d2e391254 43 wait(5);
tbogdan 0:a30d2e391254 44 semafor1 = 0b100100; //Semafor 1 gasi se strelica za skretanje u lijevo
tbogdan 0:a30d2e391254 45 semafor2 = 0b10010;
tbogdan 0:a30d2e391254 46 wait(2);
tbogdan 0:a30d2e391254 47 semafor1 = 0b100100;
tbogdan 0:a30d2e391254 48 semafor2 = 0b11010; //Semafor 2 pali se žuto svjetlo za aute
tbogdan 0:a30d2e391254 49 wait(5);
tbogdan 0:a30d2e391254 50 semafor1 = 0b100010; //Semafor 1 pali se zeleno svjetlo za pješake
tbogdan 0:a30d2e391254 51 semafor2 = 0b00110; //Semafor 2 pali se zeleno svjetlo za aute
tbogdan 0:a30d2e391254 52 wait(10);
tbogdan 0:a30d2e391254 53 semafor1 = 0b100100; //Semafor 1 pali crveno svjetlo za pješake
tbogdan 0:a30d2e391254 54 semafor2 = 0b00110;
tbogdan 0:a30d2e391254 55 wait(5);
tbogdan 0:a30d2e391254 56 semafor1 = 0b100100;
tbogdan 0:a30d2e391254 57 semafor2 = 0b01010; //Semafor 2 pali se žuto svjetlo za aute
tbogdan 0:a30d2e391254 58 wait(5);
tbogdan 0:a30d2e391254 59 semafor1 = 0b100100;
tbogdan 0:a30d2e391254 60 semafor2 = 0b10010; //Semafor 2 pali se crveno svjetlo za aute
tbogdan 0:a30d2e391254 61 wait(5);
tbogdan 0:a30d2e391254 62 semafor1 = 0b110100; //Semafor 1 pali se žuto svjetlo za aute
tbogdan 0:a30d2e391254 63 semafor2 = 0b10010;
tbogdan 0:a30d2e391254 64 wait(5);
tbogdan 0:a30d2e391254 65 pritisnuto=false;
tbogdan 0:a30d2e391254 66 gotovo=false;
tbogdan 0:a30d2e391254 67 }
tbogdan 0:a30d2e391254 68 }
tbogdan 0:a30d2e391254 69 int main()
tbogdan 0:a30d2e391254 70 {
tbogdan 0:a30d2e391254 71 button.fall(&gumb);
tbogdan 0:a30d2e391254 72
tbogdan 0:a30d2e391254 73 echo.rise(&startTimer);
tbogdan 0:a30d2e391254 74 echo.fall(&stopTimer);
tbogdan 0:a30d2e391254 75
tbogdan 0:a30d2e391254 76 pj.attach(&pjesaci,1);
tbogdan 0:a30d2e391254 77
tbogdan 0:a30d2e391254 78 while(1) {
tbogdan 0:a30d2e391254 79 led5=1;
tbogdan 0:a30d2e391254 80 wait(1);
tbogdan 0:a30d2e391254 81 semafor1 = 0b001100; //Semafor 1 upaljeno zeleno za aute, a crveno za pješake
tbogdan 0:a30d2e391254 82 semafor2 = 0b10001; //Semafor 2 upaljeno crveno za aute, a zeleno za pješake
tbogdan 0:a30d2e391254 83 wait (5); // zeleno na glavnoj cesti
tbogdan 2:7897e64de2f3 84
tbogdan 0:a30d2e391254 85 trigger = 1;
tbogdan 0:a30d2e391254 86 wait_us(10);
tbogdan 0:a30d2e391254 87 trigger = 0;
tbogdan 0:a30d2e391254 88 wait(1);
tbogdan 0:a30d2e391254 89 float distance = t.read() * 1e6 / 58;
tbogdan 0:a30d2e391254 90 pc.printf("------ %f\n",distance);
tbogdan 0:a30d2e391254 91 t.reset();
tbogdan 0:a30d2e391254 92 if (distance >= 10 && distance <= 20) {
tbogdan 0:a30d2e391254 93 pritisnuto=true;
tbogdan 0:a30d2e391254 94 }
tbogdan 0:a30d2e391254 95 gotovo=true;
tbogdan 0:a30d2e391254 96
tbogdan 0:a30d2e391254 97 }
tbogdan 0:a30d2e391254 98 }