Benedikt Kičin
/
vytah_simulation
control simulation of elevator
ovladanie.cpp@1:7dea46c9d8dc, 2019-01-23 (annotated)
- Committer:
- kicin2
- Date:
- Wed Jan 23 23:52:27 2019 +0000
- Revision:
- 1:7dea46c9d8dc
- Parent:
- 0:62c18ef61b61
version 1.0.2
Who changed what in which revision?
User | Revision | Line number | New contents of line |
---|---|---|---|
kicin2 | 0:62c18ef61b61 | 1 | /** |
kicin2 | 0:62c18ef61b61 | 2 | * @file ovladanie.cpp |
kicin2 | 0:62c18ef61b61 | 3 | * @brief Súbor obsahuje funkcie ktoré odosielajú údaje simulátoru |
kicin2 | 0:62c18ef61b61 | 4 | * @author Benedikt Kicin |
kicin2 | 0:62c18ef61b61 | 5 | * @date 21.1.2018 |
kicin2 | 0:62c18ef61b61 | 6 | */ |
kicin2 | 0:62c18ef61b61 | 7 | |
kicin2 | 0:62c18ef61b61 | 8 | #include "komunikacia.h" |
kicin2 | 0:62c18ef61b61 | 9 | |
kicin2 | 0:62c18ef61b61 | 10 | /** |
kicin2 | 0:62c18ef61b61 | 11 | * Funkcia ktorá riadi pohyb výťahu, ktorý buď zastaví alebo sa pohybuje horea a nadol |
kicin2 | 0:62c18ef61b61 | 12 | * @param command - parameter podľa ktorého sa zadáva aký typ pohybu má výťah vykonať |
kicin2 | 0:62c18ef61b61 | 13 | */ |
kicin2 | 0:62c18ef61b61 | 14 | void motor(int command) //0-stop, 1 - hore, 2-dole, 3-pocet pohybov |
kicin2 | 0:62c18ef61b61 | 15 | { |
kicin2 | 0:62c18ef61b61 | 16 | switch(command) { |
kicin2 | 0:62c18ef61b61 | 17 | case 0: {//stop elevator |
kicin2 | 0:62c18ef61b61 | 18 | int packet0[]= {0xA0,0xf1,0x00,0x01,0x01}; //doska; rychlost motoru; vytah; velkost dat; data |
kicin2 | 0:62c18ef61b61 | 19 | sendTo(packet0); |
kicin2 | 0:62c18ef61b61 | 20 | break; |
kicin2 | 0:62c18ef61b61 | 21 | } |
kicin2 | 0:62c18ef61b61 | 22 | case 1: {//up move of elevator |
kicin2 | 0:62c18ef61b61 | 23 | int packet1[]= {0xA0,0xf1,0x00,0x05,0x02,0x00,0x00,0x00,0x64}; //data rychlost 100 hore |
kicin2 | 0:62c18ef61b61 | 24 | sendTo(packet1); |
kicin2 | 0:62c18ef61b61 | 25 | break; |
kicin2 | 0:62c18ef61b61 | 26 | } |
kicin2 | 0:62c18ef61b61 | 27 | case 2: {//down move of elevator |
kicin2 | 0:62c18ef61b61 | 28 | int packet2[]= {0xA0,0xf1,0x00,0x05,0x02,0xFF,0xFF,0xFF,0x9C}; //data rychlost 100 dole |
kicin2 | 0:62c18ef61b61 | 29 | sendTo(packet2); |
kicin2 | 0:62c18ef61b61 | 30 | break; |
kicin2 | 0:62c18ef61b61 | 31 | } |
kicin2 | 0:62c18ef61b61 | 32 | case 3: { //pocet spusteni motora |
kicin2 | 0:62c18ef61b61 | 33 | int packet3[]= {0xA0,0xf1,0x00,0x01,0x03}; |
kicin2 | 0:62c18ef61b61 | 34 | sendTo(packet3); |
kicin2 | 0:62c18ef61b61 | 35 | break; |
kicin2 | 0:62c18ef61b61 | 36 | } |
kicin2 | 0:62c18ef61b61 | 37 | } |
kicin2 | 0:62c18ef61b61 | 38 | } |
kicin2 | 0:62c18ef61b61 | 39 | |
kicin2 | 0:62c18ef61b61 | 40 | /** |
kicin2 | 0:62c18ef61b61 | 41 | * Funkcia ktorá riadi zamykanie výťahu |
kicin2 | 0:62c18ef61b61 | 42 | * @param command - parameter podľa ktorého sa kabínka |
kicin2 | 0:62c18ef61b61 | 43 | * odomkne - 0, zamkne - 1, pošle aktuálny stav -2 |
kicin2 | 0:62c18ef61b61 | 44 | */ |
kicin2 | 0:62c18ef61b61 | 45 | void kabinkaLock(int command) |
kicin2 | 0:62c18ef61b61 | 46 | { |
kicin2 | 0:62c18ef61b61 | 47 | switch(command) { |
kicin2 | 0:62c18ef61b61 | 48 | case 0: {//Unlock the door |
kicin2 | 0:62c18ef61b61 | 49 | int packet0[]= {0xA0,0xf0,0x00,0x01,0x00}; //doska; vytah |
kicin2 | 0:62c18ef61b61 | 50 | sendTo(packet0); |
kicin2 | 0:62c18ef61b61 | 51 | break; |
kicin2 | 0:62c18ef61b61 | 52 | } |
kicin2 | 0:62c18ef61b61 | 53 | case 1: {//Lock the door |
kicin2 | 0:62c18ef61b61 | 54 | int packet1[]= {0xA0,0xf0,0x00,0x01,0x01}; |
kicin2 | 0:62c18ef61b61 | 55 | sendTo(packet1); |
kicin2 | 0:62c18ef61b61 | 56 | break; |
kicin2 | 0:62c18ef61b61 | 57 | } |
kicin2 | 0:62c18ef61b61 | 58 | default : { //send status |
kicin2 | 0:62c18ef61b61 | 59 | int packet1[]= {0xA0,0xf0,0x00,0x01,0x02}; |
kicin2 | 0:62c18ef61b61 | 60 | sendTo(packet1); |
kicin2 | 0:62c18ef61b61 | 61 | break; |
kicin2 | 0:62c18ef61b61 | 62 | } |
kicin2 | 0:62c18ef61b61 | 63 | } |
kicin2 | 0:62c18ef61b61 | 64 | } |
kicin2 | 0:62c18ef61b61 | 65 | |
kicin2 | 0:62c18ef61b61 | 66 | /** |
kicin2 | 0:62c18ef61b61 | 67 | * Funkcia ktorá rozsviecuje a zhasína LED indikátory tlačidiel v simulátore |
kicin2 | 0:62c18ef61b61 | 68 | * @param floor - parameter ktorý vyjadruje na akom poschodí sa má LED rozsvietiť/zhasnúť |
kicin2 | 0:62c18ef61b61 | 69 | * @param command - riadi či sa LED zhasne - 0 alebo rozsvieti - 1 |
kicin2 | 0:62c18ef61b61 | 70 | */ |
kicin2 | 0:62c18ef61b61 | 71 | void ledButton(int floor, int command) //(0x21,1) |
kicin2 | 0:62c18ef61b61 | 72 | { |
kicin2 | 0:62c18ef61b61 | 73 | //int pom = floor%0x10; //mod16 |
kicin2 | 0:62c18ef61b61 | 74 | if(command == 0) { //offLed |
kicin2 | 0:62c18ef61b61 | 75 | int packet0[]= {0xA0,floor,0x00,0x01,0x00}; //vypni |
kicin2 | 0:62c18ef61b61 | 76 | sendTo(packet0); |
kicin2 | 0:62c18ef61b61 | 77 | } else { |
kicin2 | 0:62c18ef61b61 | 78 | int packet0[]= {0xA0,floor,0x00,0x01,0x01}; //inak zapni |
kicin2 | 0:62c18ef61b61 | 79 | sendTo(packet0); |
kicin2 | 0:62c18ef61b61 | 80 | } |
kicin2 | 0:62c18ef61b61 | 81 | } |
kicin2 | 0:62c18ef61b61 | 82 | |
kicin2 | 0:62c18ef61b61 | 83 | /** |
kicin2 | 0:62c18ef61b61 | 84 | * Funkcia ktorá vykresľuje na displej výťahu kde sa výťah nachádza a ktorým smerom sa pohybuje |
kicin2 | 0:62c18ef61b61 | 85 | * @param floor - parameter ktorý vyjadruje na akom poschodí sa výťah nachádza |
kicin2 | 0:62c18ef61b61 | 86 | * @param command - riadi aký sa má indikovať smer pohybu nahor - 1 alebo nadol - 2 |
kicin2 | 0:62c18ef61b61 | 87 | */ |
kicin2 | 0:62c18ef61b61 | 88 | void LCDdisp(int floor,int command) |
kicin2 | 1:7dea46c9d8dc | 89 | { |
kicin2 | 0:62c18ef61b61 | 90 | int data0; |
kicin2 | 0:62c18ef61b61 | 91 | if(command == 1) {//up arrow |
kicin2 | 0:62c18ef61b61 | 92 | data0 = 0x01; |
kicin2 | 0:62c18ef61b61 | 93 | } else if (command == 2) { //down arrow |
kicin2 | 0:62c18ef61b61 | 94 | data0= 0x02; |
kicin2 | 0:62c18ef61b61 | 95 | } else data0= 0x03; |
kicin2 | 0:62c18ef61b61 | 96 | switch(floor) { |
kicin2 | 1:7dea46c9d8dc | 97 | case 0: {// P floor; 50(Hex) = P(Char) |
kicin2 | 1:7dea46c9d8dc | 98 | int packet0[]= {0xA0,0x30,0x00,0x02,data0,0x50}; //doska; displey pre sipku a cislo; vytah; pocet dat 2; sipka; cislo poschodia |
kicin2 | 0:62c18ef61b61 | 99 | sendTo(packet0); |
kicin2 | 0:62c18ef61b61 | 100 | break; |
kicin2 | 0:62c18ef61b61 | 101 | } |
kicin2 | 0:62c18ef61b61 | 102 | case 1: {// 1st floor |
kicin2 | 1:7dea46c9d8dc | 103 | int packet0[]= {0xA0,0x30,0x00,0x02,data0,0x31}; |
kicin2 | 0:62c18ef61b61 | 104 | sendTo(packet0); |
kicin2 | 0:62c18ef61b61 | 105 | break; |
kicin2 | 0:62c18ef61b61 | 106 | } |
kicin2 | 0:62c18ef61b61 | 107 | case 2: {// 2nd floor |
kicin2 | 1:7dea46c9d8dc | 108 | int packet0[]= {0xA0,0x30,0x00,0x02,data0,0x32}; |
kicin2 | 0:62c18ef61b61 | 109 | sendTo(packet0); |
kicin2 | 0:62c18ef61b61 | 110 | break; |
kicin2 | 0:62c18ef61b61 | 111 | } |
kicin2 | 0:62c18ef61b61 | 112 | case 3: {// 3rd floor |
kicin2 | 1:7dea46c9d8dc | 113 | int packet0[]= {0xA0,0x30,0x00,0x02,data0,0x33}; |
kicin2 | 0:62c18ef61b61 | 114 | sendTo(packet0); |
kicin2 | 0:62c18ef61b61 | 115 | break; |
kicin2 | 0:62c18ef61b61 | 116 | } |
kicin2 | 0:62c18ef61b61 | 117 | case 4: {// 4th floor |
kicin2 | 1:7dea46c9d8dc | 118 | int packet0[]= {0xA0,0x30,0x00,0x02,data0,0x34}; |
kicin2 | 0:62c18ef61b61 | 119 | sendTo(packet0); |
kicin2 | 0:62c18ef61b61 | 120 | break; |
kicin2 | 0:62c18ef61b61 | 121 | } |
kicin2 | 0:62c18ef61b61 | 122 | } |
kicin2 | 0:62c18ef61b61 | 123 | } |
kicin2 | 0:62c18ef61b61 | 124 | |
kicin2 | 0:62c18ef61b61 | 125 | /** |
kicin2 | 0:62c18ef61b61 | 126 | * Funkcia ktorá inicializuje uvodnné nastavenie LED tlačidiel výťahu |
kicin2 | 0:62c18ef61b61 | 127 | */ |
kicin2 | 0:62c18ef61b61 | 128 | void ledReset() |
kicin2 | 0:62c18ef61b61 | 129 | { |
kicin2 | 1:7dea46c9d8dc | 130 | for (int j=0x10; j<0x15; j++) { //ledky pred vytahom 0x10 - 0x14 |
kicin2 | 1:7dea46c9d8dc | 131 | ledButton(j, 0); //vypnut |
kicin2 | 1:7dea46c9d8dc | 132 | int k=j+0x10; //ledky vo vytahu 0x20 - 0x24 |
kicin2 | 1:7dea46c9d8dc | 133 | ledButton(k, 0); /vypnut |
kicin2 | 0:62c18ef61b61 | 134 | } |
kicin2 | 0:62c18ef61b61 | 135 | } |