TVZ2019 / Mbed 2 deprecated Semafor_upravljan_mikrokontrolerom

Dependencies:   mbed

Committer:
tbogdan
Date:
Sat Aug 04 20:00:13 2018 +0000
Revision:
0:a30d2e391254
Child:
1:d78d84688e89
Child:
2:7897e64de2f3
Ultrazvucni i tipka rade.

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 led5=1;
tbogdan 0:a30d2e391254 32 wait(2);
tbogdan 0:a30d2e391254 33 semafor1 = 0b001100;
tbogdan 0:a30d2e391254 34 semafor2 = 0b10001; //Semafor 2 pali se crveno svijetlo za pješake
tbogdan 0:a30d2e391254 35 wait(5);
tbogdan 0:a30d2e391254 36 semafor1 = 0b010100; //Semafor 1 pali se žuto svjetlo za aute
tbogdan 0:a30d2e391254 37 semafor2 = 0b10010;
tbogdan 0:a30d2e391254 38 wait(5);
tbogdan 0:a30d2e391254 39 semafor1 = 0b100100; //Semafor 1 pali se crveno svjetlo za aute
tbogdan 0:a30d2e391254 40 semafor2 = 0b10010;
tbogdan 0:a30d2e391254 41 wait(1);
tbogdan 0:a30d2e391254 42 semafor1 = 0b100101; //Semafor 1 pali se strelica za skretanje u lijevo
tbogdan 0:a30d2e391254 43 semafor2 = 0b10010;
tbogdan 0:a30d2e391254 44 wait(5);
tbogdan 0:a30d2e391254 45 semafor1 = 0b100100; //Semafor 1 gasi se strelica za skretanje u lijevo
tbogdan 0:a30d2e391254 46 semafor2 = 0b10010;
tbogdan 0:a30d2e391254 47 wait(2);
tbogdan 0:a30d2e391254 48 semafor1 = 0b100100;
tbogdan 0:a30d2e391254 49 semafor2 = 0b11010; //Semafor 2 pali se žuto svjetlo za aute
tbogdan 0:a30d2e391254 50 wait(5);
tbogdan 0:a30d2e391254 51 semafor1 = 0b100010; //Semafor 1 pali se zeleno svjetlo za pješake
tbogdan 0:a30d2e391254 52 semafor2 = 0b00110; //Semafor 2 pali se zeleno svjetlo za aute
tbogdan 0:a30d2e391254 53 wait(10);
tbogdan 0:a30d2e391254 54 semafor1 = 0b100100; //Semafor 1 pali crveno svjetlo za pješake
tbogdan 0:a30d2e391254 55 semafor2 = 0b00110;
tbogdan 0:a30d2e391254 56 wait(5);
tbogdan 0:a30d2e391254 57 semafor1 = 0b100100;
tbogdan 0:a30d2e391254 58 semafor2 = 0b01010; //Semafor 2 pali se žuto svjetlo za aute
tbogdan 0:a30d2e391254 59 wait(5);
tbogdan 0:a30d2e391254 60 semafor1 = 0b100100;
tbogdan 0:a30d2e391254 61 semafor2 = 0b10010; //Semafor 2 pali se crveno svjetlo za aute
tbogdan 0:a30d2e391254 62 wait(5);
tbogdan 0:a30d2e391254 63 semafor1 = 0b110100; //Semafor 1 pali se žuto svjetlo za aute
tbogdan 0:a30d2e391254 64 semafor2 = 0b10010;
tbogdan 0:a30d2e391254 65 wait(5);
tbogdan 0:a30d2e391254 66 pritisnuto=false;
tbogdan 0:a30d2e391254 67 gotovo=false;
tbogdan 0:a30d2e391254 68 }
tbogdan 0:a30d2e391254 69 }
tbogdan 0:a30d2e391254 70 int main()
tbogdan 0:a30d2e391254 71 {
tbogdan 0:a30d2e391254 72 button.fall(&gumb);
tbogdan 0:a30d2e391254 73
tbogdan 0:a30d2e391254 74 echo.rise(&startTimer);
tbogdan 0:a30d2e391254 75 echo.fall(&stopTimer);
tbogdan 0:a30d2e391254 76
tbogdan 0:a30d2e391254 77 pj.attach(&pjesaci,1);
tbogdan 0:a30d2e391254 78
tbogdan 0:a30d2e391254 79 while(1) {
tbogdan 0:a30d2e391254 80 led5=1;
tbogdan 0:a30d2e391254 81 wait(1);
tbogdan 0:a30d2e391254 82 semafor1 = 0b001100; //Semafor 1 upaljeno zeleno za aute, a crveno za pješake
tbogdan 0:a30d2e391254 83 semafor2 = 0b10001; //Semafor 2 upaljeno crveno za aute, a zeleno za pješake
tbogdan 0:a30d2e391254 84 wait (5); // zeleno na glavnoj cesti
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 }