semafor za pješake

Dependencies:   zvucnik_lib

Committer:
dgrobensk
Date:
Thu Dec 09 12:54:21 2021 +0000
Revision:
0:db6faf8aaada
konstrukcijski zadatak

Who changed what in which revision?

UserRevisionLine numberNew contents of line
dgrobensk 0:db6faf8aaada 1 //Kosntrukcijski_Grobenski_Semafor
dgrobensk 0:db6faf8aaada 2
dgrobensk 0:db6faf8aaada 3 #include "mbed.h"
dgrobensk 0:db6faf8aaada 4 #include "buzzer.h"
dgrobensk 0:db6faf8aaada 5
dgrobensk 0:db6faf8aaada 6 DigitalOut redled(A0); //pin A0 digitalni izlaz
dgrobensk 0:db6faf8aaada 7 DigitalOut yellowled(A1); //pin A1 digitalni izlaz
dgrobensk 0:db6faf8aaada 8 DigitalOut greenled(A2); //pin A2 digitalni izlaz
dgrobensk 0:db6faf8aaada 9 DigitalOut LED(LED2); //digitalni izlaz
dgrobensk 0:db6faf8aaada 10 Beep buzzer(D7); //pin D7 za buzzer
dgrobensk 0:db6faf8aaada 11
dgrobensk 0:db6faf8aaada 12 float vrijeme = 1; //vrijeme
dgrobensk 0:db6faf8aaada 13 float fr1 = 850; //varijabla frekvencija zvuka 1
dgrobensk 0:db6faf8aaada 14 float fr2 = 350; //varijabla frekvencija zvuka 2
dgrobensk 0:db6faf8aaada 15
dgrobensk 0:db6faf8aaada 16 InterruptIn gumb(USER_BUTTON);
dgrobensk 0:db6faf8aaada 17
dgrobensk 0:db6faf8aaada 18 Ticker flipper;
dgrobensk 0:db6faf8aaada 19 Timer debounce;
dgrobensk 0:db6faf8aaada 20
dgrobensk 0:db6faf8aaada 21
dgrobensk 0:db6faf8aaada 22 void svjetljenje(void);
dgrobensk 0:db6faf8aaada 23 void toggle(void);
dgrobensk 0:db6faf8aaada 24
dgrobensk 0:db6faf8aaada 25 int main()
dgrobensk 0:db6faf8aaada 26 {
dgrobensk 0:db6faf8aaada 27 while (1) {
dgrobensk 0:db6faf8aaada 28
dgrobensk 0:db6faf8aaada 29 redled = 1;
dgrobensk 0:db6faf8aaada 30 flipper.attach(&svjetljenje,0.5);
dgrobensk 0:db6faf8aaada 31 debounce.start();
dgrobensk 0:db6faf8aaada 32 gumb.rise(&toggle);
dgrobensk 0:db6faf8aaada 33
dgrobensk 0:db6faf8aaada 34 if(LED==1) {
dgrobensk 0:db6faf8aaada 35
dgrobensk 0:db6faf8aaada 36 redled = 1;
dgrobensk 0:db6faf8aaada 37 greenled = 0;
dgrobensk 0:db6faf8aaada 38 if(redled=1) {
dgrobensk 0:db6faf8aaada 39 for (int i=0; i<=3; i++) {
dgrobensk 0:db6faf8aaada 40 buzzer.beep(fr1,vrijeme); //buzzer određen frekvencijom freq1 i vremenom
dgrobensk 0:db6faf8aaada 41 wait(vrijeme);
dgrobensk 0:db6faf8aaada 42 }
dgrobensk 0:db6faf8aaada 43 }
dgrobensk 0:db6faf8aaada 44
dgrobensk 0:db6faf8aaada 45 wait(vrijeme);
dgrobensk 0:db6faf8aaada 46
dgrobensk 0:db6faf8aaada 47 redled = 0;
dgrobensk 0:db6faf8aaada 48 greenled = 1;
dgrobensk 0:db6faf8aaada 49
dgrobensk 0:db6faf8aaada 50 if(greenled=1) {
dgrobensk 0:db6faf8aaada 51 for (int i=0; i<=3; i++) {
dgrobensk 0:db6faf8aaada 52 buzzer.beep(fr2,vrijeme); //buzzer određen frekvencijom freq1 i vremenom
dgrobensk 0:db6faf8aaada 53 wait(vrijeme);
dgrobensk 0:db6faf8aaada 54 }
dgrobensk 0:db6faf8aaada 55 }
dgrobensk 0:db6faf8aaada 56
dgrobensk 0:db6faf8aaada 57 } else {
dgrobensk 0:db6faf8aaada 58 greenled=0;
dgrobensk 0:db6faf8aaada 59 redled=1;
dgrobensk 0:db6faf8aaada 60 }
dgrobensk 0:db6faf8aaada 61
dgrobensk 0:db6faf8aaada 62 }
dgrobensk 0:db6faf8aaada 63
dgrobensk 0:db6faf8aaada 64 }
dgrobensk 0:db6faf8aaada 65 void svjetljenje(void) //titranje zute ledice
dgrobensk 0:db6faf8aaada 66 {
dgrobensk 0:db6faf8aaada 67 yellowled=!yellowled;
dgrobensk 0:db6faf8aaada 68 }
dgrobensk 0:db6faf8aaada 69
dgrobensk 0:db6faf8aaada 70 void toggle() //za debounce i mijenjanje stanja integrirane ledice
dgrobensk 0:db6faf8aaada 71 {
dgrobensk 0:db6faf8aaada 72 if (debounce.read_ms()>200)
dgrobensk 0:db6faf8aaada 73 LED=!LED;
dgrobensk 0:db6faf8aaada 74 greenled=0;
dgrobensk 0:db6faf8aaada 75 debounce.reset();
dgrobensk 0:db6faf8aaada 76 }