Semestrálna práca VÝTAH Roman Ciesarík

Dependencies:   MMA8451Q mbed

Committer:
Ciesarik3
Date:
Fri Jan 05 21:10:58 2018 +0000
Revision:
6:83b531eead03
Parent:
5:c1952cbf8111
Child:
7:8786833154ff
nejde to;

Who changed what in which revision?

UserRevisionLine numberNew contents of line
Ciesarik3 0:40602b91b27f 1 #include "mbed.h"
Ciesarik3 1:6c18e74f3ff4 2 #include "headre.h"
Ciesarik3 5:c1952cbf8111 3 #include "definicie.h"
Ciesarik3 0:40602b91b27f 4
Ciesarik3 5:c1952cbf8111 5
Ciesarik3 5:c1952cbf8111 6
Ciesarik3 5:c1952cbf8111 7 /*
Ciesarik3 0:40602b91b27f 8 #define DISPLAY 0x30 // DATA smer 0x01-> UP 0x02-> DOWN , text (string)
Ciesarik3 0:40602b91b27f 9 #define TERMINAL 0xD0 // Vypise vsetko
Ciesarik3 1:6c18e74f3ff4 10
Ciesarik3 0:40602b91b27f 11 #define VYTAH_BUTTON_P 0xb0 // ┌-----------┐
Ciesarik3 0:40602b91b27f 12 #define VYTAH_BUTTON_1 0xb1 // | DATA 0xFF |
Ciesarik3 0:40602b91b27f 13 #define VYTAH_BUTTON_2 0xb2 // |-----------|
Ciesarik3 0:40602b91b27f 14 #define VYTAH_BUTTON_3 0xb3 // |-----------|
Ciesarik3 0:40602b91b27f 15 #define VYTAH_BUTTON_4 0xb4 // |-----------|
Ciesarik3 1:6c18e74f3ff4 16
Ciesarik3 0:40602b91b27f 17 #define POSCHODIE_BUTTON_P 0xc0 // |-----------|
Ciesarik3 0:40602b91b27f 18 #define POSCHODIE_BUTTON_1 0xc1 // |-----------|
Ciesarik3 0:40602b91b27f 19 #define POSCHODIE_BUTTON_2 0xc2 // |-----------|
Ciesarik3 0:40602b91b27f 20 #define POSCHODIE_BUTTON_3 0xc3 // |-----------|
Ciesarik3 0:40602b91b27f 21 #define POSCHODIE_BUTTON_4 0xc4 // └-----------┘
Ciesarik3 0:40602b91b27f 22
Ciesarik3 6:83b531eead03 23 #define VYTAH_DIODA_P 0x20 // ┌--------------------------┐
Ciesarik3 0:40602b91b27f 24 #define VYTAH_DIODA_1 0x21 // | DATA 0x00-> OFF 0x01->ON |
Ciesarik3 0:40602b91b27f 25 #define VYTAH_DIODA_2 0x22 // |--------------------------|
Ciesarik3 0:40602b91b27f 26 #define VYTAH_DIODA_3 0x23 // |--------------------------|
Ciesarik3 0:40602b91b27f 27 #define VYTAH_DIODA_4 0x24 // |--------------------------|
Ciesarik3 0:40602b91b27f 28
Ciesarik3 0:40602b91b27f 29 #define POSCHODIE_DIODA_P 0x10 // |--------------------------|
Ciesarik3 0:40602b91b27f 30 #define POSCHODIE_DIODA_1 0x11 // |--------------------------|
Ciesarik3 0:40602b91b27f 31 #define POSCHODIE_DIODA_2 0x12 // |--------------------------|
Ciesarik3 0:40602b91b27f 32 #define POSCHODIE_DIODA_3 0x13 // |--------------------------|
Ciesarik3 0:40602b91b27f 33 #define POSCHODIE_DIODA_4 0x14 // └--------------------------┘
Ciesarik3 0:40602b91b27f 34
Ciesarik3 0:40602b91b27f 35 #define VYTAH 0xf0 // DATA 0x00-> UNLOCK 0x01-> LOCK
Ciesarik3 0:40602b91b27f 36 #define BRZDA 0xf // DATA 0x00-> DEACTIVATE 0x01-> ACTIVATE
Ciesarik3 0:40602b91b27f 37
Ciesarik3 6:83b531eead03 38 #define FLOOR_LIMIT_SWITCH_P 0xe0 // ┌------------------------------------------┐
Ciesarik3 0:40602b91b27f 39 #define FLOOR_LIMIT_SWITCH_1 0xe1 // | DATA 0x00-> LOW 0x01->WIDE 0x02-> NARROW |
Ciesarik3 0:40602b91b27f 40 #define FLOOR_LIMIT_SWITCH_2 0xe2 // |------------------------------------------|
Ciesarik3 0:40602b91b27f 41 #define FLOOR_LIMIT_SWITCH_3 0xe3 // |------------------------------------------|
Ciesarik3 0:40602b91b27f 42 #define FLOOR_LIMIT_SWITCH_4 0xe4 // └------------------------------------------┘
Ciesarik3 0:40602b91b27f 43
Ciesarik3 0:40602b91b27f 44 #define MOTOR 0xf1 // DATA 0x1-> STOP 0x02-> UP/DOWN 32bit <-100,100> 0x3-> MOTOR ENCODER COUNT (double)
Ciesarik3 0:40602b91b27f 45 #define WATCHDOG 0xfe // DATA 0x01-> time out ELSE regular reset ( 1500ms )
Ciesarik3 0:40602b91b27f 46
Ciesarik3 5:c1952cbf8111 47 */
Ciesarik3 1:6c18e74f3ff4 48 Serial pc(USBTX, USBRX, 57600);
Ciesarik3 0:40602b91b27f 49
Ciesarik3 0:40602b91b27f 50 int i;
Ciesarik3 1:6c18e74f3ff4 51 unsigned int velkost;
Ciesarik3 5:c1952cbf8111 52 char crc=0x00;/*
Ciesarik3 1:6c18e74f3ff4 53 char crc8table[256] = {
Ciesarik3 0:40602b91b27f 54 0, 94, 188, 226, 97, 63, 221, 131, 194, 156, 126, 32, 163, 253, 31, 65,
Ciesarik3 0:40602b91b27f 55 157, 195, 33, 127, 252, 162, 64, 30, 95, 1, 227, 189, 62, 96, 130, 220,
Ciesarik3 0:40602b91b27f 56 35, 125, 159, 193, 66, 28, 254, 160, 225, 191, 93, 3, 128, 222, 60, 98,
Ciesarik3 0:40602b91b27f 57 190, 224, 2, 92, 223, 129, 99, 61, 124, 34, 192, 158, 29, 67, 161, 255,
Ciesarik3 0:40602b91b27f 58 70, 24, 250, 164, 39, 121, 155, 197, 132, 218, 56, 102, 229, 187, 89, 7,
Ciesarik3 0:40602b91b27f 59 219, 133, 103, 57, 186, 228, 6, 88, 25, 71, 165, 251, 120, 38, 196, 154,
Ciesarik3 0:40602b91b27f 60 101, 59, 217, 135, 4, 90, 184, 230, 167, 249, 27, 69, 198, 152, 122, 36,
Ciesarik3 0:40602b91b27f 61 248, 166, 68, 26, 153, 199, 37, 123, 58, 100, 134, 216, 91, 5, 231, 185,
Ciesarik3 0:40602b91b27f 62 140, 210, 48, 110, 237, 179, 81, 15, 78, 16, 242, 172, 47, 113, 147, 205,
Ciesarik3 0:40602b91b27f 63 17, 79, 173, 243, 112, 46, 204, 146, 211, 141, 111, 49, 178, 236, 14, 80,
Ciesarik3 0:40602b91b27f 64 175, 241, 19, 77, 206, 144, 114, 44, 109, 51, 209, 143, 12, 82, 176, 238,
Ciesarik3 0:40602b91b27f 65 50, 108, 142, 208, 83, 13, 239, 177, 240, 174, 76, 18, 145, 207, 45, 115,
Ciesarik3 0:40602b91b27f 66 202, 148, 118, 40, 171, 245, 23, 73, 8, 86, 180, 234, 105, 55, 213, 139,
Ciesarik3 0:40602b91b27f 67 87, 9, 235, 181, 54, 104, 138, 212, 149, 203, 41, 119, 244, 170, 72, 22,
Ciesarik3 0:40602b91b27f 68 233, 183, 85, 11, 136, 214, 52, 106, 43, 117, 151, 201, 74, 20, 246, 168,
Ciesarik3 0:40602b91b27f 69 116, 42, 200, 150, 21, 75, 169, 247, 182, 232, 10, 84, 215, 137, 107, 53
Ciesarik3 5:c1952cbf8111 70 };*/
Ciesarik3 1:6c18e74f3ff4 71
Ciesarik3 1:6c18e74f3ff4 72 // crc [0xA0, prijem, odosielatel, vrlkost dat , data (256),crc]
Ciesarik3 1:6c18e74f3ff4 73 //char odosli[5+sizeof(DATA)];
Ciesarik3 0:40602b91b27f 74
Ciesarik3 0:40602b91b27f 75
Ciesarik3 0:40602b91b27f 76
Ciesarik3 1:6c18e74f3ff4 77 char demo[]= {1,2,3,4,5,6};
Ciesarik3 4:f2b6a3558671 78 char prijemSpravy[30];
Ciesarik3 6:83b531eead03 79 char diode_DATA[]= {0x00,0x01};
Ciesarik3 6:83b531eead03 80 int diode_cislo[]= {0,0,0,0,0};
Ciesarik3 2:84b5e49b4549 81 int stav=5;
Ciesarik3 5:c1952cbf8111 82
Ciesarik3 6:83b531eead03 83 int poradie[]= {0,0,0,0,0};
Ciesarik3 5:c1952cbf8111 84 int zar=0;
Ciesarik3 5:c1952cbf8111 85 int por=0;
Ciesarik3 6:83b531eead03 86 //int kk=0;
Ciesarik3 1:6c18e74f3ff4 87
Ciesarik3 1:6c18e74f3ff4 88
Ciesarik3 0:40602b91b27f 89 int main()
Ciesarik3 0:40602b91b27f 90 {
Ciesarik3 4:f2b6a3558671 91 pc.attach(&prijmemSpravu);
Ciesarik3 2:84b5e49b4549 92 //dole();
Ciesarik3 6:83b531eead03 93 while(true) {
Ciesarik3 6:83b531eead03 94
Ciesarik3 6:83b531eead03 95 //rozhodni();
Ciesarik3 6:83b531eead03 96 /* for(int i=0;i<5;i++)
Ciesarik3 6:83b531eead03 97 if(diode_cislo[i]!=0)
Ciesarik3 6:83b531eead03 98 {
Ciesarik3 6:83b531eead03 99 if(i<stav){dole();break;}
Ciesarik3 6:83b531eead03 100 else {hore();break;}
Ciesarik3 6:83b531eead03 101 }
Ciesarik3 6:83b531eead03 102 */
Ciesarik3 6:83b531eead03 103
Ciesarik3 6:83b531eead03 104 while(true) {
Ciesarik3 6:83b531eead03 105
Ciesarik3 6:83b531eead03 106 if (por<5) {
Ciesarik3 6:83b531eead03 107 pc.attach(&prijmemSpravu);
Ciesarik3 6:83b531eead03 108 pohyb(poradie[por]);
Ciesarik3 6:83b531eead03 109
Ciesarik3 6:83b531eead03 110 por++;
Ciesarik3 6:83b531eead03 111 } else {
Ciesarik3 6:83b531eead03 112 por=0;
Ciesarik3 6:83b531eead03 113 pohyb(poradie[por]);
Ciesarik3 6:83b531eead03 114 }
Ciesarik3 4:f2b6a3558671 115 }
Ciesarik3 6:83b531eead03 116
Ciesarik3 4:f2b6a3558671 117
Ciesarik3 6:83b531eead03 118
Ciesarik3 6:83b531eead03 119 }
Ciesarik3 1:6c18e74f3ff4 120 }
Ciesarik3 5:c1952cbf8111 121
Ciesarik3 5:c1952cbf8111 122 void zarad(int co)
Ciesarik3 3:ac8b2de52239 123 {
Ciesarik3 6:83b531eead03 124 if (zar<5) {
Ciesarik3 6:83b531eead03 125 poradie[zar]=co;
Ciesarik3 6:83b531eead03 126 zar++;
Ciesarik3 6:83b531eead03 127 } else {
Ciesarik3 5:c1952cbf8111 128 poradie[0]=co;
Ciesarik3 5:c1952cbf8111 129 zar=1;
Ciesarik3 5:c1952cbf8111 130 }
Ciesarik3 5:c1952cbf8111 131 }
Ciesarik3 4:f2b6a3558671 132
Ciesarik3 6:83b531eead03 133 void pohyb(int kam )
Ciesarik3 5:c1952cbf8111 134 {
Ciesarik3 5:c1952cbf8111 135 zamkni();
Ciesarik3 6:83b531eead03 136 if (stav < kam) { pc.attach(&prijmemSpravu);hore();}
Ciesarik3 6:83b531eead03 137 if (stav > kam) { pc.attach(&prijmemSpravu);dole();}
Ciesarik3 4:f2b6a3558671 138
Ciesarik3 5:c1952cbf8111 139 /*
Ciesarik3 4:f2b6a3558671 140 switch(stav)
Ciesarik3 4:f2b6a3558671 141 {
Ciesarik3 4:f2b6a3558671 142 case 5: dole(); break;
Ciesarik3 6:83b531eead03 143 case 4:
Ciesarik3 4:f2b6a3558671 144 if(diode_cislo[4]==1)
Ciesarik3 4:f2b6a3558671 145 break;
Ciesarik3 4:f2b6a3558671 146 case 3: break;
Ciesarik3 4:f2b6a3558671 147 case 2: break;
Ciesarik3 4:f2b6a3558671 148 case 1: break;
Ciesarik3 4:f2b6a3558671 149 case 0: break;
Ciesarik3 4:f2b6a3558671 150 default: break;
Ciesarik3 4:f2b6a3558671 151 }
Ciesarik3 5:c1952cbf8111 152 */
Ciesarik3 3:ac8b2de52239 153 }
Ciesarik3 5:c1952cbf8111 154
Ciesarik3 3:ac8b2de52239 155
Ciesarik3 1:6c18e74f3ff4 156 void zamkni()
Ciesarik3 1:6c18e74f3ff4 157 {
Ciesarik3 1:6c18e74f3ff4 158 char DATA[]= {0x01};
Ciesarik3 1:6c18e74f3ff4 159 poslemSpravu(VYTAH,0xcc,sizeof(DATA),DATA);
Ciesarik3 1:6c18e74f3ff4 160 }
Ciesarik3 1:6c18e74f3ff4 161
Ciesarik3 1:6c18e74f3ff4 162 void odomkni()
Ciesarik3 1:6c18e74f3ff4 163 {
Ciesarik3 1:6c18e74f3ff4 164 char DATA[]= {0x00};
Ciesarik3 1:6c18e74f3ff4 165 poslemSpravu(VYTAH,0xcc,sizeof(DATA),DATA);
Ciesarik3 1:6c18e74f3ff4 166 }
Ciesarik3 1:6c18e74f3ff4 167
Ciesarik3 1:6c18e74f3ff4 168 void stop()
Ciesarik3 1:6c18e74f3ff4 169 {
Ciesarik3 1:6c18e74f3ff4 170 char DATA[]= {0x01};
Ciesarik3 1:6c18e74f3ff4 171 poslemSpravu(MOTOR,0xcc,sizeof(DATA),DATA);
Ciesarik3 1:6c18e74f3ff4 172 }
Ciesarik3 1:6c18e74f3ff4 173
Ciesarik3 1:6c18e74f3ff4 174 void hore()
Ciesarik3 1:6c18e74f3ff4 175 {
Ciesarik3 1:6c18e74f3ff4 176 char DATA[]= {0x02,0x64,0x00,0x00,0x00};
Ciesarik3 6:83b531eead03 177 poslemSpravu(MOTOR,0xcc,sizeof(DATA),DATA);
Ciesarik3 1:6c18e74f3ff4 178 }
Ciesarik3 1:6c18e74f3ff4 179
Ciesarik3 1:6c18e74f3ff4 180 void dole()
Ciesarik3 1:6c18e74f3ff4 181 {
Ciesarik3 1:6c18e74f3ff4 182 char DATA[]= {0x02,0x9c,0xff,0xff,0xff};
Ciesarik3 1:6c18e74f3ff4 183 poslemSpravu(MOTOR,0xcc,sizeof(DATA),DATA);
Ciesarik3 6:83b531eead03 184 pc.attach(&prijmemSpravu);
Ciesarik3 1:6c18e74f3ff4 185 }
Ciesarik3 1:6c18e74f3ff4 186
Ciesarik3 2:84b5e49b4549 187 void prijmemSpravu()
Ciesarik3 2:84b5e49b4549 188 {
Ciesarik3 6:83b531eead03 189 for (int j=0; j<4; j++) {
Ciesarik3 6:83b531eead03 190 while(true) {
Ciesarik3 6:83b531eead03 191 if(pc.readable()==1) {
Ciesarik3 6:83b531eead03 192 prijemSpravy[j]=pc.getc();
Ciesarik3 6:83b531eead03 193 break;
Ciesarik3 2:84b5e49b4549 194 }
Ciesarik3 6:83b531eead03 195 }
Ciesarik3 6:83b531eead03 196 }
Ciesarik3 6:83b531eead03 197
Ciesarik3 6:83b531eead03 198 int pom= prijemSpravy[3] + 1;
Ciesarik3 6:83b531eead03 199
Ciesarik3 6:83b531eead03 200 for (int j=0; j<pom; j++) {
Ciesarik3 6:83b531eead03 201 while(true) {
Ciesarik3 6:83b531eead03 202 if(pc.readable()==1) {
Ciesarik3 6:83b531eead03 203 prijemSpravy[j+4]=pc.getc();
Ciesarik3 6:83b531eead03 204 break;
Ciesarik3 6:83b531eead03 205 }
Ciesarik3 6:83b531eead03 206 }
Ciesarik3 2:84b5e49b4549 207 }
Ciesarik3 2:84b5e49b4549 208
Ciesarik3 6:83b531eead03 209 rozhodni();
Ciesarik3 2:84b5e49b4549 210
Ciesarik3 6:83b531eead03 211 pc.attach(&prijmemSpravu);
Ciesarik3 2:84b5e49b4549 212 }
Ciesarik3 5:c1952cbf8111 213 /*
Ciesarik3 5:c1952cbf8111 214 void obsluz(int cislo)
Ciesarik3 5:c1952cbf8111 215 {
Ciesarik3 5:c1952cbf8111 216 poslemSpravu(VYTAH_DIODA_4,0xCC,0x01, &diode_DATA[1]);
Ciesarik3 6:83b531eead03 217 diode_cislo[4]=1;
Ciesarik3 5:c1952cbf8111 218 zamkni();
Ciesarik3 6:83b531eead03 219
Ciesarik3 5:c1952cbf8111 220 }
Ciesarik3 5:c1952cbf8111 221 */
Ciesarik3 1:6c18e74f3ff4 222
Ciesarik3 3:ac8b2de52239 223 void rozhodni()
Ciesarik3 3:ac8b2de52239 224 {
Ciesarik3 6:83b531eead03 225 switch(prijemSpravy[2]) {
Ciesarik3 6:83b531eead03 226
Ciesarik3 3:ac8b2de52239 227 case 0xb4: /* vytah tla4idlo 4 poschodie */
Ciesarik3 6:83b531eead03 228 if (diode_cislo[4]==0) {
Ciesarik3 6:83b531eead03 229 zarad(4);
Ciesarik3 6:83b531eead03 230 }
Ciesarik3 5:c1952cbf8111 231 poslemSpravu(VYTAH_DIODA_4,0xCC,0x01, &diode_DATA[1]);
Ciesarik3 6:83b531eead03 232 diode_cislo[4]=1;
Ciesarik3 6:83b531eead03 233
Ciesarik3 6:83b531eead03 234 break;
Ciesarik3 6:83b531eead03 235
Ciesarik3 6:83b531eead03 236 case 0xb3: /* vytah tla4idlo 3 poschodie */
Ciesarik3 6:83b531eead03 237
Ciesarik3 6:83b531eead03 238 if (diode_cislo[3]==0) {
Ciesarik3 6:83b531eead03 239 zarad(3);
Ciesarik3 6:83b531eead03 240 }
Ciesarik3 6:83b531eead03 241 poslemSpravu(VYTAH_DIODA_3,0xCC,0x01, &diode_DATA[1]);
Ciesarik3 6:83b531eead03 242 diode_cislo[3]=1;
Ciesarik3 6:83b531eead03 243
Ciesarik3 6:83b531eead03 244 break;
Ciesarik3 6:83b531eead03 245
Ciesarik3 6:83b531eead03 246 case 0xb2: /* vytah tla4idlo 2 poschodie */
Ciesarik3 6:83b531eead03 247
Ciesarik3 6:83b531eead03 248 if (diode_cislo[2]==0) {
Ciesarik3 6:83b531eead03 249 zarad(2);
Ciesarik3 6:83b531eead03 250 }
Ciesarik3 6:83b531eead03 251 poslemSpravu(VYTAH_DIODA_2,0xCC,0x01, &diode_DATA[1]);
Ciesarik3 6:83b531eead03 252 diode_cislo[2]=1;
Ciesarik3 6:83b531eead03 253
Ciesarik3 6:83b531eead03 254 break;
Ciesarik3 6:83b531eead03 255
Ciesarik3 6:83b531eead03 256 case 0xb1: /* vytah tla4idlo 1 poschodie */
Ciesarik3 6:83b531eead03 257
Ciesarik3 6:83b531eead03 258 if (diode_cislo[1]==0) {
Ciesarik3 6:83b531eead03 259 zarad(1);
Ciesarik3 6:83b531eead03 260 }
Ciesarik3 6:83b531eead03 261 poslemSpravu(VYTAH_DIODA_1,0xCC,0x01, &diode_DATA[1]);
Ciesarik3 6:83b531eead03 262 diode_cislo[1]=1;
Ciesarik3 6:83b531eead03 263
Ciesarik3 6:83b531eead03 264 break;
Ciesarik3 6:83b531eead03 265
Ciesarik3 6:83b531eead03 266 case 0xb0: /* vytah tla4idlo pr9zemie */
Ciesarik3 6:83b531eead03 267
Ciesarik3 6:83b531eead03 268 if (diode_cislo[0]==0) {
Ciesarik3 6:83b531eead03 269 zarad(0);
Ciesarik3 6:83b531eead03 270 }
Ciesarik3 6:83b531eead03 271 poslemSpravu(VYTAH_DIODA_P,0xCC,0x01, &diode_DATA[1]);
Ciesarik3 6:83b531eead03 272 diode_cislo[0]=1;
Ciesarik3 6:83b531eead03 273
Ciesarik3 6:83b531eead03 274 break;
Ciesarik3 6:83b531eead03 275
Ciesarik3 6:83b531eead03 276 case 0xc4: /* chodba tla4idlo 4 poschodie */
Ciesarik3 6:83b531eead03 277
Ciesarik3 6:83b531eead03 278 if (diode_cislo[4]==0) {
Ciesarik3 6:83b531eead03 279 zarad(4);
Ciesarik3 6:83b531eead03 280 }
Ciesarik3 6:83b531eead03 281 poslemSpravu(POSCHODIE_DIODA_4,0xCC,0x01, &diode_DATA[1]);
Ciesarik3 6:83b531eead03 282 diode_cislo[4]=1;
Ciesarik3 6:83b531eead03 283
Ciesarik3 6:83b531eead03 284 break;
Ciesarik3 6:83b531eead03 285
Ciesarik3 6:83b531eead03 286 case 0xc3: /* chodba tla4idlo 3 poschodie */
Ciesarik3 6:83b531eead03 287
Ciesarik3 6:83b531eead03 288 if (diode_cislo[3]==0) {
Ciesarik3 6:83b531eead03 289 zarad(3);
Ciesarik3 6:83b531eead03 290 }
Ciesarik3 6:83b531eead03 291 poslemSpravu(POSCHODIE_DIODA_3,0xCC,0x01, &diode_DATA[1]);
Ciesarik3 6:83b531eead03 292 diode_cislo[3]=1;
Ciesarik3 6:83b531eead03 293
Ciesarik3 6:83b531eead03 294 break;
Ciesarik3 6:83b531eead03 295
Ciesarik3 6:83b531eead03 296 case 0xc2: /* chodba tla4idlo 2 poschodie */
Ciesarik3 6:83b531eead03 297
Ciesarik3 6:83b531eead03 298 if (diode_cislo[2]==0) {
Ciesarik3 6:83b531eead03 299 zarad(2);
Ciesarik3 6:83b531eead03 300 }
Ciesarik3 6:83b531eead03 301 poslemSpravu(POSCHODIE_DIODA_2,0xCC,0x01, &diode_DATA[1]);
Ciesarik3 6:83b531eead03 302 diode_cislo[2]=1;
Ciesarik3 6:83b531eead03 303
Ciesarik3 6:83b531eead03 304 break;
Ciesarik3 6:83b531eead03 305
Ciesarik3 6:83b531eead03 306 case 0xc1: /* chodba tla4idlo 1 poschodie */
Ciesarik3 6:83b531eead03 307
Ciesarik3 6:83b531eead03 308 if (diode_cislo[1]==0) {
Ciesarik3 6:83b531eead03 309 zarad(1);
Ciesarik3 6:83b531eead03 310 }
Ciesarik3 6:83b531eead03 311 poslemSpravu(POSCHODIE_DIODA_1,0xCC,0x01, &diode_DATA[1]);
Ciesarik3 6:83b531eead03 312 diode_cislo[1]=1;
Ciesarik3 6:83b531eead03 313
Ciesarik3 6:83b531eead03 314 break;
Ciesarik3 6:83b531eead03 315
Ciesarik3 6:83b531eead03 316 case 0xc0: /* chodba tla4idlo pr9zemie */
Ciesarik3 6:83b531eead03 317
Ciesarik3 6:83b531eead03 318 if (diode_cislo[0]==0) {
Ciesarik3 6:83b531eead03 319 zarad(0);
Ciesarik3 6:83b531eead03 320 }
Ciesarik3 6:83b531eead03 321 poslemSpravu(POSCHODIE_DIODA_P,0xCC,0x01, &diode_DATA[1]);
Ciesarik3 6:83b531eead03 322 diode_cislo[0]=1;
Ciesarik3 6:83b531eead03 323
Ciesarik3 6:83b531eead03 324 break;
Ciesarik3 6:83b531eead03 325
Ciesarik3 6:83b531eead03 326
Ciesarik3 6:83b531eead03 327
Ciesarik3 6:83b531eead03 328
Ciesarik3 6:83b531eead03 329 case 0xe4: /* info pre odomknutie 4 poschodie */
Ciesarik3 6:83b531eead03 330
Ciesarik3 6:83b531eead03 331 if(poradie[por]==4) {
Ciesarik3 6:83b531eead03 332
Ciesarik3 6:83b531eead03 333 if(prijemSpravy[4]==0x01&&diode_cislo[4]==1) {
Ciesarik3 6:83b531eead03 334 stop();
Ciesarik3 6:83b531eead03 335 poslemSpravu(VYTAH_DIODA_4,0xCC,0x01, &diode_DATA[0]);
Ciesarik3 6:83b531eead03 336 poslemSpravu(POSCHODIE_DIODA_4,0xCC,0x01, &diode_DATA[0]);
Ciesarik3 6:83b531eead03 337 diode_cislo[4]=0;
Ciesarik3 6:83b531eead03 338 stav=4;
Ciesarik3 6:83b531eead03 339 }
Ciesarik3 6:83b531eead03 340 if(prijemSpravy[4]==0x02&&stav==4) {
Ciesarik3 6:83b531eead03 341 wait(1);
Ciesarik3 6:83b531eead03 342 odomkni();
Ciesarik3 6:83b531eead03 343 //por++;
Ciesarik3 6:83b531eead03 344 }
Ciesarik3 6:83b531eead03 345 }
Ciesarik3 6:83b531eead03 346
Ciesarik3 6:83b531eead03 347 break;
Ciesarik3 6:83b531eead03 348
Ciesarik3 6:83b531eead03 349 case 0xe3: /* info pre odomknutie 3 poschodie */
Ciesarik3 5:c1952cbf8111 350
Ciesarik3 5:c1952cbf8111 351
Ciesarik3 6:83b531eead03 352 if(poradie[por]==3) {
Ciesarik3 6:83b531eead03 353 // por++;
Ciesarik3 3:ac8b2de52239 354
Ciesarik3 6:83b531eead03 355 if(prijemSpravy[4]==0x01&&diode_cislo[3]==1) {
Ciesarik3 6:83b531eead03 356 stop();
Ciesarik3 6:83b531eead03 357 poslemSpravu(VYTAH_DIODA_3,0xCC,0x01, &diode_DATA[0]);
Ciesarik3 6:83b531eead03 358 poslemSpravu(POSCHODIE_DIODA_3,0xCC,0x01, &diode_DATA[0]);
Ciesarik3 6:83b531eead03 359 diode_cislo[3]=0;
Ciesarik3 6:83b531eead03 360 stav=3;
Ciesarik3 6:83b531eead03 361 }
Ciesarik3 6:83b531eead03 362 if(prijemSpravy[4]==0x02&&stav==3) {
Ciesarik3 6:83b531eead03 363 wait(1);
Ciesarik3 6:83b531eead03 364 odomkni();
Ciesarik3 6:83b531eead03 365
Ciesarik3 6:83b531eead03 366 }
Ciesarik3 6:83b531eead03 367
Ciesarik3 6:83b531eead03 368
Ciesarik3 6:83b531eead03 369 }
Ciesarik3 6:83b531eead03 370 break;
Ciesarik3 6:83b531eead03 371
Ciesarik3 6:83b531eead03 372 case 0xe2: /* info pre odomknutie 2 poschodie */
Ciesarik3 3:ac8b2de52239 373
Ciesarik3 6:83b531eead03 374 if(poradie[por]==2) {
Ciesarik3 6:83b531eead03 375
Ciesarik3 6:83b531eead03 376 if(prijemSpravy[4]==0x01&&diode_cislo[2]==1) {
Ciesarik3 6:83b531eead03 377 stop();
Ciesarik3 6:83b531eead03 378 poslemSpravu(VYTAH_DIODA_2,0xCC,0x01, &diode_DATA[0]);
Ciesarik3 6:83b531eead03 379 poslemSpravu(POSCHODIE_DIODA_2,0xCC,0x01, &diode_DATA[0]);
Ciesarik3 6:83b531eead03 380 diode_cislo[2]=0;
Ciesarik3 6:83b531eead03 381 stav=2;
Ciesarik3 6:83b531eead03 382 }
Ciesarik3 6:83b531eead03 383 if(prijemSpravy[4]==0x02&&stav==2) {
Ciesarik3 6:83b531eead03 384 wait(1);
Ciesarik3 6:83b531eead03 385 odomkni();
Ciesarik3 6:83b531eead03 386 }
Ciesarik3 6:83b531eead03 387
Ciesarik3 6:83b531eead03 388 }
Ciesarik3 6:83b531eead03 389
Ciesarik3 6:83b531eead03 390 break;
Ciesarik3 6:83b531eead03 391
Ciesarik3 6:83b531eead03 392 case 0xe1: /* info pre odomknutie 1 poschodie */
Ciesarik3 6:83b531eead03 393 if(poradie[por]==1) {
Ciesarik3 6:83b531eead03 394
Ciesarik3 6:83b531eead03 395 if(prijemSpravy[4]==0x01&&diode_cislo[1]==1) {
Ciesarik3 6:83b531eead03 396 stop();
Ciesarik3 6:83b531eead03 397 poslemSpravu(VYTAH_DIODA_1,0xCC,0x01, &diode_DATA[0]);
Ciesarik3 6:83b531eead03 398 poslemSpravu(POSCHODIE_DIODA_1,0xCC,0x01, &diode_DATA[0]);
Ciesarik3 6:83b531eead03 399 diode_cislo[1]=0;
Ciesarik3 6:83b531eead03 400 stav=1;
Ciesarik3 6:83b531eead03 401 }
Ciesarik3 6:83b531eead03 402 if(prijemSpravy[4]==0x02&&stav==1) {
Ciesarik3 6:83b531eead03 403 wait(1);
Ciesarik3 6:83b531eead03 404 odomkni();
Ciesarik3 6:83b531eead03 405 }
Ciesarik3 6:83b531eead03 406
Ciesarik3 6:83b531eead03 407 }
Ciesarik3 6:83b531eead03 408
Ciesarik3 6:83b531eead03 409 break;
Ciesarik3 6:83b531eead03 410
Ciesarik3 6:83b531eead03 411 case 0xe0: /* info pre odomknutie prízemie */
Ciesarik3 3:ac8b2de52239 412
Ciesarik3 6:83b531eead03 413 if(poradie[por]==0) {
Ciesarik3 6:83b531eead03 414
Ciesarik3 6:83b531eead03 415 if(prijemSpravy[4]==0x01&&diode_cislo[0]==1) {
Ciesarik3 6:83b531eead03 416 stop();
Ciesarik3 6:83b531eead03 417 poslemSpravu(VYTAH_DIODA_P,0xCC,0x01, &diode_DATA[0]);
Ciesarik3 6:83b531eead03 418 poslemSpravu(POSCHODIE_DIODA_P,0xCC,0x01, &diode_DATA[0]);
Ciesarik3 6:83b531eead03 419 diode_cislo[0]=0;
Ciesarik3 6:83b531eead03 420 stav=0;
Ciesarik3 6:83b531eead03 421 }
Ciesarik3 6:83b531eead03 422 if(prijemSpravy[4]==0x02&&stav==0) {
Ciesarik3 6:83b531eead03 423 wait(1);
Ciesarik3 6:83b531eead03 424 odomkni();
Ciesarik3 6:83b531eead03 425 }
Ciesarik3 6:83b531eead03 426
Ciesarik3 6:83b531eead03 427 }
Ciesarik3 6:83b531eead03 428
Ciesarik3 6:83b531eead03 429 break;
Ciesarik3 6:83b531eead03 430
Ciesarik3 6:83b531eead03 431
Ciesarik3 6:83b531eead03 432
Ciesarik3 6:83b531eead03 433
Ciesarik3 6:83b531eead03 434
Ciesarik3 3:ac8b2de52239 435 case 0xf: /* zachranna brzda */
Ciesarik3 6:83b531eead03 436
Ciesarik3 6:83b531eead03 437 break;
Ciesarik3 6:83b531eead03 438
Ciesarik3 3:ac8b2de52239 439 case 0xfe: /* watchdog */
Ciesarik3 6:83b531eead03 440
Ciesarik3 6:83b531eead03 441 break;
Ciesarik3 6:83b531eead03 442 default:
Ciesarik3 6:83b531eead03 443 break;
Ciesarik3 6:83b531eead03 444 }
Ciesarik3 3:ac8b2de52239 445 }
Ciesarik3 3:ac8b2de52239 446
Ciesarik3 1:6c18e74f3ff4 447 void poslemSpravu(char adrRX, char adrTX, int velkost, char DATA[] )
Ciesarik3 1:6c18e74f3ff4 448 {
Ciesarik3 1:6c18e74f3ff4 449 crc=0x00;
Ciesarik3 1:6c18e74f3ff4 450 char odosli[5+velkost];
Ciesarik3 1:6c18e74f3ff4 451 odosli[0]=0xA0;
Ciesarik3 1:6c18e74f3ff4 452 odosli[1]=adrRX;
Ciesarik3 1:6c18e74f3ff4 453 odosli[2]=adrTX;
Ciesarik3 1:6c18e74f3ff4 454 odosli[3]=velkost;
Ciesarik3 1:6c18e74f3ff4 455
Ciesarik3 1:6c18e74f3ff4 456 crc=crc8table[crc^adrRX];
Ciesarik3 1:6c18e74f3ff4 457 crc=crc8table[crc^adrTX];
Ciesarik3 1:6c18e74f3ff4 458
Ciesarik3 1:6c18e74f3ff4 459 for (i=0; i<velkost; i++) {
Ciesarik3 1:6c18e74f3ff4 460 odosli[4+i]=DATA[i];
Ciesarik3 1:6c18e74f3ff4 461 }
Ciesarik3 1:6c18e74f3ff4 462
Ciesarik3 1:6c18e74f3ff4 463 for (i=0; i<velkost; i++) {
Ciesarik3 1:6c18e74f3ff4 464 crc=crc8table[crc^DATA[i]];
Ciesarik3 1:6c18e74f3ff4 465 }
Ciesarik3 1:6c18e74f3ff4 466
Ciesarik3 1:6c18e74f3ff4 467 odosli[velkost+4]=crc;
Ciesarik3 1:6c18e74f3ff4 468
Ciesarik3 1:6c18e74f3ff4 469 for (i=0; i<velkost+5; i++) {
Ciesarik3 1:6c18e74f3ff4 470 pc.putc(odosli[i]);
Ciesarik3 1:6c18e74f3ff4 471 }
Ciesarik3 1:6c18e74f3ff4 472
Ciesarik3 1:6c18e74f3ff4 473 }
Ciesarik3 1:6c18e74f3ff4 474
Ciesarik3 1:6c18e74f3ff4 475 void kontrola()
Ciesarik3 1:6c18e74f3ff4 476 {
Ciesarik3 6:83b531eead03 477 char kontrola[5]= {0,0,0,0,0};
Ciesarik3 1:6c18e74f3ff4 478
Ciesarik3 6:83b531eead03 479 for(int i=0; i<5; i++) {
Ciesarik3 6:83b531eead03 480 while(true) {
Ciesarik3 6:83b531eead03 481 if(pc.readable()==1) {
Ciesarik3 6:83b531eead03 482 kontrola[i]=pc.getc();
Ciesarik3 6:83b531eead03 483 break;
Ciesarik3 1:6c18e74f3ff4 484 }
Ciesarik3 0:40602b91b27f 485 }
Ciesarik3 6:83b531eead03 486 }
Ciesarik3 6:83b531eead03 487
Ciesarik3 6:83b531eead03 488 if(kontrola[0]!=0xA0&&kontrola[1]!=0x00&&kontrola[2]!=0x00&&kontrola[3]!=0x00&&kontrola[4]!=0x00) {
Ciesarik3 6:83b531eead03 489 // poslemSpravu();
Ciesarik3 6:83b531eead03 490 }
Ciesarik3 0:40602b91b27f 491 }