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

Dependencies:   MMA8451Q mbed

Committer:
Ciesarik3
Date:
Tue Dec 12 20:55:43 2017 +0000
Revision:
4:f2b6a3558671
Parent:
3:ac8b2de52239
Child:
5:c1952cbf8111
ako star? socialistick? v?tah s chybami kr?sy funk?nos? je zamkne a aj odomnkne

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