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".

main.cpp

Committer:
iivankovic
Date:
2022-02-22
Revision:
0:6f4570a58585

File content as of revision 0:6f4570a58585:

#include "mbed.h"
#include "TextLCD.h"
#include "SwitchLED.h"
TextLCD lcd(D4, D5, D9, D10, D11, D12); //rs,e,d4,d5,d6,d7
// TextLCD lcd(D4, D5, D9, D10, D11, D12,TextLCD::LCD8x2);
DigitalIn SIG1(A0);
DigitalIn SIG2(A1);
Switch redled(D6);
DigitalOut LEDslobodno(D7);
InterruptIn button(USER_BUTTON);
Ticker Slobodno;
int n=7, i=7, j=0;    // maksimalan kapacitet garaže, trenutan broj auti, sljedeći broj auti
int Counter(DigitalIn SIG1, DigitalIn SIG2,int n, int j);
void flip(){
    LEDslobodno = !LEDslobodno;
}
void alarm(void);
int main()
{
    LEDslobodno=0;
    while(1) {
        button.rise(&alarm);
        if(SIG1 || SIG2) {
            j=Counter(SIG1, SIG2, n, j);
            if(j==n && i==(n-1)) { //nema slobodnih mjesta i pali R_LED
                redled.SW();
            }
            if(j==n ) { //nema slobodnih mjesta i pali R_LED
                Slobodno.detach();
                LEDslobodno=0;
                lcd.printf("Nema slobodnih mjesta");
            }
            if(i==n && j==(n-1)) { //Gasi R_LED kad ima slobodnih mjesta
                redled.SW();
            }
            i=j;
            if(i<n) {
                Slobodno.attach(&flip,1);
                lcd.printf("Slobodno: %d",n-i); //ima slobodnih mjesta, ispis na ekran i blinkanje G_LED
            }
        }
        wait(2);
        lcd.cls();
    }
}
int Counter(DigitalIn SIG1, DigitalIn SIG2, int n, int j)
{

    if(SIG1 && j>0 && SIG2==0) {
        j--;
    }
    if(SIG2==1 && j<n && j!=n && SIG1==0) {
        j++;
    }
    return j;
}
void alarm()
{
    while(1) {
        LEDslobodno=0;
        lcd.cls();
        lcd.printf("Pozar u garazi"); //Požar u garaži
        wait(20);
        break;
    }

}