Dependencies:   mbed TSI

Committer:
kicin2
Date:
Wed Jan 23 23:43:20 2019 +0000
Revision:
0:62c18ef61b61
Child:
1:7dea46c9d8dc
version 1.0.1

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 0:62c18ef61b61 89 {
kicin2 0:62c18ef61b61 90 int addr = 0x30;
kicin2 0:62c18ef61b61 91 int data0;
kicin2 0:62c18ef61b61 92 if(command == 1) {//up arrow
kicin2 0:62c18ef61b61 93 data0 = 0x01;
kicin2 0:62c18ef61b61 94 } else if (command == 2) { //down arrow
kicin2 0:62c18ef61b61 95 data0= 0x02;
kicin2 0:62c18ef61b61 96 } else data0= 0x03;
kicin2 0:62c18ef61b61 97 switch(floor) {
kicin2 0:62c18ef61b61 98 case 0: {// P floor
kicin2 0:62c18ef61b61 99 int packet0[]= {0xA0,addr,0x00,0x02,data0,0x50};
kicin2 0:62c18ef61b61 100 sendTo(packet0);
kicin2 0:62c18ef61b61 101 break;
kicin2 0:62c18ef61b61 102 }
kicin2 0:62c18ef61b61 103 case 1: {// 1st floor
kicin2 0:62c18ef61b61 104 int packet0[]= {0xA0,addr,0x00,0x02,data0,0x31};
kicin2 0:62c18ef61b61 105 sendTo(packet0);
kicin2 0:62c18ef61b61 106 break;
kicin2 0:62c18ef61b61 107 }
kicin2 0:62c18ef61b61 108 case 2: {// 2nd floor
kicin2 0:62c18ef61b61 109 int packet0[]= {0xA0,addr,0x00,0x02,data0,0x32};
kicin2 0:62c18ef61b61 110 sendTo(packet0);
kicin2 0:62c18ef61b61 111 break;
kicin2 0:62c18ef61b61 112 }
kicin2 0:62c18ef61b61 113 case 3: {// 3rd floor
kicin2 0:62c18ef61b61 114 int packet0[]= {0xA0,addr,0x00,0x02,data0,0x33};
kicin2 0:62c18ef61b61 115 sendTo(packet0);
kicin2 0:62c18ef61b61 116 break;
kicin2 0:62c18ef61b61 117 }
kicin2 0:62c18ef61b61 118 case 4: {// 4th floor
kicin2 0:62c18ef61b61 119 int packet0[]= {0xA0,addr,0x00,0x02,data0,0x34};
kicin2 0:62c18ef61b61 120 sendTo(packet0);
kicin2 0:62c18ef61b61 121 break;
kicin2 0:62c18ef61b61 122 }
kicin2 0:62c18ef61b61 123 }
kicin2 0:62c18ef61b61 124 }
kicin2 0:62c18ef61b61 125
kicin2 0:62c18ef61b61 126 /**
kicin2 0:62c18ef61b61 127 * Funkcia ktorá inicializuje uvodnné nastavenie LED tlačidiel výťahu
kicin2 0:62c18ef61b61 128 */
kicin2 0:62c18ef61b61 129 void ledReset()
kicin2 0:62c18ef61b61 130 {
kicin2 0:62c18ef61b61 131 for (int j=0x10; j<0x15; j++) {
kicin2 0:62c18ef61b61 132 ledButton(j, 0);
kicin2 0:62c18ef61b61 133 int k=j+0x10;
kicin2 0:62c18ef61b61 134 ledButton(k, 0);
kicin2 0:62c18ef61b61 135 }
kicin2 0:62c18ef61b61 136 }