Important changes to repositories hosted on mbed.com
Mbed hosted mercurial repositories are deprecated and are due to be permanently deleted in July 2026.
To keep a copy of this software download the repository Zip archive or clone locally using Mercurial.
It is also possible to export all your personal repositories from the account settings page.
Dependencies: mbed-dev mbed-rtos
Slagboom.cpp@1:f29c0aa25711, 2016-01-14 (annotated)
- Committer:
- jeroenvz
- Date:
- Thu Jan 14 18:56:40 2016 +0000
- Revision:
- 1:f29c0aa25711
- Parent:
- 0:87617851c15a
Definitive
Who changed what in which revision?
| User | Revision | Line number | New contents of line |
|---|---|---|---|
| jeroenvz | 0:87617851c15a | 1 | #include "Slagboom.h" |
| jeroenvz | 0:87617851c15a | 2 | |
| jeroenvz | 0:87617851c15a | 3 | Slagboom::Slagboom(bool geopend, PinName ophalen, PinName sluiten): _thread2(&Slagboom::threadStarter, this, osPriorityNormal,1024){ |
| jeroenvz | 0:87617851c15a | 4 | mBoom_Open = geopend; |
| jeroenvz | 0:87617851c15a | 5 | mBoom_Gesloten = !mBoom_Open; //Initiele status wordt meegegeven in de constructor |
| jeroenvz | 0:87617851c15a | 6 | mOphalen = new DigitalOut(ophalen); |
| jeroenvz | 0:87617851c15a | 7 | mSluiten = new DigitalOut(sluiten); |
| jeroenvz | 0:87617851c15a | 8 | *mOphalen = false; //Standaard niets doen |
| jeroenvz | 0:87617851c15a | 9 | *mSluiten = false; |
| jeroenvz | 0:87617851c15a | 10 | verkeer1 = new Stoplicht(D14, D15); |
| jeroenvz | 0:87617851c15a | 11 | _thread2.signal_set(0x1); |
| jeroenvz | 0:87617851c15a | 12 | } |
| jeroenvz | 0:87617851c15a | 13 | void Slagboom::stoplichtRood(){ |
| jeroenvz | 0:87617851c15a | 14 | verkeer1->set_Rood(); |
| jeroenvz | 0:87617851c15a | 15 | } |
| jeroenvz | 0:87617851c15a | 16 | |
| jeroenvz | 0:87617851c15a | 17 | void Slagboom::boom_Ophalen(bool nood) { //Functie om boom op te halen |
| jeroenvz | 0:87617851c15a | 18 | pc.printf("BOOM OPHALEN\n\r"); |
| jeroenvz | 0:87617851c15a | 19 | *mOphalen = true; |
| jeroenvz | 0:87617851c15a | 20 | *mSluiten = false; |
| jeroenvz | 0:87617851c15a | 21 | mBoom_Gesloten = false; |
| jeroenvz | 0:87617851c15a | 22 | float temp = 0; |
| jeroenvz | 0:87617851c15a | 23 | for(float i=0;i<5;i+=0.2){ |
| jeroenvz | 0:87617851c15a | 24 | if(State == "noodstop" && nood == true){ |
| jeroenvz | 0:87617851c15a | 25 | break; |
| jeroenvz | 0:87617851c15a | 26 | } |
| jeroenvz | 0:87617851c15a | 27 | wait(0.2); |
| jeroenvz | 0:87617851c15a | 28 | temp += 0.2; |
| jeroenvz | 0:87617851c15a | 29 | } |
| jeroenvz | 0:87617851c15a | 30 | *mOphalen = false; |
| jeroenvz | 0:87617851c15a | 31 | if(temp >= 4.9){ |
| jeroenvz | 0:87617851c15a | 32 | mBoom_Open = true; |
| jeroenvz | 0:87617851c15a | 33 | pc.printf("BOOM OPGEHAALD\n\r"); |
| jeroenvz | 0:87617851c15a | 34 | } |
| jeroenvz | 0:87617851c15a | 35 | } |
| jeroenvz | 0:87617851c15a | 36 | |
| jeroenvz | 0:87617851c15a | 37 | void Slagboom::boom_LatenZakken(bool nood){ //Functie om boom te laten zakken |
| jeroenvz | 0:87617851c15a | 38 | pc.printf("BOOM ZAKKEN\n\r"); |
| jeroenvz | 0:87617851c15a | 39 | *mOphalen = false; |
| jeroenvz | 0:87617851c15a | 40 | *mSluiten = true; |
| jeroenvz | 0:87617851c15a | 41 | mBoom_Open = false; |
| jeroenvz | 0:87617851c15a | 42 | float temp = 0; |
| jeroenvz | 0:87617851c15a | 43 | for(float i=0;i<5;i+=0.2){ |
| jeroenvz | 0:87617851c15a | 44 | if(State == "noodstop" && nood == true){ |
| jeroenvz | 0:87617851c15a | 45 | break; |
| jeroenvz | 0:87617851c15a | 46 | } |
| jeroenvz | 0:87617851c15a | 47 | wait(0.2); |
| jeroenvz | 0:87617851c15a | 48 | temp += 0.2; |
| jeroenvz | 0:87617851c15a | 49 | } |
| jeroenvz | 0:87617851c15a | 50 | *mSluiten = false; |
| jeroenvz | 0:87617851c15a | 51 | if(temp >= 4.9){ |
| jeroenvz | 0:87617851c15a | 52 | mBoom_Gesloten = true; |
| jeroenvz | 0:87617851c15a | 53 | pc.printf("BOOM GEZAKT\n\r"); |
| jeroenvz | 0:87617851c15a | 54 | } |
| jeroenvz | 0:87617851c15a | 55 | } |
| jeroenvz | 0:87617851c15a | 56 | |
| jeroenvz | 0:87617851c15a | 57 | bool Slagboom::getStatus(){ //Geeft waarde true (of false?) als de boom gesloten is |
| jeroenvz | 0:87617851c15a | 58 | return mBoom_Gesloten; |
| jeroenvz | 0:87617851c15a | 59 | |
| jeroenvz | 0:87617851c15a | 60 | } |
| jeroenvz | 0:87617851c15a | 61 | |
| jeroenvz | 0:87617851c15a | 62 | void Slagboom::stoplichtGroen(){ |
| jeroenvz | 0:87617851c15a | 63 | verkeer1->set_Groen(); |
| jeroenvz | 0:87617851c15a | 64 | } |
| jeroenvz | 0:87617851c15a | 65 | |
| jeroenvz | 0:87617851c15a | 66 | void Slagboom::setGesloten(){ |
| jeroenvz | 0:87617851c15a | 67 | mBoom_Gesloten = true; |
| jeroenvz | 0:87617851c15a | 68 | mBoom_Open = false; |
| jeroenvz | 0:87617851c15a | 69 | } |
| jeroenvz | 0:87617851c15a | 70 | void Slagboom::setOpen(){ |
| jeroenvz | 0:87617851c15a | 71 | mBoom_Gesloten = false; |
| jeroenvz | 0:87617851c15a | 72 | mBoom_Open = true; |
| jeroenvz | 0:87617851c15a | 73 | } |
| jeroenvz | 0:87617851c15a | 74 | |
| jeroenvz | 0:87617851c15a | 75 | void Slagboom::threadStarter(void const *p) |
| jeroenvz | 0:87617851c15a | 76 | { |
| jeroenvz | 0:87617851c15a | 77 | Slagboom *instance = (Slagboom*)p; |
| jeroenvz | 0:87617851c15a | 78 | instance->threadWorker(); |
| jeroenvz | 0:87617851c15a | 79 | } |
| jeroenvz | 0:87617851c15a | 80 | void Slagboom::threadWorker() |
| jeroenvz | 0:87617851c15a | 81 | { |
| jeroenvz | 0:87617851c15a | 82 | _thread2.signal_wait(0x1); |
| jeroenvz | 0:87617851c15a | 83 | while(1) { |
| jeroenvz | 0:87617851c15a | 84 | |
| jeroenvz | 0:87617851c15a | 85 | osEvent evt = slagboomqueue.get(); |
| jeroenvz | 0:87617851c15a | 86 | if (evt.status == osEventMessage) { |
| jeroenvz | 0:87617851c15a | 87 | if(evt.value.v == BRUG_VRIJMAKEN) { |
| jeroenvz | 0:87617851c15a | 88 | pc.printf("COMMAND: Brug Vrijmaken\n\r"); |
| jeroenvz | 0:87617851c15a | 89 | if(mBoom_Open == true && State != "noodstop"){ |
| jeroenvz | 0:87617851c15a | 90 | verkeer1->set_Rood(); |
| jeroenvz | 0:87617851c15a | 91 | wait(1); |
| jeroenvz | 0:87617851c15a | 92 | if(State != "noodstop"){ |
| jeroenvz | 0:87617851c15a | 93 | boom_LatenZakken(true); |
| jeroenvz | 0:87617851c15a | 94 | } |
| jeroenvz | 0:87617851c15a | 95 | } |
| jeroenvz | 0:87617851c15a | 96 | else{ |
| jeroenvz | 0:87617851c15a | 97 | pc.printf("ERROR: Slagbomen zijn al naar beneden!\n\r"); |
| jeroenvz | 0:87617851c15a | 98 | } |
| jeroenvz | 0:87617851c15a | 99 | } |
| jeroenvz | 0:87617851c15a | 100 | |
| jeroenvz | 0:87617851c15a | 101 | if(evt.value.v == BRUG_VRIJGEVEN) { |
| jeroenvz | 0:87617851c15a | 102 | pc.printf("COMMAND: Brug Vrijgeven\n\r"); |
| jeroenvz | 0:87617851c15a | 103 | string temp = State; |
| jeroenvz | 0:87617851c15a | 104 | State = "vrijgeven"; |
| jeroenvz | 0:87617851c15a | 105 | if(GLOBAL_gesloten == true ){ |
| jeroenvz | 0:87617851c15a | 106 | if(mBoom_Gesloten == true ){ |
| jeroenvz | 0:87617851c15a | 107 | boom_Ophalen(true); |
| jeroenvz | 0:87617851c15a | 108 | if(State != "noodstop"){ |
| jeroenvz | 0:87617851c15a | 109 | wait(1); |
| jeroenvz | 0:87617851c15a | 110 | verkeer1->set_Groen(); |
| jeroenvz | 0:87617851c15a | 111 | pc.printf("MESSAGE: Brug vrij!\n\r"); |
| jeroenvz | 0:87617851c15a | 112 | } |
| jeroenvz | 0:87617851c15a | 113 | } |
| jeroenvz | 0:87617851c15a | 114 | else{ |
| jeroenvz | 0:87617851c15a | 115 | pc.printf("MESSAGE: Bomen al open!\n\r"); |
| jeroenvz | 0:87617851c15a | 116 | } |
| jeroenvz | 0:87617851c15a | 117 | } |
| jeroenvz | 0:87617851c15a | 118 | else{ |
| jeroenvz | 0:87617851c15a | 119 | pc.printf("ERROR: Brug is nog open!\n\r"); |
| jeroenvz | 0:87617851c15a | 120 | } |
| jeroenvz | 0:87617851c15a | 121 | State = temp; |
| jeroenvz | 0:87617851c15a | 122 | } |
| jeroenvz | 0:87617851c15a | 123 | } |
| jeroenvz | 0:87617851c15a | 124 | } |
| jeroenvz | 0:87617851c15a | 125 | } |