Benedikt Kičin
/
vytah_simulation
Diff: ovladanie.cpp
- Revision:
- 0:62c18ef61b61
- Child:
- 1:7dea46c9d8dc
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/ovladanie.cpp Wed Jan 23 23:43:20 2019 +0000 @@ -0,0 +1,136 @@ +/** +* @file ovladanie.cpp +* @brief Súbor obsahuje funkcie ktoré odosielajú údaje simulátoru +* @author Benedikt Kicin +* @date 21.1.2018 +*/ + +#include "komunikacia.h" + +/** +* Funkcia ktorá riadi pohyb výťahu, ktorý buď zastaví alebo sa pohybuje horea a nadol +* @param command - parameter podľa ktorého sa zadáva aký typ pohybu má výťah vykonať +*/ +void motor(int command) //0-stop, 1 - hore, 2-dole, 3-pocet pohybov +{ + switch(command) { + case 0: {//stop elevator + int packet0[]= {0xA0,0xf1,0x00,0x01,0x01}; //doska; rychlost motoru; vytah; velkost dat; data + sendTo(packet0); + break; + } + case 1: {//up move of elevator + int packet1[]= {0xA0,0xf1,0x00,0x05,0x02,0x00,0x00,0x00,0x64}; //data rychlost 100 hore + sendTo(packet1); + break; + } + case 2: {//down move of elevator + int packet2[]= {0xA0,0xf1,0x00,0x05,0x02,0xFF,0xFF,0xFF,0x9C}; //data rychlost 100 dole + sendTo(packet2); + break; + } + case 3: { //pocet spusteni motora + int packet3[]= {0xA0,0xf1,0x00,0x01,0x03}; + sendTo(packet3); + break; + } + } +} + +/** +* Funkcia ktorá riadi zamykanie výťahu +* @param command - parameter podľa ktorého sa kabínka +* odomkne - 0, zamkne - 1, pošle aktuálny stav -2 +*/ +void kabinkaLock(int command) +{ + switch(command) { + case 0: {//Unlock the door + int packet0[]= {0xA0,0xf0,0x00,0x01,0x00}; //doska; vytah + sendTo(packet0); + break; + } + case 1: {//Lock the door + int packet1[]= {0xA0,0xf0,0x00,0x01,0x01}; + sendTo(packet1); + break; + } + default : { //send status + int packet1[]= {0xA0,0xf0,0x00,0x01,0x02}; + sendTo(packet1); + break; + } + } +} + +/** +* Funkcia ktorá rozsviecuje a zhasína LED indikátory tlačidiel v simulátore +* @param floor - parameter ktorý vyjadruje na akom poschodí sa má LED rozsvietiť/zhasnúť +* @param command - riadi či sa LED zhasne - 0 alebo rozsvieti - 1 +*/ +void ledButton(int floor, int command) //(0x21,1) +{ + //int pom = floor%0x10; //mod16 + if(command == 0) { //offLed + int packet0[]= {0xA0,floor,0x00,0x01,0x00}; //vypni + sendTo(packet0); + } else { + int packet0[]= {0xA0,floor,0x00,0x01,0x01}; //inak zapni + sendTo(packet0); + } +} + +/** +* Funkcia ktorá vykresľuje na displej výťahu kde sa výťah nachádza a ktorým smerom sa pohybuje +* @param floor - parameter ktorý vyjadruje na akom poschodí sa výťah nachádza +* @param command - riadi aký sa má indikovať smer pohybu nahor - 1 alebo nadol - 2 +*/ +void LCDdisp(int floor,int command) +{ + int addr = 0x30; + int data0; + if(command == 1) {//up arrow + data0 = 0x01; + } else if (command == 2) { //down arrow + data0= 0x02; + } else data0= 0x03; + switch(floor) { + case 0: {// P floor + int packet0[]= {0xA0,addr,0x00,0x02,data0,0x50}; + sendTo(packet0); + break; + } + case 1: {// 1st floor + int packet0[]= {0xA0,addr,0x00,0x02,data0,0x31}; + sendTo(packet0); + break; + } + case 2: {// 2nd floor + int packet0[]= {0xA0,addr,0x00,0x02,data0,0x32}; + sendTo(packet0); + break; + } + case 3: {// 3rd floor + int packet0[]= {0xA0,addr,0x00,0x02,data0,0x33}; + sendTo(packet0); + break; + } + case 4: {// 4th floor + int packet0[]= {0xA0,addr,0x00,0x02,data0,0x34}; + sendTo(packet0); + break; + } + } +} + +/** +* Funkcia ktorá inicializuje uvodnné nastavenie LED tlačidiel výťahu +*/ +void ledReset() +{ + for (int j=0x10; j<0x15; j++) { + ledButton(j, 0); + int k=j+0x10; + ledButton(k, 0); + } +} \ No newline at end of file