control simulation of elevator

Dependencies:   mbed TSI

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?

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