Program se sastoji od 6 LED od kojih 5 LED prikazuju stanje na semaforima (automobili i pješaci). U pozadini se nalazi 1 LED koja govori da se program izvršava ispravno. Buzzer signalizira siguran prolaz pješaka. Integrirano tipkalo služi za HW interrupt gdje se prekida izvodenje programa i pali se treptajuće žuto svjetlo. U radu se koristi pločica NUCLEO-F072RB.
Dependencies: mbed LED SeeedShieldBot BluetoothSerial buzzer
main.cpp
- Committer:
- djukicic
- Date:
- 2021-02-21
- Revision:
- 1:add66fe63d7c
- Parent:
- 0:d702e04aa0e3
File content as of revision 1:add66fe63d7c:
#include "mbed.h" #include "led.h" #include "buzzer.h" Beep buzzer(D7); LED led1(D4); // crvena auto LED led2(D3); // zuta LED led3(D2); // zelena auto LED led4(D6); // crvena pjesak LED led5(D5); // zelena pjesak LED led6(D8); // plava Ticker blu; InterruptIn button(USER_BUTTON); Timer automobil; Timer pjesak; Timer flipper; Timer zuta; Timer debounce; float hi=440.00; float lo=1; int b; float freq[28] = {hi,lo,hi,lo,hi,lo,hi,lo,hi,lo,hi,lo,hi,lo,hi,lo,hi,lo,hi,lo,hi,lo,hi,lo,hi,lo,hi,lo}; float fast_tempo[28] = {4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4}; float slow_tempo[28] = {1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1}; //Funkcija hardverskog interrupta void flip() { if(debounce.read_ms()>200) { automobil.stop(); pjesak.stop(); led1.status(0); led3.status(0); led4.status(0); led5.status(0); int i; for(i=0; i<20; i++) { led2.flip(); wait(0.5); } } if(automobil.read()>15 && pjesak.read_ms()>200) { led1.status(1); led2.status(0); led3.status(0); led4.status(0); led5.status(1); } automobil.start(); pjesak.start(); debounce.reset(); } void blu1() { led6.flip(); } int main() { pjesak.reset(); automobil.reset(); debounce.start(); button.rise(&flip); blu.attach(&blu1,0.1); while(1) { //Početno stanje LED-ica led1.status(0); led2.status(0); led3.status(1); led4.status(1); led5.status(0); buzzer.beep(freq[b], slow_tempo[b]); b++; automobil.start(); //Nakon 13 sekundi upali žuto svjetlo za automobile i gasi se zeleno if (automobil.read() > 13) { led3.flip(); led2.flip(); } wait(1/slow_tempo[b]); //Nakon 15 sekundi upali crveno za automobile i zeleno za pješake if(automobil.read()>15) { automobil.stop(); led1.flip(); led2.flip(); led4.flip(); led5.flip(); pjesak.reset(); pjesak.start(); while(pjesak.read()<8) { if (pjesak.read() > 6) led2.flip(); for(b=0; b<8; b++) { buzzer.beep(freq[b], fast_tempo[b]); wait(1/fast_tempo[b]); } } automobil.reset(); pjesak.stop(); b=0; } } return 0; }