Simulacija upravljanja ogradom

Dependencies:   mbed Ograda

Committer:
mbuhin
Date:
Tue May 04 08:02:33 2021 +0000
Revision:
0:ff4410ed941d

        

Who changed what in which revision?

UserRevisionLine numberNew 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