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:
- 1:31557fa549a3
- Parent:
- 0:6f4570a58585
File content as of revision 1:31557fa549a3:
#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; } }