TVZ, Spec Elo, Mikroupravljaci, Popunjenost garaze

Dependencies:   mbed SwitchLED TextLCD BluetoothSerial

Program prati koliko je auti trenutno u garaži pomoću IR senzora HW-201 (postavljeno na max. 7 auti) i ispisuje stanje na LDC display-u. U koliko ima slobodnih mjesta zelena LED blinka i ispisuje se broj slobodnih mjesta. Kad broj slobodnih mjesta dođe na 0, ispisuje se "Nema slobodnih mjesta i pali se crvena LED. Prilikom pritiska na user tipkalo B1 prekida se kod i ispisuje se "Pozar u garazi".

Committer:
iivankovic
Date:
Tue Feb 22 13:13:31 2022 +0000
Revision:
1:31557fa549a3
Parent:
0:6f4570a58585
TVZ, Spec Elo, Mikroupravljaci, Popunjenost garaze

Who changed what in which revision?

UserRevisionLine numberNew contents of line
iivankovic 0:6f4570a58585 1 #include "mbed.h"
iivankovic 0:6f4570a58585 2 #include "TextLCD.h"
iivankovic 0:6f4570a58585 3 #include "SwitchLED.h"
iivankovic 0:6f4570a58585 4 TextLCD lcd(D4, D5, D9, D10, D11, D12); //rs,e,d4,d5,d6,d7
iivankovic 0:6f4570a58585 5 // TextLCD lcd(D4, D5, D9, D10, D11, D12,TextLCD::LCD8x2);
iivankovic 0:6f4570a58585 6 DigitalIn SIG1(A0);
iivankovic 0:6f4570a58585 7 DigitalIn SIG2(A1);
iivankovic 0:6f4570a58585 8 Switch redled(D6);
iivankovic 0:6f4570a58585 9 DigitalOut LEDslobodno(D7);
iivankovic 0:6f4570a58585 10 InterruptIn button(USER_BUTTON);
iivankovic 0:6f4570a58585 11 Ticker Slobodno;
iivankovic 0:6f4570a58585 12 int n=7, i=7, j=0; // maksimalan kapacitet garaže, trenutan broj auti, sljedeći broj auti
iivankovic 0:6f4570a58585 13 int Counter(DigitalIn SIG1, DigitalIn SIG2,int n, int j);
iivankovic 0:6f4570a58585 14 void flip(){
iivankovic 0:6f4570a58585 15 LEDslobodno = !LEDslobodno;
iivankovic 0:6f4570a58585 16 }
iivankovic 0:6f4570a58585 17 void alarm(void);
iivankovic 0:6f4570a58585 18 int main()
iivankovic 0:6f4570a58585 19 {
iivankovic 0:6f4570a58585 20 LEDslobodno=0;
iivankovic 0:6f4570a58585 21 while(1) {
iivankovic 0:6f4570a58585 22 button.rise(&alarm);
iivankovic 0:6f4570a58585 23 if(SIG1 || SIG2) {
iivankovic 0:6f4570a58585 24 j=Counter(SIG1, SIG2, n, j);
iivankovic 0:6f4570a58585 25 if(j==n && i==(n-1)) { //nema slobodnih mjesta i pali R_LED
iivankovic 0:6f4570a58585 26 redled.SW();
iivankovic 0:6f4570a58585 27 }
iivankovic 0:6f4570a58585 28 if(j==n ) { //nema slobodnih mjesta i pali R_LED
iivankovic 0:6f4570a58585 29 Slobodno.detach();
iivankovic 0:6f4570a58585 30 LEDslobodno=0;
iivankovic 0:6f4570a58585 31 lcd.printf("Nema slobodnih mjesta");
iivankovic 0:6f4570a58585 32 }
iivankovic 0:6f4570a58585 33 if(i==n && j==(n-1)) { //Gasi R_LED kad ima slobodnih mjesta
iivankovic 0:6f4570a58585 34 redled.SW();
iivankovic 0:6f4570a58585 35 }
iivankovic 0:6f4570a58585 36 i=j;
iivankovic 0:6f4570a58585 37 if(i<n) {
iivankovic 0:6f4570a58585 38 Slobodno.attach(&flip,1);
iivankovic 0:6f4570a58585 39 lcd.printf("Slobodno: %d",n-i); //ima slobodnih mjesta, ispis na ekran i blinkanje G_LED
iivankovic 0:6f4570a58585 40 }
iivankovic 0:6f4570a58585 41 }
iivankovic 0:6f4570a58585 42 wait(2);
iivankovic 0:6f4570a58585 43 lcd.cls();
iivankovic 0:6f4570a58585 44 }
iivankovic 0:6f4570a58585 45 }
iivankovic 0:6f4570a58585 46 int Counter(DigitalIn SIG1, DigitalIn SIG2, int n, int j)
iivankovic 0:6f4570a58585 47 {
iivankovic 0:6f4570a58585 48
iivankovic 0:6f4570a58585 49 if(SIG1 && j>0 && SIG2==0) {
iivankovic 0:6f4570a58585 50 j--;
iivankovic 0:6f4570a58585 51 }
iivankovic 0:6f4570a58585 52 if(SIG2==1 && j<n && j!=n && SIG1==0) {
iivankovic 0:6f4570a58585 53 j++;
iivankovic 0:6f4570a58585 54 }
iivankovic 0:6f4570a58585 55 return j;
iivankovic 0:6f4570a58585 56 }
iivankovic 0:6f4570a58585 57 void alarm()
iivankovic 0:6f4570a58585 58 {
iivankovic 0:6f4570a58585 59 while(1) {
iivankovic 0:6f4570a58585 60 LEDslobodno=0;
iivankovic 0:6f4570a58585 61 lcd.cls();
iivankovic 0:6f4570a58585 62 lcd.printf("Pozar u garazi"); //Požar u garaži
iivankovic 0:6f4570a58585 63 wait(20);
iivankovic 0:6f4570a58585 64 break;
iivankovic 0:6f4570a58585 65 }
iivankovic 0:6f4570a58585 66
iivankovic 0:6f4570a58585 67 }