Mihael Buhin
/
Konstrukcijski_Buhin
Upravljanje ogradom
main.cpp@0:ff4410ed941d, 2021-05-04 (annotated)
- Committer:
- mbuhin
- Date:
- Tue May 04 08:02:33 2021 +0000
- Revision:
- 0:ff4410ed941d
Who changed what in which revision?
User | Revision | Line number | New contents of line |
---|---|---|---|
mbuhin | 0:ff4410ed941d | 1 | #include "mbed.h" |
mbuhin | 0:ff4410ed941d | 2 | #include "Ograda.h" |
mbuhin | 0:ff4410ed941d | 3 | |
mbuhin | 0:ff4410ed941d | 4 | |
mbuhin | 0:ff4410ed941d | 5 | Ograda motor(D2,D3,D4,D5); |
mbuhin | 0:ff4410ed941d | 6 | InterruptIn endsw_close(D6, PullDown); |
mbuhin | 0:ff4410ed941d | 7 | InterruptIn endsw_open(D7, PullDown); |
mbuhin | 0:ff4410ed941d | 8 | InterruptIn signal_start(USER_BUTTON, PullDown); |
mbuhin | 0:ff4410ed941d | 9 | int pom=0; |
mbuhin | 0:ff4410ed941d | 10 | |
mbuhin | 0:ff4410ed941d | 11 | Serial pc(USBTX, USBRX); |
mbuhin | 0:ff4410ed941d | 12 | Timer debounce; |
mbuhin | 0:ff4410ed941d | 13 | |
mbuhin | 0:ff4410ed941d | 14 | void ispis() |
mbuhin | 0:ff4410ed941d | 15 | { |
mbuhin | 0:ff4410ed941d | 16 | pc.printf("Ograda je zatvorena = 1, Ograda nije zatvorena = 0: %d \n \r ", endsw_close.read()); |
mbuhin | 0:ff4410ed941d | 17 | pc.printf("Ograda je otvorena = 1, Ograda nije otvorena= 0: %d \n \n\r ", endsw_open.read()); |
mbuhin | 0:ff4410ed941d | 18 | } |
mbuhin | 0:ff4410ed941d | 19 | |
mbuhin | 0:ff4410ed941d | 20 | void ograda_stop() |
mbuhin | 0:ff4410ed941d | 21 | { |
mbuhin | 0:ff4410ed941d | 22 | debounce.start(); |
mbuhin | 0:ff4410ed941d | 23 | if (debounce.read_ms()>200) |
mbuhin | 0:ff4410ed941d | 24 | { |
mbuhin | 0:ff4410ed941d | 25 | motor.stop(); |
mbuhin | 0:ff4410ed941d | 26 | pc.printf("Zaustavaljanje ograde \n \r "); |
mbuhin | 0:ff4410ed941d | 27 | pom=1; //služi za povratak u glavnu funkciju |
mbuhin | 0:ff4410ed941d | 28 | ispis(); //ispis ulaza |
mbuhin | 0:ff4410ed941d | 29 | debounce.reset(); |
mbuhin | 0:ff4410ed941d | 30 | } |
mbuhin | 0:ff4410ed941d | 31 | } |
mbuhin | 0:ff4410ed941d | 32 | |
mbuhin | 0:ff4410ed941d | 33 | void ograda_otvori() // procedura otvaranja ograde - senzor pri otvaranju smeta |
mbuhin | 0:ff4410ed941d | 34 | { |
mbuhin | 0:ff4410ed941d | 35 | motor.start(1, 0.0); |
mbuhin | 0:ff4410ed941d | 36 | pc.printf("Otvaranje ograde \n \n \r "); |
mbuhin | 0:ff4410ed941d | 37 | ispis(); |
mbuhin | 0:ff4410ed941d | 38 | } |
mbuhin | 0:ff4410ed941d | 39 | |
mbuhin | 0:ff4410ed941d | 40 | |
mbuhin | 0:ff4410ed941d | 41 | void glavna() // funkcija provjere stanja ulaza koja se izvodi kod svakog novog događaja |
mbuhin | 0:ff4410ed941d | 42 | { |
mbuhin | 0:ff4410ed941d | 43 | if(endsw_close.read()==0 && endsw_open.read()==0) |
mbuhin | 0:ff4410ed941d | 44 | { |
mbuhin | 0:ff4410ed941d | 45 | pc.printf("Zatvaranje ograde za 10s \n \n \r "); |
mbuhin | 0:ff4410ed941d | 46 | wait(10); |
mbuhin | 0:ff4410ed941d | 47 | motor.start(0, 2.0); |
mbuhin | 0:ff4410ed941d | 48 | pc.printf("Zatvaranje ograde \n \n \r "); |
mbuhin | 0:ff4410ed941d | 49 | ispis(); |
mbuhin | 0:ff4410ed941d | 50 | } |
mbuhin | 0:ff4410ed941d | 51 | |
mbuhin | 0:ff4410ed941d | 52 | |
mbuhin | 0:ff4410ed941d | 53 | pom=0; |
mbuhin | 0:ff4410ed941d | 54 | signal_start.rise(NULL); //blokiranje signala iz daljinskog uptavljača ukoliko ograda nije zatvorena |
mbuhin | 0:ff4410ed941d | 55 | |
mbuhin | 0:ff4410ed941d | 56 | if(endsw_close.read()==0 && endsw_open.read()==1) |
mbuhin | 0:ff4410ed941d | 57 | { |
mbuhin | 0:ff4410ed941d | 58 | |
mbuhin | 0:ff4410ed941d | 59 | pc.printf("Zatvaranje ograde za 10s \n \n \r "); |
mbuhin | 0:ff4410ed941d | 60 | wait(10); |
mbuhin | 0:ff4410ed941d | 61 | motor.start(0, 2.0); |
mbuhin | 0:ff4410ed941d | 62 | pc.printf("Zatvaranje ograde \n \n \r "); |
mbuhin | 0:ff4410ed941d | 63 | ispis(); |
mbuhin | 0:ff4410ed941d | 64 | } |
mbuhin | 0:ff4410ed941d | 65 | |
mbuhin | 0:ff4410ed941d | 66 | |
mbuhin | 0:ff4410ed941d | 67 | if(endsw_close.read()==1) |
mbuhin | 0:ff4410ed941d | 68 | { |
mbuhin | 0:ff4410ed941d | 69 | signal_start.rise(&ograda_otvori); |
mbuhin | 0:ff4410ed941d | 70 | pc.printf("Pritisni start za otvaranje ograde \n\n \r "); |
mbuhin | 0:ff4410ed941d | 71 | ispis(); |
mbuhin | 0:ff4410ed941d | 72 | } |
mbuhin | 0:ff4410ed941d | 73 | } |
mbuhin | 0:ff4410ed941d | 74 | |
mbuhin | 0:ff4410ed941d | 75 | int main() |
mbuhin | 0:ff4410ed941d | 76 | { |
mbuhin | 0:ff4410ed941d | 77 | ispis(); |
mbuhin | 0:ff4410ed941d | 78 | signal_start.rise(NULL); // signal za otvaranje ograde nije potreban ukoliko ograda nije zatvorena |
mbuhin | 0:ff4410ed941d | 79 | endsw_close.rise(&ograda_stop); |
mbuhin | 0:ff4410ed941d | 80 | endsw_open.rise(&ograda_stop); //definiranje događaja prilikom rastućih bridova |
mbuhin | 0:ff4410ed941d | 81 | |
mbuhin | 0:ff4410ed941d | 82 | glavna(); |
mbuhin | 0:ff4410ed941d | 83 | |
mbuhin | 0:ff4410ed941d | 84 | while(1) { |
mbuhin | 0:ff4410ed941d | 85 | |
mbuhin | 0:ff4410ed941d | 86 | if(endsw_close.read()==1 && endsw_open.read()==1) // provjera jesu li prekidači u kratkom spoju |
mbuhin | 0:ff4410ed941d | 87 | |
mbuhin | 0:ff4410ed941d | 88 | { |
mbuhin | 0:ff4410ed941d | 89 | pc.printf("Krjanji prekidaci nisu ispravni \n\n \r "); |
mbuhin | 0:ff4410ed941d | 90 | ograda_stop(); |
mbuhin | 0:ff4410ed941d | 91 | break; |
mbuhin | 0:ff4410ed941d | 92 | } |
mbuhin | 0:ff4410ed941d | 93 | |
mbuhin | 0:ff4410ed941d | 94 | |
mbuhin | 0:ff4410ed941d | 95 | if(pom==1) |
mbuhin | 0:ff4410ed941d | 96 | { |
mbuhin | 0:ff4410ed941d | 97 | glavna(); |
mbuhin | 0:ff4410ed941d | 98 | } |
mbuhin | 0:ff4410ed941d | 99 | } |
mbuhin | 0:ff4410ed941d | 100 | } |
mbuhin | 0:ff4410ed941d | 101 |