posledna fungujuca semestralna praca
main.cpp@0:140ca5e86a6a, 2017-12-27 (annotated)
- Committer:
- zdenka
- Date:
- Wed Dec 27 13:12:33 2017 +0000
- Revision:
- 0:140ca5e86a6a
posledny fungujuci vytah
Who changed what in which revision?
User | Revision | Line number | New contents of line |
---|---|---|---|
zdenka | 0:140ca5e86a6a | 1 | #include "mbed.h" |
zdenka | 0:140ca5e86a6a | 2 | #include "MMA8451Q.h" |
zdenka | 0:140ca5e86a6a | 3 | ////////////////////definicie pre freefall////////////// |
zdenka | 0:140ca5e86a6a | 4 | #if defined (TARGET_KL25Z) || defined (TARGET_KL46Z) |
zdenka | 0:140ca5e86a6a | 5 | PinName const SDA = PTE25; |
zdenka | 0:140ca5e86a6a | 6 | PinName const SCL = PTE24; |
zdenka | 0:140ca5e86a6a | 7 | #elif defined (TARGET_KL05Z) |
zdenka | 0:140ca5e86a6a | 8 | PinName const SDA = PTB4; |
zdenka | 0:140ca5e86a6a | 9 | PinName const SCL = PTB3; |
zdenka | 0:140ca5e86a6a | 10 | #elif defined (TARGET_K20D50M) |
zdenka | 0:140ca5e86a6a | 11 | PinName const SDA = PTB1; |
zdenka | 0:140ca5e86a6a | 12 | PinName const SCL = PTB0; |
zdenka | 0:140ca5e86a6a | 13 | #else |
zdenka | 0:140ca5e86a6a | 14 | #error TARGET NOT DEFINED |
zdenka | 0:140ca5e86a6a | 15 | #endif |
zdenka | 0:140ca5e86a6a | 16 | |
zdenka | 0:140ca5e86a6a | 17 | #define MMA8451_I2C_ADDRESS (0x1d<<1) |
zdenka | 0:140ca5e86a6a | 18 | /////////////////////////////////////////////////////// |
zdenka | 0:140ca5e86a6a | 19 | |
zdenka | 0:140ca5e86a6a | 20 | ////////////////////definicie adries//////////////////// |
zdenka | 0:140ca5e86a6a | 21 | #define INF_DISPLAY 0x30 |
zdenka | 0:140ca5e86a6a | 22 | #define TERMINAL 0x0D |
zdenka | 0:140ca5e86a6a | 23 | |
zdenka | 0:140ca5e86a6a | 24 | #define CAB_BUT_P 0xb0 |
zdenka | 0:140ca5e86a6a | 25 | #define CAB_BUT_1 0xb1 |
zdenka | 0:140ca5e86a6a | 26 | #define CAB_BUT_2 0xb2 |
zdenka | 0:140ca5e86a6a | 27 | #define CAB_BUT_3 0xb3 |
zdenka | 0:140ca5e86a6a | 28 | #define CAB_BUT_4 0xb4 |
zdenka | 0:140ca5e86a6a | 29 | |
zdenka | 0:140ca5e86a6a | 30 | #define CAB_DIODE_P 0x20 |
zdenka | 0:140ca5e86a6a | 31 | #define CAB_DIODE_1 0x21 |
zdenka | 0:140ca5e86a6a | 32 | #define CAB_DIODE_2 0x22 |
zdenka | 0:140ca5e86a6a | 33 | #define CAB_DIODE_3 0x23 |
zdenka | 0:140ca5e86a6a | 34 | #define CAB_DIODE_4 0x24 |
zdenka | 0:140ca5e86a6a | 35 | |
zdenka | 0:140ca5e86a6a | 36 | #define ELEVATOR 0xf0 |
zdenka | 0:140ca5e86a6a | 37 | |
zdenka | 0:140ca5e86a6a | 38 | #define FLOOR_BUT_4 0xc4 |
zdenka | 0:140ca5e86a6a | 39 | #define FLOOR_BUT_3 0xc3 |
zdenka | 0:140ca5e86a6a | 40 | #define FLOOR_BUT_2 0xc2 |
zdenka | 0:140ca5e86a6a | 41 | #define FLOOR_BUT_1 0xc1 |
zdenka | 0:140ca5e86a6a | 42 | #define FLOOR_BUT_P 0xc0 |
zdenka | 0:140ca5e86a6a | 43 | |
zdenka | 0:140ca5e86a6a | 44 | #define FLOOR_DIODE_4 0x14 |
zdenka | 0:140ca5e86a6a | 45 | #define FLOOR_DIODE_3 0x13 |
zdenka | 0:140ca5e86a6a | 46 | #define FLOOR_DIODE_2 0x12 |
zdenka | 0:140ca5e86a6a | 47 | #define FLOOR_DIODE_1 0x11 |
zdenka | 0:140ca5e86a6a | 48 | #define FLOOR_DIODE_P 0x10 |
zdenka | 0:140ca5e86a6a | 49 | |
zdenka | 0:140ca5e86a6a | 50 | #define FLOOR_LIMIT_SWITCH_4 0xe4 |
zdenka | 0:140ca5e86a6a | 51 | #define FLOOR_LIMIT_SWITCH_3 0xe3 |
zdenka | 0:140ca5e86a6a | 52 | #define FLOOR_LIMIT_SWITCH_2 0xe2 |
zdenka | 0:140ca5e86a6a | 53 | #define FLOOR_LIMIT_SWITCH_1 0xe1 |
zdenka | 0:140ca5e86a6a | 54 | #define FLOOR_LIMIT_SWITCH_P 0xe0 |
zdenka | 0:140ca5e86a6a | 55 | |
zdenka | 0:140ca5e86a6a | 56 | #define WATCHDOG_TIMER 0xfe |
zdenka | 0:140ca5e86a6a | 57 | #define MOTOR 0xf1 |
zdenka | 0:140ca5e86a6a | 58 | #define EMERGENCY_BREAK 0xf |
zdenka | 0:140ca5e86a6a | 59 | #define MOJA_ADRESA 0xAA |
zdenka | 0:140ca5e86a6a | 60 | ////////////////////////////////////////////////// |
zdenka | 0:140ca5e86a6a | 61 | |
zdenka | 0:140ca5e86a6a | 62 | ////////////////globalne premenne////////////////// |
zdenka | 0:140ca5e86a6a | 63 | InterruptIn intin(PTA15);//Interupt pre freefall |
zdenka | 0:140ca5e86a6a | 64 | MMA8451Q acc(SDA, SCL, MMA8451_I2C_ADDRESS);//accelerometer |
zdenka | 0:140ca5e86a6a | 65 | Serial pc(USBTX, USBRX,57600); |
zdenka | 0:140ca5e86a6a | 66 | char crc=0x00;//pre vypocet crc |
zdenka | 0:140ca5e86a6a | 67 | char cesta[5]={'x','x','x','x','x'};//pole na ulozenie poziadaviek |
zdenka | 0:140ca5e86a6a | 68 | int aktpozicia=4;//aktualna pozicia vytahu |
zdenka | 0:140ca5e86a6a | 69 | char smerpohybu=0x03;//smer pohybu vytahu |
zdenka | 0:140ca5e86a6a | 70 | unsigned char kruhovybuffer[200];//obsahuje prijate znaky |
zdenka | 0:140ca5e86a6a | 71 | int indexcitania=0;//urcuje index nacitavania z kruhoveho buferu |
zdenka | 0:140ca5e86a6a | 72 | Timer timer; |
zdenka | 0:140ca5e86a6a | 73 | Ticker ticker; |
zdenka | 0:140ca5e86a6a | 74 | int indexzapisu=0; |
zdenka | 0:140ca5e86a6a | 75 | char ccc[256]={0, 94, 188, 226, 97, 63, 221, 131, 194, 156, 126, 32, 163, 253, 31, 65, |
zdenka | 0:140ca5e86a6a | 76 | 157, 195, 33, 127, 252, 162, 64, 30, 95, 1, 227, 189, 62, 96, 130, 220, |
zdenka | 0:140ca5e86a6a | 77 | 35, 125, 159, 193, 66, 28, 254, 160, 225, 191, 93, 3, 128, 222, 60, 98, |
zdenka | 0:140ca5e86a6a | 78 | 190, 224, 2, 92, 223, 129, 99, 61, 124, 34, 192, 158, 29, 67, 161, 255, |
zdenka | 0:140ca5e86a6a | 79 | 70, 24, 250, 164, 39, 121, 155, 197, 132, 218, 56, 102, 229, 187, 89, 7, |
zdenka | 0:140ca5e86a6a | 80 | 219, 133, 103, 57, 186, 228, 6, 88, 25, 71, 165, 251, 120, 38, 196, 154, |
zdenka | 0:140ca5e86a6a | 81 | 101, 59, 217, 135, 4, 90, 184, 230, 167, 249, 27, 69, 198, 152, 122, 36, |
zdenka | 0:140ca5e86a6a | 82 | 248, 166, 68, 26, 153, 199, 37, 123, 58, 100, 134, 216, 91, 5, 231, 185, |
zdenka | 0:140ca5e86a6a | 83 | 140, 210, 48, 110, 237, 179, 81, 15, 78, 16, 242, 172, 47, 113, 147, 205, |
zdenka | 0:140ca5e86a6a | 84 | 17, 79, 173, 243, 112, 46, 204, 146, 211, 141, 111, 49, 178, 236, 14, 80, |
zdenka | 0:140ca5e86a6a | 85 | 175, 241, 19, 77, 206, 144, 114, 44, 109, 51, 209, 143, 12, 82, 176, 238, |
zdenka | 0:140ca5e86a6a | 86 | 50, 108, 142, 208, 83, 13, 239, 177, 240, 174, 76, 18, 145, 207, 45, 115, |
zdenka | 0:140ca5e86a6a | 87 | 202, 148, 118, 40, 171, 245, 23, 73, 8, 86, 180, 234, 105, 55, 213, 139, |
zdenka | 0:140ca5e86a6a | 88 | 87, 9, 235, 181, 54, 104, 138, 212, 149, 203, 41, 119, 244, 170, 72, 22, |
zdenka | 0:140ca5e86a6a | 89 | 233, 183, 85, 11, 136, 214, 52, 106, 43, 117, 151, 201, 74, 20, 246, 168, |
zdenka | 0:140ca5e86a6a | 90 | 116, 42, 200, 150, 21, 75, 169, 247, 182, 232, 10, 84, 215, 137, 107, 53}; |
zdenka | 0:140ca5e86a6a | 91 | |
zdenka | 0:140ca5e86a6a | 92 | ///////prototypy funkcii//////////////////////// |
zdenka | 0:140ca5e86a6a | 93 | void spustiVytah(int nasledujucePoschodie); |
zdenka | 0:140ca5e86a6a | 94 | void zobrazPoschodie(char poschodie); |
zdenka | 0:140ca5e86a6a | 95 | void zamkniVytah(); |
zdenka | 0:140ca5e86a6a | 96 | void odomkniVytah(); |
zdenka | 0:140ca5e86a6a | 97 | void zastavVytah(); |
zdenka | 0:140ca5e86a6a | 98 | void zasvietDiodu(char ktoru); |
zdenka | 0:140ca5e86a6a | 99 | void zhasniDiodu(char ktoru); |
zdenka | 0:140ca5e86a6a | 100 | void watchdogReset(); |
zdenka | 0:140ca5e86a6a | 101 | void odstranPotvrdenia(); |
zdenka | 0:140ca5e86a6a | 102 | /////////////////////////////////////////////// |
zdenka | 0:140ca5e86a6a | 103 | |
zdenka | 0:140ca5e86a6a | 104 | //////////////////////prerusenie vyvolane pri freefall/////// |
zdenka | 0:140ca5e86a6a | 105 | void intfun(){ |
zdenka | 0:140ca5e86a6a | 106 | |
zdenka | 0:140ca5e86a6a | 107 | uint8_t datan[1]; |
zdenka | 0:140ca5e86a6a | 108 | acc.readRegs(0x0C,datan,1);//precitam register z akcelerometra |
zdenka | 0:140ca5e86a6a | 109 | if((datan[0]&0x04)==0x04){//ak je prerusenie pre freefall |
zdenka | 0:140ca5e86a6a | 110 | acc.readRegs(0x16,datan,1);//precitanim registra rusim poziadavku o prerusenie |
zdenka | 0:140ca5e86a6a | 111 | timer.start(); |
zdenka | 0:140ca5e86a6a | 112 | int begin=timer.read(); |
zdenka | 0:140ca5e86a6a | 113 | while((timer.read()-begin)<=5){ |
zdenka | 0:140ca5e86a6a | 114 | char stopVytah[6]; |
zdenka | 0:140ca5e86a6a | 115 | stopVytah[0]=0xA0; |
zdenka | 0:140ca5e86a6a | 116 | stopVytah[1]=EMERGENCY_BREAK; |
zdenka | 0:140ca5e86a6a | 117 | stopVytah[2]=MOJA_ADRESA; |
zdenka | 0:140ca5e86a6a | 118 | stopVytah[3]=0x01; |
zdenka | 0:140ca5e86a6a | 119 | stopVytah[4]=0x02; |
zdenka | 0:140ca5e86a6a | 120 | |
zdenka | 0:140ca5e86a6a | 121 | crc=0; |
zdenka | 0:140ca5e86a6a | 122 | crc=ccc[crc^stopVytah[1]]; |
zdenka | 0:140ca5e86a6a | 123 | crc=ccc[crc^stopVytah[2]]; |
zdenka | 0:140ca5e86a6a | 124 | crc=ccc[crc^stopVytah[4]]; |
zdenka | 0:140ca5e86a6a | 125 | stopVytah[5]=crc; |
zdenka | 0:140ca5e86a6a | 126 | |
zdenka | 0:140ca5e86a6a | 127 | for(int p=0;p<=5;p++){ |
zdenka | 0:140ca5e86a6a | 128 | while(pc.writable()==0){} |
zdenka | 0:140ca5e86a6a | 129 | pc.putc(stopVytah[p]); |
zdenka | 0:140ca5e86a6a | 130 | } |
zdenka | 0:140ca5e86a6a | 131 | } |
zdenka | 0:140ca5e86a6a | 132 | } |
zdenka | 0:140ca5e86a6a | 133 | } |
zdenka | 0:140ca5e86a6a | 134 | //////////////////////////////////////////////////////// |
zdenka | 0:140ca5e86a6a | 135 | |
zdenka | 0:140ca5e86a6a | 136 | ////////funkcia volana tickerom pre reset watchdogu//// |
zdenka | 0:140ca5e86a6a | 137 | void atTime(){ |
zdenka | 0:140ca5e86a6a | 138 | watchdogReset(); |
zdenka | 0:140ca5e86a6a | 139 | } |
zdenka | 0:140ca5e86a6a | 140 | ////////////////////////////////////////////////////// |
zdenka | 0:140ca5e86a6a | 141 | |
zdenka | 0:140ca5e86a6a | 142 | ///////funkcia prerusenia serioveho portu//// |
zdenka | 0:140ca5e86a6a | 143 | void funkcia(){ |
zdenka | 0:140ca5e86a6a | 144 | kruhovybuffer[indexzapisu]=pc.getc(); |
zdenka | 0:140ca5e86a6a | 145 | indexzapisu=indexzapisu+1; |
zdenka | 0:140ca5e86a6a | 146 | if(indexzapisu==200){ |
zdenka | 0:140ca5e86a6a | 147 | indexzapisu=0; |
zdenka | 0:140ca5e86a6a | 148 | } |
zdenka | 0:140ca5e86a6a | 149 | } |
zdenka | 0:140ca5e86a6a | 150 | ///////////////////////////////////////// |
zdenka | 0:140ca5e86a6a | 151 | int main(void) |
zdenka | 0:140ca5e86a6a | 152 | { |
zdenka | 0:140ca5e86a6a | 153 | ///////////////////////nastavenie akcelerometra pre volny pad///////////////////////////////////// |
zdenka | 0:140ca5e86a6a | 154 | |
zdenka | 0:140ca5e86a6a | 155 | intin.fall(&intfun);//priradim preruseniu od akcelerometra funkciu intfun |
zdenka | 0:140ca5e86a6a | 156 | |
zdenka | 0:140ca5e86a6a | 157 | uint8_t krok1[2] = {0x2A, 0x20}; |
zdenka | 0:140ca5e86a6a | 158 | acc.writeRegs(krok1, 2); |
zdenka | 0:140ca5e86a6a | 159 | |
zdenka | 0:140ca5e86a6a | 160 | uint8_t krok2[2] = {0x15, 0xB8}; |
zdenka | 0:140ca5e86a6a | 161 | acc.writeRegs(krok2,2); |
zdenka | 0:140ca5e86a6a | 162 | |
zdenka | 0:140ca5e86a6a | 163 | uint8_t krok3[2] = {0x17, 0x03}; |
zdenka | 0:140ca5e86a6a | 164 | acc.writeRegs(krok3,2); |
zdenka | 0:140ca5e86a6a | 165 | |
zdenka | 0:140ca5e86a6a | 166 | uint8_t krok4[2] = {0x18, 0x06}; |
zdenka | 0:140ca5e86a6a | 167 | acc.writeRegs(krok4,2); |
zdenka | 0:140ca5e86a6a | 168 | |
zdenka | 0:140ca5e86a6a | 169 | uint8_t krok5[2] = {0x2D, 0x04}; |
zdenka | 0:140ca5e86a6a | 170 | acc.writeRegs(krok5,2); |
zdenka | 0:140ca5e86a6a | 171 | |
zdenka | 0:140ca5e86a6a | 172 | uint8_t krok6[2] = {0x2E, 0x00}; |
zdenka | 0:140ca5e86a6a | 173 | acc.writeRegs(krok6,2); |
zdenka | 0:140ca5e86a6a | 174 | |
zdenka | 0:140ca5e86a6a | 175 | |
zdenka | 0:140ca5e86a6a | 176 | //krok7 |
zdenka | 0:140ca5e86a6a | 177 | uint8_t data[1]; |
zdenka | 0:140ca5e86a6a | 178 | acc.readRegs(0x2A,data,1); |
zdenka | 0:140ca5e86a6a | 179 | data[0]=data[0]| 0x01; |
zdenka | 0:140ca5e86a6a | 180 | |
zdenka | 0:140ca5e86a6a | 181 | uint8_t krok7[2] = {0x2A, data[0]}; |
zdenka | 0:140ca5e86a6a | 182 | krok7[1] = data[0]; |
zdenka | 0:140ca5e86a6a | 183 | acc.writeRegs(krok7,2); |
zdenka | 0:140ca5e86a6a | 184 | //////////////////////////////////////////////////////////////////////////////////////////////////// |
zdenka | 0:140ca5e86a6a | 185 | |
zdenka | 0:140ca5e86a6a | 186 | |
zdenka | 0:140ca5e86a6a | 187 | pc.attach(&funkcia,pc.RxIrq);//priradujem funkciu pre seriovy port, ktoru vykona pri vzniku prerusenia |
zdenka | 0:140ca5e86a6a | 188 | ticker.attach(&atTime,0.4); |
zdenka | 0:140ca5e86a6a | 189 | char sprava[4]; |
zdenka | 0:140ca5e86a6a | 190 | while (true) { |
zdenka | 0:140ca5e86a6a | 191 | int dlzkanacitanych=0; |
zdenka | 0:140ca5e86a6a | 192 | |
zdenka | 0:140ca5e86a6a | 193 | odstranPotvrdenia(); //odstrani vsetky potvrdzovacie spravy z kruhoveho buffra |
zdenka | 0:140ca5e86a6a | 194 | |
zdenka | 0:140ca5e86a6a | 195 | if(indexcitania<=indexzapisu){ |
zdenka | 0:140ca5e86a6a | 196 | dlzkanacitanych=indexzapisu-indexcitania; |
zdenka | 0:140ca5e86a6a | 197 | }else{dlzkanacitanych=(200-indexcitania)+indexzapisu;}// v if else pocitam pocet prijatych dat |
zdenka | 0:140ca5e86a6a | 198 | |
zdenka | 0:140ca5e86a6a | 199 | |
zdenka | 0:140ca5e86a6a | 200 | |
zdenka | 0:140ca5e86a6a | 201 | while(dlzkanacitanych>0&&kruhovybuffer[indexcitania]!=0xA0){ |
zdenka | 0:140ca5e86a6a | 202 | |
zdenka | 0:140ca5e86a6a | 203 | indexcitania=(indexcitania+1)%200; |
zdenka | 0:140ca5e86a6a | 204 | |
zdenka | 0:140ca5e86a6a | 205 | |
zdenka | 0:140ca5e86a6a | 206 | if(indexcitania<=indexzapisu){ |
zdenka | 0:140ca5e86a6a | 207 | dlzkanacitanych=indexzapisu-indexcitania; |
zdenka | 0:140ca5e86a6a | 208 | }else{dlzkanacitanych=(200-indexcitania)+indexzapisu;}// v if else pocitam pocet prijatych dat |
zdenka | 0:140ca5e86a6a | 209 | |
zdenka | 0:140ca5e86a6a | 210 | } |
zdenka | 0:140ca5e86a6a | 211 | |
zdenka | 0:140ca5e86a6a | 212 | if(dlzkanacitanych>=5&&dlzkanacitanych>=5+kruhovybuffer[indexcitania+3]){ //pocet prijatych dat musi byt >=pocet dat spravy |
zdenka | 0:140ca5e86a6a | 213 | |
zdenka | 0:140ca5e86a6a | 214 | //////////////////////////////////////ukladam do pola "sprava" a "zvysokspravy" casti spravy na jednotlive indexy////////////////////////////////////// |
zdenka | 0:140ca5e86a6a | 215 | sprava[0]=kruhovybuffer[indexcitania];//zaciatocny bajt 0xA0 |
zdenka | 0:140ca5e86a6a | 216 | indexcitania=indexcitania+1; |
zdenka | 0:140ca5e86a6a | 217 | if(indexcitania==200){indexcitania=0;} |
zdenka | 0:140ca5e86a6a | 218 | |
zdenka | 0:140ca5e86a6a | 219 | sprava[1]=kruhovybuffer[indexcitania];//adresa prijimatela |
zdenka | 0:140ca5e86a6a | 220 | indexcitania=indexcitania+1; |
zdenka | 0:140ca5e86a6a | 221 | if(indexcitania==200){indexcitania=0;} |
zdenka | 0:140ca5e86a6a | 222 | |
zdenka | 0:140ca5e86a6a | 223 | sprava[2]=kruhovybuffer[indexcitania];//adresa odosielatela |
zdenka | 0:140ca5e86a6a | 224 | indexcitania=indexcitania+1; |
zdenka | 0:140ca5e86a6a | 225 | if(indexcitania==200){indexcitania=0;} |
zdenka | 0:140ca5e86a6a | 226 | |
zdenka | 0:140ca5e86a6a | 227 | sprava[3]=kruhovybuffer[indexcitania];//pocet dat |
zdenka | 0:140ca5e86a6a | 228 | indexcitania=indexcitania+1; |
zdenka | 0:140ca5e86a6a | 229 | if(indexcitania==200){indexcitania=0;} |
zdenka | 0:140ca5e86a6a | 230 | |
zdenka | 0:140ca5e86a6a | 231 | int dlzkazvysku=sprava[3]+1; |
zdenka | 0:140ca5e86a6a | 232 | char zvysokspravy[dlzkazvysku];//bude obsahovat data a crc |
zdenka | 0:140ca5e86a6a | 233 | |
zdenka | 0:140ca5e86a6a | 234 | for(int i=0;i<dlzkazvysku;i++){ |
zdenka | 0:140ca5e86a6a | 235 | zvysokspravy[i]=kruhovybuffer[indexcitania];//pocet dat |
zdenka | 0:140ca5e86a6a | 236 | indexcitania=indexcitania+1; |
zdenka | 0:140ca5e86a6a | 237 | if(indexcitania==200){indexcitania=0;} |
zdenka | 0:140ca5e86a6a | 238 | } |
zdenka | 0:140ca5e86a6a | 239 | ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// |
zdenka | 0:140ca5e86a6a | 240 | |
zdenka | 0:140ca5e86a6a | 241 | //mam precitanu celu spravu |
zdenka | 0:140ca5e86a6a | 242 | |
zdenka | 0:140ca5e86a6a | 243 | |
zdenka | 0:140ca5e86a6a | 244 | if((sprava[2]&0xf0)==0xc0&&cesta[0]=='x'){//stlacene tlacidlo na poschodi a zaroven nie je ziadna poziadavka v poli cesta |
zdenka | 0:140ca5e86a6a | 245 | |
zdenka | 0:140ca5e86a6a | 246 | int naslpozicia; |
zdenka | 0:140ca5e86a6a | 247 | char adrDiodyPoschodia; |
zdenka | 0:140ca5e86a6a | 248 | |
zdenka | 0:140ca5e86a6a | 249 | |
zdenka | 0:140ca5e86a6a | 250 | if(sprava[2]==FLOOR_BUT_4){ |
zdenka | 0:140ca5e86a6a | 251 | adrDiodyPoschodia=FLOOR_DIODE_4; |
zdenka | 0:140ca5e86a6a | 252 | cesta[0]='4'; |
zdenka | 0:140ca5e86a6a | 253 | naslpozicia=4; |
zdenka | 0:140ca5e86a6a | 254 | }else if(sprava[2]==FLOOR_BUT_3){ |
zdenka | 0:140ca5e86a6a | 255 | adrDiodyPoschodia=FLOOR_DIODE_3; |
zdenka | 0:140ca5e86a6a | 256 | cesta[0]='3'; |
zdenka | 0:140ca5e86a6a | 257 | naslpozicia=3; |
zdenka | 0:140ca5e86a6a | 258 | }else if(sprava[2]==FLOOR_BUT_2){ |
zdenka | 0:140ca5e86a6a | 259 | adrDiodyPoschodia=FLOOR_DIODE_2; |
zdenka | 0:140ca5e86a6a | 260 | cesta[0]='2'; |
zdenka | 0:140ca5e86a6a | 261 | naslpozicia=2; |
zdenka | 0:140ca5e86a6a | 262 | }else if(sprava[2]==FLOOR_BUT_1){ |
zdenka | 0:140ca5e86a6a | 263 | adrDiodyPoschodia=FLOOR_DIODE_1; |
zdenka | 0:140ca5e86a6a | 264 | cesta[0]='1'; |
zdenka | 0:140ca5e86a6a | 265 | naslpozicia=1; |
zdenka | 0:140ca5e86a6a | 266 | }else if(sprava[2]==FLOOR_BUT_P){ |
zdenka | 0:140ca5e86a6a | 267 | adrDiodyPoschodia=FLOOR_DIODE_P; |
zdenka | 0:140ca5e86a6a | 268 | cesta[0]='P'; |
zdenka | 0:140ca5e86a6a | 269 | naslpozicia=0; |
zdenka | 0:140ca5e86a6a | 270 | } |
zdenka | 0:140ca5e86a6a | 271 | |
zdenka | 0:140ca5e86a6a | 272 | if(aktpozicia==naslpozicia){ |
zdenka | 0:140ca5e86a6a | 273 | cesta[0]='x'; |
zdenka | 0:140ca5e86a6a | 274 | }else{///////////////ak poschodie kde je vytah privolany je ine ako to na ktorom aktualne vytah stoji |
zdenka | 0:140ca5e86a6a | 275 | |
zdenka | 0:140ca5e86a6a | 276 | ////////////////svietim diodu na poschodi////////////////////////////////////////////////// |
zdenka | 0:140ca5e86a6a | 277 | |
zdenka | 0:140ca5e86a6a | 278 | zasvietDiodu(adrDiodyPoschodia); |
zdenka | 0:140ca5e86a6a | 279 | |
zdenka | 0:140ca5e86a6a | 280 | ////////////////////////////////////////////////////////////////////////////////////////// |
zdenka | 0:140ca5e86a6a | 281 | |
zdenka | 0:140ca5e86a6a | 282 | /////////////////////spustam vytah////////////////////////////////////////////////////// |
zdenka | 0:140ca5e86a6a | 283 | spustiVytah(naslpozicia); |
zdenka | 0:140ca5e86a6a | 284 | ////////////////////////////////////////////////////////////////////////// |
zdenka | 0:140ca5e86a6a | 285 | |
zdenka | 0:140ca5e86a6a | 286 | ///////////////////////////zamknem vytah///////////////////////////////// |
zdenka | 0:140ca5e86a6a | 287 | zamkniVytah(); |
zdenka | 0:140ca5e86a6a | 288 | ////////////////////////////////////////////////////////////////////////// |
zdenka | 0:140ca5e86a6a | 289 | |
zdenka | 0:140ca5e86a6a | 290 | ///////////////////////zobrazim poschodie////////////////////////////////// |
zdenka | 0:140ca5e86a6a | 291 | if(aktpozicia==4){ |
zdenka | 0:140ca5e86a6a | 292 | zobrazPoschodie('4'); |
zdenka | 0:140ca5e86a6a | 293 | }else if(aktpozicia==3){ |
zdenka | 0:140ca5e86a6a | 294 | zobrazPoschodie('3'); |
zdenka | 0:140ca5e86a6a | 295 | }else if(aktpozicia==2){ |
zdenka | 0:140ca5e86a6a | 296 | zobrazPoschodie('2'); |
zdenka | 0:140ca5e86a6a | 297 | }else if(aktpozicia==1){ |
zdenka | 0:140ca5e86a6a | 298 | zobrazPoschodie('1'); |
zdenka | 0:140ca5e86a6a | 299 | }else if(aktpozicia==0){ |
zdenka | 0:140ca5e86a6a | 300 | zobrazPoschodie('P'); |
zdenka | 0:140ca5e86a6a | 301 | } |
zdenka | 0:140ca5e86a6a | 302 | ////////////////////////////////////////////////////////////////////////////////// |
zdenka | 0:140ca5e86a6a | 303 | }//aktpozicia!=naslpozicia |
zdenka | 0:140ca5e86a6a | 304 | |
zdenka | 0:140ca5e86a6a | 305 | }else if((sprava[2]&0xf0)==0xb0){//ak je kliknute na tlacidla z kabiny |
zdenka | 0:140ca5e86a6a | 306 | |
zdenka | 0:140ca5e86a6a | 307 | int poschodie; |
zdenka | 0:140ca5e86a6a | 308 | char znakposch; |
zdenka | 0:140ca5e86a6a | 309 | char adrDiodyKabiny; |
zdenka | 0:140ca5e86a6a | 310 | |
zdenka | 0:140ca5e86a6a | 311 | if(sprava[2]==CAB_BUT_4){ |
zdenka | 0:140ca5e86a6a | 312 | poschodie=4; |
zdenka | 0:140ca5e86a6a | 313 | znakposch='4'; |
zdenka | 0:140ca5e86a6a | 314 | adrDiodyKabiny=CAB_DIODE_4; |
zdenka | 0:140ca5e86a6a | 315 | }else if(sprava[2]==CAB_BUT_3){ |
zdenka | 0:140ca5e86a6a | 316 | poschodie=3; |
zdenka | 0:140ca5e86a6a | 317 | znakposch='3'; |
zdenka | 0:140ca5e86a6a | 318 | adrDiodyKabiny=CAB_DIODE_3; |
zdenka | 0:140ca5e86a6a | 319 | }else if(sprava[2]==CAB_BUT_2){ |
zdenka | 0:140ca5e86a6a | 320 | poschodie=2; |
zdenka | 0:140ca5e86a6a | 321 | znakposch='2'; |
zdenka | 0:140ca5e86a6a | 322 | adrDiodyKabiny=CAB_DIODE_2; |
zdenka | 0:140ca5e86a6a | 323 | }else if(sprava[2]==CAB_BUT_1){ |
zdenka | 0:140ca5e86a6a | 324 | poschodie=1; |
zdenka | 0:140ca5e86a6a | 325 | znakposch='1'; |
zdenka | 0:140ca5e86a6a | 326 | adrDiodyKabiny=CAB_DIODE_1; |
zdenka | 0:140ca5e86a6a | 327 | }else if(sprava[2]==CAB_BUT_P){ |
zdenka | 0:140ca5e86a6a | 328 | poschodie=0; |
zdenka | 0:140ca5e86a6a | 329 | znakposch='P'; |
zdenka | 0:140ca5e86a6a | 330 | adrDiodyKabiny=CAB_DIODE_P; |
zdenka | 0:140ca5e86a6a | 331 | } |
zdenka | 0:140ca5e86a6a | 332 | |
zdenka | 0:140ca5e86a6a | 333 | if(aktpozicia!=poschodie){//svietim len ked je aktualna pozicia vytahu ina ako stlacena |
zdenka | 0:140ca5e86a6a | 334 | |
zdenka | 0:140ca5e86a6a | 335 | |
zdenka | 0:140ca5e86a6a | 336 | |
zdenka | 0:140ca5e86a6a | 337 | ////////ak je pole poziadaviek prazdne////////// |
zdenka | 0:140ca5e86a6a | 338 | int prazdne=0; |
zdenka | 0:140ca5e86a6a | 339 | if(cesta[0]=='x'&&cesta[1]=='x'&&cesta[2]=='x'&&cesta[3]=='x'&&cesta[4]=='x'){ |
zdenka | 0:140ca5e86a6a | 340 | prazdne=1; |
zdenka | 0:140ca5e86a6a | 341 | } |
zdenka | 0:140ca5e86a6a | 342 | /////////////////////////////////////////////// |
zdenka | 0:140ca5e86a6a | 343 | |
zdenka | 0:140ca5e86a6a | 344 | |
zdenka | 0:140ca5e86a6a | 345 | /////////////////ulozim poziadavku do pola/////////////////////////////// |
zdenka | 0:140ca5e86a6a | 346 | int uztamje=0; |
zdenka | 0:140ca5e86a6a | 347 | for(int t=0;t<5;t++){ |
zdenka | 0:140ca5e86a6a | 348 | if(znakposch==cesta[t]){ |
zdenka | 0:140ca5e86a6a | 349 | uztamje=1; |
zdenka | 0:140ca5e86a6a | 350 | } |
zdenka | 0:140ca5e86a6a | 351 | } |
zdenka | 0:140ca5e86a6a | 352 | |
zdenka | 0:140ca5e86a6a | 353 | if(uztamje==0){ |
zdenka | 0:140ca5e86a6a | 354 | |
zdenka | 0:140ca5e86a6a | 355 | //////////////////////svietim diodu pri tlacidle///////////////////// |
zdenka | 0:140ca5e86a6a | 356 | |
zdenka | 0:140ca5e86a6a | 357 | zasvietDiodu(adrDiodyKabiny); |
zdenka | 0:140ca5e86a6a | 358 | |
zdenka | 0:140ca5e86a6a | 359 | //////////////////////////////////////////////////////////////////////////////// |
zdenka | 0:140ca5e86a6a | 360 | |
zdenka | 0:140ca5e86a6a | 361 | for(int t=0;t<5;t++){ |
zdenka | 0:140ca5e86a6a | 362 | if(cesta[t]=='x'){ |
zdenka | 0:140ca5e86a6a | 363 | cesta[t]=znakposch; |
zdenka | 0:140ca5e86a6a | 364 | break; |
zdenka | 0:140ca5e86a6a | 365 | } |
zdenka | 0:140ca5e86a6a | 366 | } |
zdenka | 0:140ca5e86a6a | 367 | |
zdenka | 0:140ca5e86a6a | 368 | } |
zdenka | 0:140ca5e86a6a | 369 | ////////////////////////////////////////////////////////////////////////// |
zdenka | 0:140ca5e86a6a | 370 | |
zdenka | 0:140ca5e86a6a | 371 | if(prazdne==1){ |
zdenka | 0:140ca5e86a6a | 372 | ///////////////////////////zamknem vytah///////////////////////////////// |
zdenka | 0:140ca5e86a6a | 373 | |
zdenka | 0:140ca5e86a6a | 374 | zamkniVytah(); |
zdenka | 0:140ca5e86a6a | 375 | |
zdenka | 0:140ca5e86a6a | 376 | ////////////////////////////////////////////////////////////////////////// |
zdenka | 0:140ca5e86a6a | 377 | |
zdenka | 0:140ca5e86a6a | 378 | /////////////////////spustam vytah////////////////////////////////////////////////////// |
zdenka | 0:140ca5e86a6a | 379 | spustiVytah(poschodie); |
zdenka | 0:140ca5e86a6a | 380 | ////////////////////////////////////////////////////////////////////////// |
zdenka | 0:140ca5e86a6a | 381 | |
zdenka | 0:140ca5e86a6a | 382 | ///////////////////////zobrazim poschodie////////////////////////////////// |
zdenka | 0:140ca5e86a6a | 383 | if(aktpozicia==4){ |
zdenka | 0:140ca5e86a6a | 384 | zobrazPoschodie('4'); |
zdenka | 0:140ca5e86a6a | 385 | }else if(aktpozicia==3){ |
zdenka | 0:140ca5e86a6a | 386 | zobrazPoschodie('3'); |
zdenka | 0:140ca5e86a6a | 387 | }else if(aktpozicia==2){ |
zdenka | 0:140ca5e86a6a | 388 | zobrazPoschodie('2'); |
zdenka | 0:140ca5e86a6a | 389 | }else if(aktpozicia==1){ |
zdenka | 0:140ca5e86a6a | 390 | zobrazPoschodie('1'); |
zdenka | 0:140ca5e86a6a | 391 | }else if(aktpozicia==0){ |
zdenka | 0:140ca5e86a6a | 392 | zobrazPoschodie('P'); |
zdenka | 0:140ca5e86a6a | 393 | } |
zdenka | 0:140ca5e86a6a | 394 | ////////////////////////////////////////////////////////////////////////////////// |
zdenka | 0:140ca5e86a6a | 395 | |
zdenka | 0:140ca5e86a6a | 396 | }// if prazdne==1 |
zdenka | 0:140ca5e86a6a | 397 | |
zdenka | 0:140ca5e86a6a | 398 | |
zdenka | 0:140ca5e86a6a | 399 | |
zdenka | 0:140ca5e86a6a | 400 | }//if aktualnapozticia je ina ako stlacena |
zdenka | 0:140ca5e86a6a | 401 | } else if((sprava[2]&0xf0)==0xe0&&zvysokspravy[0]==0x01){// ak sprava od jedneho zo switchov a zaroven je vytah dalej |
zdenka | 0:140ca5e86a6a | 402 | char kdesom; |
zdenka | 0:140ca5e86a6a | 403 | if(sprava[2]==FLOOR_LIMIT_SWITCH_4){ |
zdenka | 0:140ca5e86a6a | 404 | kdesom='4'; |
zdenka | 0:140ca5e86a6a | 405 | }else if(sprava[2]==FLOOR_LIMIT_SWITCH_3){ |
zdenka | 0:140ca5e86a6a | 406 | kdesom='3'; |
zdenka | 0:140ca5e86a6a | 407 | }else if(sprava[2]==FLOOR_LIMIT_SWITCH_2){ |
zdenka | 0:140ca5e86a6a | 408 | kdesom='2'; |
zdenka | 0:140ca5e86a6a | 409 | }else if(sprava[2]==FLOOR_LIMIT_SWITCH_1){ |
zdenka | 0:140ca5e86a6a | 410 | kdesom='1'; |
zdenka | 0:140ca5e86a6a | 411 | }else if(sprava[2]==FLOOR_LIMIT_SWITCH_P){ |
zdenka | 0:140ca5e86a6a | 412 | kdesom='P'; |
zdenka | 0:140ca5e86a6a | 413 | } |
zdenka | 0:140ca5e86a6a | 414 | |
zdenka | 0:140ca5e86a6a | 415 | if(kdesom==cesta[0]){//ak som na poschodi kde chcem zastavit |
zdenka | 0:140ca5e86a6a | 416 | zastavVytah(); |
zdenka | 0:140ca5e86a6a | 417 | } |
zdenka | 0:140ca5e86a6a | 418 | } else if((sprava[2]&0xf0)==0xe0&&zvysokspravy[0]==0x02){//som blizko pri switchi, svieti na cerveno |
zdenka | 0:140ca5e86a6a | 419 | char kdesom; |
zdenka | 0:140ca5e86a6a | 420 | if(sprava[2]==FLOOR_LIMIT_SWITCH_4){ |
zdenka | 0:140ca5e86a6a | 421 | kdesom='4'; |
zdenka | 0:140ca5e86a6a | 422 | }else if(sprava[2]==FLOOR_LIMIT_SWITCH_3){ |
zdenka | 0:140ca5e86a6a | 423 | kdesom='3'; |
zdenka | 0:140ca5e86a6a | 424 | }else if(sprava[2]==FLOOR_LIMIT_SWITCH_2){ |
zdenka | 0:140ca5e86a6a | 425 | kdesom='2'; |
zdenka | 0:140ca5e86a6a | 426 | }else if(sprava[2]==FLOOR_LIMIT_SWITCH_1){ |
zdenka | 0:140ca5e86a6a | 427 | kdesom='1'; |
zdenka | 0:140ca5e86a6a | 428 | }else if(sprava[2]==FLOOR_LIMIT_SWITCH_P){ |
zdenka | 0:140ca5e86a6a | 429 | kdesom='P'; |
zdenka | 0:140ca5e86a6a | 430 | } |
zdenka | 0:140ca5e86a6a | 431 | |
zdenka | 0:140ca5e86a6a | 432 | if(kdesom==cesta[0]){ |
zdenka | 0:140ca5e86a6a | 433 | ///////////////////////poposuvam poziadavky v poli////////////////////////////// |
zdenka | 0:140ca5e86a6a | 434 | cesta[0]=cesta[1]; |
zdenka | 0:140ca5e86a6a | 435 | cesta[1]=cesta[2]; |
zdenka | 0:140ca5e86a6a | 436 | cesta[2]=cesta[3]; |
zdenka | 0:140ca5e86a6a | 437 | cesta[3]=cesta[4]; |
zdenka | 0:140ca5e86a6a | 438 | cesta[4]='x'; |
zdenka | 0:140ca5e86a6a | 439 | //////////////////////////////////////////////////////////////////////////////// |
zdenka | 0:140ca5e86a6a | 440 | |
zdenka | 0:140ca5e86a6a | 441 | ///////////////////////////////zhasnem diodu na poschodi//////////////////////////////// |
zdenka | 0:140ca5e86a6a | 442 | char adrDiodyPoschodia; |
zdenka | 0:140ca5e86a6a | 443 | |
zdenka | 0:140ca5e86a6a | 444 | if(kdesom=='4'){ |
zdenka | 0:140ca5e86a6a | 445 | aktpozicia=4; |
zdenka | 0:140ca5e86a6a | 446 | adrDiodyPoschodia=FLOOR_DIODE_4; |
zdenka | 0:140ca5e86a6a | 447 | }else if(kdesom=='3'){ |
zdenka | 0:140ca5e86a6a | 448 | aktpozicia=3; |
zdenka | 0:140ca5e86a6a | 449 | adrDiodyPoschodia=FLOOR_DIODE_3; |
zdenka | 0:140ca5e86a6a | 450 | }else if(kdesom=='2'){ |
zdenka | 0:140ca5e86a6a | 451 | aktpozicia=2; |
zdenka | 0:140ca5e86a6a | 452 | adrDiodyPoschodia=FLOOR_DIODE_2; |
zdenka | 0:140ca5e86a6a | 453 | }else if(kdesom=='1'){ |
zdenka | 0:140ca5e86a6a | 454 | aktpozicia=1; |
zdenka | 0:140ca5e86a6a | 455 | adrDiodyPoschodia=FLOOR_DIODE_1; |
zdenka | 0:140ca5e86a6a | 456 | }else if(kdesom=='P'){ |
zdenka | 0:140ca5e86a6a | 457 | aktpozicia=0; |
zdenka | 0:140ca5e86a6a | 458 | adrDiodyPoschodia=FLOOR_DIODE_P; |
zdenka | 0:140ca5e86a6a | 459 | } |
zdenka | 0:140ca5e86a6a | 460 | |
zdenka | 0:140ca5e86a6a | 461 | zhasniDiodu(adrDiodyPoschodia); |
zdenka | 0:140ca5e86a6a | 462 | |
zdenka | 0:140ca5e86a6a | 463 | //////////////////////////////////////////////////////////////////////////////// |
zdenka | 0:140ca5e86a6a | 464 | |
zdenka | 0:140ca5e86a6a | 465 | ///////////////////////zhasnem diodu vo vytahu////////////////////////////////// |
zdenka | 0:140ca5e86a6a | 466 | |
zdenka | 0:140ca5e86a6a | 467 | char adrDiodyKabiny; |
zdenka | 0:140ca5e86a6a | 468 | if(kdesom=='4'){ |
zdenka | 0:140ca5e86a6a | 469 | adrDiodyKabiny=CAB_DIODE_4; |
zdenka | 0:140ca5e86a6a | 470 | }else if(kdesom=='3'){ |
zdenka | 0:140ca5e86a6a | 471 | adrDiodyKabiny=CAB_DIODE_3; |
zdenka | 0:140ca5e86a6a | 472 | }else if(kdesom=='2'){ |
zdenka | 0:140ca5e86a6a | 473 | adrDiodyKabiny=CAB_DIODE_2; |
zdenka | 0:140ca5e86a6a | 474 | }else if(kdesom=='1'){ |
zdenka | 0:140ca5e86a6a | 475 | adrDiodyKabiny=CAB_DIODE_1; |
zdenka | 0:140ca5e86a6a | 476 | }else if(kdesom=='P'){ |
zdenka | 0:140ca5e86a6a | 477 | adrDiodyKabiny=CAB_DIODE_P; |
zdenka | 0:140ca5e86a6a | 478 | } |
zdenka | 0:140ca5e86a6a | 479 | |
zdenka | 0:140ca5e86a6a | 480 | zhasniDiodu(adrDiodyKabiny); |
zdenka | 0:140ca5e86a6a | 481 | |
zdenka | 0:140ca5e86a6a | 482 | /////////////////////////////////////////////////////////////////////////// |
zdenka | 0:140ca5e86a6a | 483 | |
zdenka | 0:140ca5e86a6a | 484 | smerpohybu=0x03; |
zdenka | 0:140ca5e86a6a | 485 | ////////////////////odomknem vytah/////////////////////////////////////////////// |
zdenka | 0:140ca5e86a6a | 486 | odomkniVytah(); |
zdenka | 0:140ca5e86a6a | 487 | |
zdenka | 0:140ca5e86a6a | 488 | ///////////////////////////////////////////////////////////////////////// |
zdenka | 0:140ca5e86a6a | 489 | |
zdenka | 0:140ca5e86a6a | 490 | /////////////////zobraz poschodie////////////////////// |
zdenka | 0:140ca5e86a6a | 491 | zobrazPoschodie(kdesom); |
zdenka | 0:140ca5e86a6a | 492 | /////////////////////////////////////////////////// |
zdenka | 0:140ca5e86a6a | 493 | |
zdenka | 0:140ca5e86a6a | 494 | if(cesta[0]!='x'){//ak existuje nasledujuca poziadavka |
zdenka | 0:140ca5e86a6a | 495 | //////////////////////////cakam 5 sekund/////////////////////////// |
zdenka | 0:140ca5e86a6a | 496 | timer.start(); |
zdenka | 0:140ca5e86a6a | 497 | while(timer.read()<=5){} |
zdenka | 0:140ca5e86a6a | 498 | timer.stop(); |
zdenka | 0:140ca5e86a6a | 499 | timer.reset(); |
zdenka | 0:140ca5e86a6a | 500 | //////////////////////////////////////////////////////////////////// |
zdenka | 0:140ca5e86a6a | 501 | |
zdenka | 0:140ca5e86a6a | 502 | ///////////////////////////zamknem vytah///////////////////////////////// |
zdenka | 0:140ca5e86a6a | 503 | |
zdenka | 0:140ca5e86a6a | 504 | zamkniVytah(); |
zdenka | 0:140ca5e86a6a | 505 | |
zdenka | 0:140ca5e86a6a | 506 | ////////////////////////////////////////////////////////////////////////// |
zdenka | 0:140ca5e86a6a | 507 | |
zdenka | 0:140ca5e86a6a | 508 | /////////////////////spustam vytah////////////////////////////////////////////////////// |
zdenka | 0:140ca5e86a6a | 509 | int poschodie; |
zdenka | 0:140ca5e86a6a | 510 | if(cesta[0]=='4'){poschodie=4;} |
zdenka | 0:140ca5e86a6a | 511 | else if(cesta[0]=='3'){poschodie=3;} |
zdenka | 0:140ca5e86a6a | 512 | else if(cesta[0]=='2'){poschodie=2;} |
zdenka | 0:140ca5e86a6a | 513 | else if(cesta[0]=='1'){poschodie=1;} |
zdenka | 0:140ca5e86a6a | 514 | else if(cesta[0]=='P'){poschodie=0;} |
zdenka | 0:140ca5e86a6a | 515 | |
zdenka | 0:140ca5e86a6a | 516 | spustiVytah(poschodie); |
zdenka | 0:140ca5e86a6a | 517 | ////////////////////////////////////////////////////////////////////////// |
zdenka | 0:140ca5e86a6a | 518 | |
zdenka | 0:140ca5e86a6a | 519 | ///////////////////////zobrazim poschodie////////////////////////////////// |
zdenka | 0:140ca5e86a6a | 520 | zobrazPoschodie(kdesom); |
zdenka | 0:140ca5e86a6a | 521 | ////////////////////////////////////////////////////////////////////////////////// |
zdenka | 0:140ca5e86a6a | 522 | |
zdenka | 0:140ca5e86a6a | 523 | |
zdenka | 0:140ca5e86a6a | 524 | }//ak je dalsia poziadavka |
zdenka | 0:140ca5e86a6a | 525 | |
zdenka | 0:140ca5e86a6a | 526 | }//ak je sprava od switchu na poschodi kde zastavujem |
zdenka | 0:140ca5e86a6a | 527 | else{ |
zdenka | 0:140ca5e86a6a | 528 | zobrazPoschodie(kdesom); |
zdenka | 0:140ca5e86a6a | 529 | } |
zdenka | 0:140ca5e86a6a | 530 | }//posledny if |
zdenka | 0:140ca5e86a6a | 531 | }//ak je cela sprava |
zdenka | 0:140ca5e86a6a | 532 | }//while |
zdenka | 0:140ca5e86a6a | 533 | }//koniec mainu |
zdenka | 0:140ca5e86a6a | 534 | ///////////////////////////////////////////nadefinovane funkcie////////////////////////////////////////////////// |
zdenka | 0:140ca5e86a6a | 535 | void zasvietDiodu(char ktoru){ |
zdenka | 0:140ca5e86a6a | 536 | ///////////vytvaram spravu na poslanie/////////////////////// |
zdenka | 0:140ca5e86a6a | 537 | char zapnutieDiody[6]; |
zdenka | 0:140ca5e86a6a | 538 | zapnutieDiody[0]=0xA0; |
zdenka | 0:140ca5e86a6a | 539 | zapnutieDiody[1]=ktoru; |
zdenka | 0:140ca5e86a6a | 540 | zapnutieDiody[2]=MOJA_ADRESA; |
zdenka | 0:140ca5e86a6a | 541 | zapnutieDiody[3]=0x01; |
zdenka | 0:140ca5e86a6a | 542 | zapnutieDiody[4]=0x01; |
zdenka | 0:140ca5e86a6a | 543 | crc=0; |
zdenka | 0:140ca5e86a6a | 544 | crc=ccc[crc^zapnutieDiody[1]]; |
zdenka | 0:140ca5e86a6a | 545 | crc=ccc[crc^zapnutieDiody[2]]; |
zdenka | 0:140ca5e86a6a | 546 | crc=ccc[crc^zapnutieDiody[4]]; |
zdenka | 0:140ca5e86a6a | 547 | zapnutieDiody[5]=crc; |
zdenka | 0:140ca5e86a6a | 548 | ///posielam spravu kym bude opakuj==1////////// |
zdenka | 0:140ca5e86a6a | 549 | int opakuj=1; |
zdenka | 0:140ca5e86a6a | 550 | while(opakuj==1){ |
zdenka | 0:140ca5e86a6a | 551 | //odstranPotvrdenia(); |
zdenka | 0:140ca5e86a6a | 552 | /////////posielam spravu/////////// |
zdenka | 0:140ca5e86a6a | 553 | for(int p=0;p<=5;p++){ |
zdenka | 0:140ca5e86a6a | 554 | pc.putc(zapnutieDiody[p]); |
zdenka | 0:140ca5e86a6a | 555 | } |
zdenka | 0:140ca5e86a6a | 556 | ////////////////////////////////////// |
zdenka | 0:140ca5e86a6a | 557 | |
zdenka | 0:140ca5e86a6a | 558 | //////////////////kym ubehne cas zistujem ci sa niekde v poli prijatych znakov nenachadza potvrdenie |
zdenka | 0:140ca5e86a6a | 559 | timer.start(); |
zdenka | 0:140ca5e86a6a | 560 | int pocetDat=0; |
zdenka | 0:140ca5e86a6a | 561 | int br; |
zdenka | 0:140ca5e86a6a | 562 | int milisecStart = timer.read_ms(); |
zdenka | 0:140ca5e86a6a | 563 | while((timer.read_ms()-milisecStart)<100){//kym je ubehnuty cas mensi ako 100 milisekund |
zdenka | 0:140ca5e86a6a | 564 | br=0; |
zdenka | 0:140ca5e86a6a | 565 | |
zdenka | 0:140ca5e86a6a | 566 | if(indexcitania<=indexzapisu){ |
zdenka | 0:140ca5e86a6a | 567 | pocetDat=indexzapisu-indexcitania; |
zdenka | 0:140ca5e86a6a | 568 | }else{ |
zdenka | 0:140ca5e86a6a | 569 | pocetDat=(199-indexcitania+1)+indexzapisu; |
zdenka | 0:140ca5e86a6a | 570 | } |
zdenka | 0:140ca5e86a6a | 571 | if(pocetDat>=5){ |
zdenka | 0:140ca5e86a6a | 572 | for(int i=0;i<pocetDat-4;i++){ |
zdenka | 0:140ca5e86a6a | 573 | if(kruhovybuffer[(indexcitania+i)%200]==0xA0&&kruhovybuffer[(indexcitania+1+i)%200]==0x00&&kruhovybuffer[(indexcitania+2+i)%200]==0x00&&kruhovybuffer[(indexcitania+3+i)%200]==0x00&&kruhovybuffer[(indexcitania+4+i)%200]==0x00){ |
zdenka | 0:140ca5e86a6a | 574 | if(i!=0){ |
zdenka | 0:140ca5e86a6a | 575 | for(int j=i-1;j>=0;j--){//pojde od indexu kde sa potvrdzovacia sprava nasla az po index citania |
zdenka | 0:140ca5e86a6a | 576 | int odkial=(indexcitania+j)%200; |
zdenka | 0:140ca5e86a6a | 577 | int kam=(odkial+5)%200; |
zdenka | 0:140ca5e86a6a | 578 | kruhovybuffer[kam]=kruhovybuffer[odkial]; |
zdenka | 0:140ca5e86a6a | 579 | } |
zdenka | 0:140ca5e86a6a | 580 | } |
zdenka | 0:140ca5e86a6a | 581 | indexcitania=(indexcitania+5)%200; |
zdenka | 0:140ca5e86a6a | 582 | br=1; |
zdenka | 0:140ca5e86a6a | 583 | opakuj=0; |
zdenka | 0:140ca5e86a6a | 584 | break; |
zdenka | 0:140ca5e86a6a | 585 | } |
zdenka | 0:140ca5e86a6a | 586 | } |
zdenka | 0:140ca5e86a6a | 587 | } |
zdenka | 0:140ca5e86a6a | 588 | if(br==1){break;} |
zdenka | 0:140ca5e86a6a | 589 | |
zdenka | 0:140ca5e86a6a | 590 | } |
zdenka | 0:140ca5e86a6a | 591 | timer.stop(); |
zdenka | 0:140ca5e86a6a | 592 | timer.reset(); |
zdenka | 0:140ca5e86a6a | 593 | }//while opakuj==1 |
zdenka | 0:140ca5e86a6a | 594 | } |
zdenka | 0:140ca5e86a6a | 595 | |
zdenka | 0:140ca5e86a6a | 596 | |
zdenka | 0:140ca5e86a6a | 597 | void zastavVytah(){ |
zdenka | 0:140ca5e86a6a | 598 | char poleznakov[6]; |
zdenka | 0:140ca5e86a6a | 599 | poleznakov[0]=0xA0; |
zdenka | 0:140ca5e86a6a | 600 | poleznakov[1]=MOTOR; |
zdenka | 0:140ca5e86a6a | 601 | poleznakov[2]=MOJA_ADRESA; |
zdenka | 0:140ca5e86a6a | 602 | poleznakov[3]=0x01; |
zdenka | 0:140ca5e86a6a | 603 | poleznakov[4]=0x1; |
zdenka | 0:140ca5e86a6a | 604 | crc=0; |
zdenka | 0:140ca5e86a6a | 605 | crc=ccc[crc^poleznakov[1]]; |
zdenka | 0:140ca5e86a6a | 606 | crc=ccc[crc^poleznakov[2]]; |
zdenka | 0:140ca5e86a6a | 607 | crc=ccc[crc^poleznakov[4]]; |
zdenka | 0:140ca5e86a6a | 608 | poleznakov[5]=crc; |
zdenka | 0:140ca5e86a6a | 609 | |
zdenka | 0:140ca5e86a6a | 610 | |
zdenka | 0:140ca5e86a6a | 611 | int opakuj=1; |
zdenka | 0:140ca5e86a6a | 612 | while(opakuj==1){ |
zdenka | 0:140ca5e86a6a | 613 | //odstranPotvrdenia(); |
zdenka | 0:140ca5e86a6a | 614 | for(int p=0;p<=5;p++){ |
zdenka | 0:140ca5e86a6a | 615 | pc.putc(poleznakov[p]); |
zdenka | 0:140ca5e86a6a | 616 | } |
zdenka | 0:140ca5e86a6a | 617 | //////////////////kym ubehne cas zistujem ci sa niekde v poli prijatych znakov nenachadza |
zdenka | 0:140ca5e86a6a | 618 | timer.start(); |
zdenka | 0:140ca5e86a6a | 619 | int milisecStart = timer.read_ms(); |
zdenka | 0:140ca5e86a6a | 620 | int pocetDat=0; |
zdenka | 0:140ca5e86a6a | 621 | int br; |
zdenka | 0:140ca5e86a6a | 622 | while((timer.read_ms()-milisecStart)<100){//kym je ubehnuty cas mensi ako 100 milisekund |
zdenka | 0:140ca5e86a6a | 623 | br=0; |
zdenka | 0:140ca5e86a6a | 624 | if(indexcitania<=indexzapisu){ |
zdenka | 0:140ca5e86a6a | 625 | pocetDat=indexzapisu-indexcitania; |
zdenka | 0:140ca5e86a6a | 626 | }else{ |
zdenka | 0:140ca5e86a6a | 627 | pocetDat=(199-indexcitania+1)+indexzapisu; |
zdenka | 0:140ca5e86a6a | 628 | } |
zdenka | 0:140ca5e86a6a | 629 | for(int i=0;i<pocetDat-4;i++){ |
zdenka | 0:140ca5e86a6a | 630 | if(kruhovybuffer[(indexcitania+i)%200]==0xA0&&kruhovybuffer[(indexcitania+1+i)%200]==0x00&&kruhovybuffer[(indexcitania+2+i)%200]==0x00&&kruhovybuffer[(indexcitania+3+i)%200]==0x00&&kruhovybuffer[(indexcitania+4+i)%200]==0x00){ |
zdenka | 0:140ca5e86a6a | 631 | pc.putc(0xcc); |
zdenka | 0:140ca5e86a6a | 632 | if(i!=0){ |
zdenka | 0:140ca5e86a6a | 633 | for(int j=i-1;j>=0;j--){//pojde od indexu kde sa potvrdzovacia sprava nasla az po index citania |
zdenka | 0:140ca5e86a6a | 634 | //if(j==-1){j=99;} |
zdenka | 0:140ca5e86a6a | 635 | int odkial=(indexcitania+j)%200; |
zdenka | 0:140ca5e86a6a | 636 | int kam=(odkial+5)%200; |
zdenka | 0:140ca5e86a6a | 637 | kruhovybuffer[kam]=kruhovybuffer[odkial]; |
zdenka | 0:140ca5e86a6a | 638 | } |
zdenka | 0:140ca5e86a6a | 639 | } |
zdenka | 0:140ca5e86a6a | 640 | indexcitania=(indexcitania+5)%200; |
zdenka | 0:140ca5e86a6a | 641 | br=1; |
zdenka | 0:140ca5e86a6a | 642 | opakuj=0; |
zdenka | 0:140ca5e86a6a | 643 | break; |
zdenka | 0:140ca5e86a6a | 644 | } |
zdenka | 0:140ca5e86a6a | 645 | |
zdenka | 0:140ca5e86a6a | 646 | } |
zdenka | 0:140ca5e86a6a | 647 | if(br==1){break;} |
zdenka | 0:140ca5e86a6a | 648 | |
zdenka | 0:140ca5e86a6a | 649 | } |
zdenka | 0:140ca5e86a6a | 650 | timer.stop(); |
zdenka | 0:140ca5e86a6a | 651 | timer.reset(); |
zdenka | 0:140ca5e86a6a | 652 | }//while opakuj==1 |
zdenka | 0:140ca5e86a6a | 653 | } |
zdenka | 0:140ca5e86a6a | 654 | |
zdenka | 0:140ca5e86a6a | 655 | |
zdenka | 0:140ca5e86a6a | 656 | |
zdenka | 0:140ca5e86a6a | 657 | void zhasniDiodu(char ktoru){ |
zdenka | 0:140ca5e86a6a | 658 | |
zdenka | 0:140ca5e86a6a | 659 | char vypnutiediodyvnutri[6]; |
zdenka | 0:140ca5e86a6a | 660 | vypnutiediodyvnutri[0]=0xA0; |
zdenka | 0:140ca5e86a6a | 661 | vypnutiediodyvnutri[1]=ktoru; |
zdenka | 0:140ca5e86a6a | 662 | vypnutiediodyvnutri[2]=MOJA_ADRESA; |
zdenka | 0:140ca5e86a6a | 663 | vypnutiediodyvnutri[3]=0x01; |
zdenka | 0:140ca5e86a6a | 664 | vypnutiediodyvnutri[4]=0x00; |
zdenka | 0:140ca5e86a6a | 665 | crc=0; |
zdenka | 0:140ca5e86a6a | 666 | crc=ccc[crc^vypnutiediodyvnutri[1]]; |
zdenka | 0:140ca5e86a6a | 667 | crc=ccc[crc^vypnutiediodyvnutri[2]]; |
zdenka | 0:140ca5e86a6a | 668 | crc=ccc[crc^vypnutiediodyvnutri[4]]; |
zdenka | 0:140ca5e86a6a | 669 | vypnutiediodyvnutri[5]=crc; |
zdenka | 0:140ca5e86a6a | 670 | |
zdenka | 0:140ca5e86a6a | 671 | int opakuj=1; |
zdenka | 0:140ca5e86a6a | 672 | while(opakuj==1){ |
zdenka | 0:140ca5e86a6a | 673 | //odstranPotvrdenia(); |
zdenka | 0:140ca5e86a6a | 674 | for(int p=0;p<=5;p++){ |
zdenka | 0:140ca5e86a6a | 675 | pc.putc(vypnutiediodyvnutri[p]); |
zdenka | 0:140ca5e86a6a | 676 | } |
zdenka | 0:140ca5e86a6a | 677 | //////////////////kym ubehne cas zistujem ci sa niekde v poli prijatych znakov nenachadza |
zdenka | 0:140ca5e86a6a | 678 | timer.start(); |
zdenka | 0:140ca5e86a6a | 679 | int milisecStart = timer.read_ms(); |
zdenka | 0:140ca5e86a6a | 680 | |
zdenka | 0:140ca5e86a6a | 681 | int br; |
zdenka | 0:140ca5e86a6a | 682 | while((timer.read_ms()-milisecStart)<100){//kym je ubehnuty cas mensi ako 100 milisekund |
zdenka | 0:140ca5e86a6a | 683 | br=0; |
zdenka | 0:140ca5e86a6a | 684 | int pocetDat=0; |
zdenka | 0:140ca5e86a6a | 685 | if(indexcitania<=indexzapisu){ |
zdenka | 0:140ca5e86a6a | 686 | pocetDat=indexzapisu-indexcitania; |
zdenka | 0:140ca5e86a6a | 687 | }else{ |
zdenka | 0:140ca5e86a6a | 688 | pocetDat=(199-indexcitania+1)+indexzapisu; |
zdenka | 0:140ca5e86a6a | 689 | } |
zdenka | 0:140ca5e86a6a | 690 | for(int i=0;i<pocetDat-4;i++){ |
zdenka | 0:140ca5e86a6a | 691 | if(kruhovybuffer[(indexcitania+i)%200]==0xA0&&kruhovybuffer[(indexcitania+1+i)%200]==0x00&&kruhovybuffer[(indexcitania+2+i)%200]==0x00&&kruhovybuffer[(indexcitania+3+i)%200]==0x00&&kruhovybuffer[(indexcitania+4+i)%200]==0x00){ |
zdenka | 0:140ca5e86a6a | 692 | pc.putc(0xcc); |
zdenka | 0:140ca5e86a6a | 693 | if(i!=0){ |
zdenka | 0:140ca5e86a6a | 694 | for(int j=i-1;j>=0;j--){//pojde od indexu kde sa potvrdzovacia sprava nasla az po index citania |
zdenka | 0:140ca5e86a6a | 695 | int odkial=(indexcitania+j)%200; |
zdenka | 0:140ca5e86a6a | 696 | int kam=(odkial+5)%200; |
zdenka | 0:140ca5e86a6a | 697 | kruhovybuffer[kam]=kruhovybuffer[odkial]; |
zdenka | 0:140ca5e86a6a | 698 | } |
zdenka | 0:140ca5e86a6a | 699 | } |
zdenka | 0:140ca5e86a6a | 700 | indexcitania=(indexcitania+5)%200; |
zdenka | 0:140ca5e86a6a | 701 | br=1; |
zdenka | 0:140ca5e86a6a | 702 | opakuj=0; |
zdenka | 0:140ca5e86a6a | 703 | break; |
zdenka | 0:140ca5e86a6a | 704 | } |
zdenka | 0:140ca5e86a6a | 705 | |
zdenka | 0:140ca5e86a6a | 706 | } |
zdenka | 0:140ca5e86a6a | 707 | if(br==1){break;} |
zdenka | 0:140ca5e86a6a | 708 | |
zdenka | 0:140ca5e86a6a | 709 | } |
zdenka | 0:140ca5e86a6a | 710 | timer.stop(); |
zdenka | 0:140ca5e86a6a | 711 | timer.reset(); |
zdenka | 0:140ca5e86a6a | 712 | }//while opakuj==1 |
zdenka | 0:140ca5e86a6a | 713 | } |
zdenka | 0:140ca5e86a6a | 714 | |
zdenka | 0:140ca5e86a6a | 715 | void zamkniVytah(){ |
zdenka | 0:140ca5e86a6a | 716 | |
zdenka | 0:140ca5e86a6a | 717 | char zamkni[6]; |
zdenka | 0:140ca5e86a6a | 718 | zamkni[0]=0xA0; |
zdenka | 0:140ca5e86a6a | 719 | zamkni[1]=ELEVATOR; |
zdenka | 0:140ca5e86a6a | 720 | zamkni[2]=MOJA_ADRESA; |
zdenka | 0:140ca5e86a6a | 721 | zamkni[3]=0x01; |
zdenka | 0:140ca5e86a6a | 722 | zamkni[4]=0x01; |
zdenka | 0:140ca5e86a6a | 723 | |
zdenka | 0:140ca5e86a6a | 724 | crc=0; |
zdenka | 0:140ca5e86a6a | 725 | crc=ccc[crc^zamkni[1]]; |
zdenka | 0:140ca5e86a6a | 726 | crc=ccc[crc^zamkni[2]]; |
zdenka | 0:140ca5e86a6a | 727 | crc=ccc[crc^zamkni[4]]; |
zdenka | 0:140ca5e86a6a | 728 | |
zdenka | 0:140ca5e86a6a | 729 | zamkni[5]=crc; |
zdenka | 0:140ca5e86a6a | 730 | |
zdenka | 0:140ca5e86a6a | 731 | int opakuj=1; |
zdenka | 0:140ca5e86a6a | 732 | while(opakuj==1){ |
zdenka | 0:140ca5e86a6a | 733 | //odstranPotvrdenia(); |
zdenka | 0:140ca5e86a6a | 734 | for(int p=0;p<=5;p++){ |
zdenka | 0:140ca5e86a6a | 735 | pc.putc(zamkni[p]); |
zdenka | 0:140ca5e86a6a | 736 | } |
zdenka | 0:140ca5e86a6a | 737 | //////////////////kym ubehne cas zistujem ci sa niekde v poli prijatych znakov nenachadza |
zdenka | 0:140ca5e86a6a | 738 | timer.start(); |
zdenka | 0:140ca5e86a6a | 739 | int milisecStart = timer.read_ms(); |
zdenka | 0:140ca5e86a6a | 740 | |
zdenka | 0:140ca5e86a6a | 741 | int br; |
zdenka | 0:140ca5e86a6a | 742 | while((timer.read_ms()-milisecStart)<100){//kym je ubehnuty cas mensi ako 100 milisekund |
zdenka | 0:140ca5e86a6a | 743 | br=0; |
zdenka | 0:140ca5e86a6a | 744 | int pocetDat=0; |
zdenka | 0:140ca5e86a6a | 745 | if(indexcitania<=indexzapisu){ |
zdenka | 0:140ca5e86a6a | 746 | pocetDat=indexzapisu-indexcitania; |
zdenka | 0:140ca5e86a6a | 747 | }else{ |
zdenka | 0:140ca5e86a6a | 748 | pocetDat=(199-indexcitania+1)+indexzapisu; |
zdenka | 0:140ca5e86a6a | 749 | } |
zdenka | 0:140ca5e86a6a | 750 | for(int i=0;i<pocetDat-4;i++){ |
zdenka | 0:140ca5e86a6a | 751 | if(kruhovybuffer[(indexcitania+i)%200]==0xA0&&kruhovybuffer[(indexcitania+1+i)%200]==0x00&&kruhovybuffer[(indexcitania+2+i)%200]==0x00&&kruhovybuffer[(indexcitania+3+i)%200]==0x00&&kruhovybuffer[(indexcitania+4+i)%200]==0x00){ |
zdenka | 0:140ca5e86a6a | 752 | pc.putc(0xcc); |
zdenka | 0:140ca5e86a6a | 753 | if(i!=0){ |
zdenka | 0:140ca5e86a6a | 754 | for(int j=/*((indexcitania+i)%100)-1*/i-1;j>=/*indexcitania*/0;j--){//pojde od indexu kde sa potvrdzovacia sprava nasla az po index citania |
zdenka | 0:140ca5e86a6a | 755 | //if(j==-1){j=99;} |
zdenka | 0:140ca5e86a6a | 756 | int odkial=(indexcitania+j)%200; |
zdenka | 0:140ca5e86a6a | 757 | int kam=(odkial+5)%200; |
zdenka | 0:140ca5e86a6a | 758 | kruhovybuffer[kam]=kruhovybuffer[odkial]; |
zdenka | 0:140ca5e86a6a | 759 | } |
zdenka | 0:140ca5e86a6a | 760 | } |
zdenka | 0:140ca5e86a6a | 761 | indexcitania=(indexcitania+5)%200; |
zdenka | 0:140ca5e86a6a | 762 | br=1; |
zdenka | 0:140ca5e86a6a | 763 | opakuj=0; |
zdenka | 0:140ca5e86a6a | 764 | break; |
zdenka | 0:140ca5e86a6a | 765 | } |
zdenka | 0:140ca5e86a6a | 766 | |
zdenka | 0:140ca5e86a6a | 767 | } |
zdenka | 0:140ca5e86a6a | 768 | if(br==1){break;} |
zdenka | 0:140ca5e86a6a | 769 | |
zdenka | 0:140ca5e86a6a | 770 | } |
zdenka | 0:140ca5e86a6a | 771 | timer.stop(); |
zdenka | 0:140ca5e86a6a | 772 | timer.reset(); |
zdenka | 0:140ca5e86a6a | 773 | }//while opakuj==1 |
zdenka | 0:140ca5e86a6a | 774 | } |
zdenka | 0:140ca5e86a6a | 775 | |
zdenka | 0:140ca5e86a6a | 776 | void odomkniVytah(){ |
zdenka | 0:140ca5e86a6a | 777 | |
zdenka | 0:140ca5e86a6a | 778 | char odomkni[6]; |
zdenka | 0:140ca5e86a6a | 779 | odomkni[0]=0xA0; |
zdenka | 0:140ca5e86a6a | 780 | odomkni[1]=ELEVATOR; |
zdenka | 0:140ca5e86a6a | 781 | odomkni[2]=MOJA_ADRESA; |
zdenka | 0:140ca5e86a6a | 782 | odomkni[3]=0x01; |
zdenka | 0:140ca5e86a6a | 783 | odomkni[4]=0x00; |
zdenka | 0:140ca5e86a6a | 784 | |
zdenka | 0:140ca5e86a6a | 785 | crc=0; |
zdenka | 0:140ca5e86a6a | 786 | crc=ccc[crc^odomkni[1]]; |
zdenka | 0:140ca5e86a6a | 787 | crc=ccc[crc^odomkni[2]]; |
zdenka | 0:140ca5e86a6a | 788 | crc=ccc[crc^odomkni[4]]; |
zdenka | 0:140ca5e86a6a | 789 | |
zdenka | 0:140ca5e86a6a | 790 | odomkni[5]=crc; |
zdenka | 0:140ca5e86a6a | 791 | |
zdenka | 0:140ca5e86a6a | 792 | int opakuj=1; |
zdenka | 0:140ca5e86a6a | 793 | while(opakuj==1){ |
zdenka | 0:140ca5e86a6a | 794 | //odstranPotvrdenia(); |
zdenka | 0:140ca5e86a6a | 795 | for(int p=0;p<=5;p++){ |
zdenka | 0:140ca5e86a6a | 796 | pc.putc(odomkni[p]); |
zdenka | 0:140ca5e86a6a | 797 | } |
zdenka | 0:140ca5e86a6a | 798 | //////////////////kym ubehne cas zistujem ci sa niekde v poli prijatych znakov nenachadza |
zdenka | 0:140ca5e86a6a | 799 | timer.start(); |
zdenka | 0:140ca5e86a6a | 800 | int milisecStart = timer.read_ms(); |
zdenka | 0:140ca5e86a6a | 801 | int pocetDat=0; |
zdenka | 0:140ca5e86a6a | 802 | int br; |
zdenka | 0:140ca5e86a6a | 803 | while((timer.read_ms()-milisecStart)<100){//kym je ubehnuty cas mensi ako 100 milisekund |
zdenka | 0:140ca5e86a6a | 804 | br=0; |
zdenka | 0:140ca5e86a6a | 805 | if(indexcitania<=indexzapisu){ |
zdenka | 0:140ca5e86a6a | 806 | pocetDat=indexzapisu-indexcitania; |
zdenka | 0:140ca5e86a6a | 807 | }else{ |
zdenka | 0:140ca5e86a6a | 808 | pocetDat=(199-indexcitania+1)+indexzapisu; |
zdenka | 0:140ca5e86a6a | 809 | } |
zdenka | 0:140ca5e86a6a | 810 | for(int i=0;i<pocetDat-4;i++){ |
zdenka | 0:140ca5e86a6a | 811 | if(kruhovybuffer[(indexcitania+i)%200]==0xA0&&kruhovybuffer[(indexcitania+1+i)%200]==0x00&&kruhovybuffer[(indexcitania+2+i)%200]==0x00&&kruhovybuffer[(indexcitania+3+i)%200]==0x00&&kruhovybuffer[(indexcitania+4+i)%200]==0x00){ |
zdenka | 0:140ca5e86a6a | 812 | pc.putc(0xcc); |
zdenka | 0:140ca5e86a6a | 813 | if(i!=0){ |
zdenka | 0:140ca5e86a6a | 814 | for(int j=i-1;j>=0;j--){//pojde od indexu kde sa potvrdzovacia sprava nasla az po index citania |
zdenka | 0:140ca5e86a6a | 815 | int odkial=(indexcitania+j)%200; |
zdenka | 0:140ca5e86a6a | 816 | int kam=(odkial+5)%200; |
zdenka | 0:140ca5e86a6a | 817 | kruhovybuffer[kam]=kruhovybuffer[odkial]; |
zdenka | 0:140ca5e86a6a | 818 | } |
zdenka | 0:140ca5e86a6a | 819 | } |
zdenka | 0:140ca5e86a6a | 820 | indexcitania=(indexcitania+5)%200; |
zdenka | 0:140ca5e86a6a | 821 | br=1; |
zdenka | 0:140ca5e86a6a | 822 | opakuj=0; |
zdenka | 0:140ca5e86a6a | 823 | break; |
zdenka | 0:140ca5e86a6a | 824 | } |
zdenka | 0:140ca5e86a6a | 825 | |
zdenka | 0:140ca5e86a6a | 826 | } |
zdenka | 0:140ca5e86a6a | 827 | if(br==1){break;} |
zdenka | 0:140ca5e86a6a | 828 | |
zdenka | 0:140ca5e86a6a | 829 | } |
zdenka | 0:140ca5e86a6a | 830 | timer.stop(); |
zdenka | 0:140ca5e86a6a | 831 | timer.reset(); |
zdenka | 0:140ca5e86a6a | 832 | }//while opakuj==1 |
zdenka | 0:140ca5e86a6a | 833 | } |
zdenka | 0:140ca5e86a6a | 834 | |
zdenka | 0:140ca5e86a6a | 835 | void zobrazPoschodie(char poschodie){ |
zdenka | 0:140ca5e86a6a | 836 | |
zdenka | 0:140ca5e86a6a | 837 | char infooposchodi[7]; |
zdenka | 0:140ca5e86a6a | 838 | infooposchodi[0]=0xA0; |
zdenka | 0:140ca5e86a6a | 839 | infooposchodi[1]=INF_DISPLAY; |
zdenka | 0:140ca5e86a6a | 840 | infooposchodi[2]=MOJA_ADRESA; |
zdenka | 0:140ca5e86a6a | 841 | infooposchodi[3]=0x02; |
zdenka | 0:140ca5e86a6a | 842 | infooposchodi[4]=smerpohybu; |
zdenka | 0:140ca5e86a6a | 843 | infooposchodi[5]=poschodie; |
zdenka | 0:140ca5e86a6a | 844 | |
zdenka | 0:140ca5e86a6a | 845 | crc=0; |
zdenka | 0:140ca5e86a6a | 846 | crc=ccc[crc^infooposchodi[1]]; |
zdenka | 0:140ca5e86a6a | 847 | crc=ccc[crc^infooposchodi[2]]; |
zdenka | 0:140ca5e86a6a | 848 | crc=ccc[crc^infooposchodi[4]]; |
zdenka | 0:140ca5e86a6a | 849 | crc=ccc[crc^infooposchodi[5]]; |
zdenka | 0:140ca5e86a6a | 850 | infooposchodi[6]=crc; |
zdenka | 0:140ca5e86a6a | 851 | |
zdenka | 0:140ca5e86a6a | 852 | int opakuj=1; |
zdenka | 0:140ca5e86a6a | 853 | while(opakuj==1){ |
zdenka | 0:140ca5e86a6a | 854 | //odstranPotvrdenia(); |
zdenka | 0:140ca5e86a6a | 855 | for(int p=0;p<=6;p++){ |
zdenka | 0:140ca5e86a6a | 856 | while(pc.writable()==0){} |
zdenka | 0:140ca5e86a6a | 857 | pc.putc(infooposchodi[p]); |
zdenka | 0:140ca5e86a6a | 858 | } |
zdenka | 0:140ca5e86a6a | 859 | //////////////////kym ubehne cas zistujem ci sa niekde v poli prijatych znakov nenachadza |
zdenka | 0:140ca5e86a6a | 860 | timer.start(); |
zdenka | 0:140ca5e86a6a | 861 | int milisecStart = timer.read_ms(); |
zdenka | 0:140ca5e86a6a | 862 | |
zdenka | 0:140ca5e86a6a | 863 | int br; |
zdenka | 0:140ca5e86a6a | 864 | while((timer.read_ms()-milisecStart)<100){//kym je ubehnuty cas mensi ako 100 milisekund |
zdenka | 0:140ca5e86a6a | 865 | br=0; |
zdenka | 0:140ca5e86a6a | 866 | int pocetDat=0; |
zdenka | 0:140ca5e86a6a | 867 | if(indexcitania<=indexzapisu){ |
zdenka | 0:140ca5e86a6a | 868 | pocetDat=indexzapisu-indexcitania; |
zdenka | 0:140ca5e86a6a | 869 | }else{ |
zdenka | 0:140ca5e86a6a | 870 | pocetDat=(199-indexcitania+1)+indexzapisu; |
zdenka | 0:140ca5e86a6a | 871 | } |
zdenka | 0:140ca5e86a6a | 872 | for(int i=0;i<pocetDat-4;i++){ |
zdenka | 0:140ca5e86a6a | 873 | if(kruhovybuffer[(indexcitania+i)%200]==0xA0&&kruhovybuffer[(indexcitania+1+i)%200]==0x00&&kruhovybuffer[(indexcitania+2+i)%200]==0x00&&kruhovybuffer[(indexcitania+3+i)%200]==0x00&&kruhovybuffer[(indexcitania+4+i)%200]==0x00){ |
zdenka | 0:140ca5e86a6a | 874 | pc.putc(0xcc); |
zdenka | 0:140ca5e86a6a | 875 | if(i!=0){ |
zdenka | 0:140ca5e86a6a | 876 | for(int j=i-1;j>=0;j--){//pojde od indexu kde sa potvrdzovacia sprava nasla az po index citania |
zdenka | 0:140ca5e86a6a | 877 | int odkial=(indexcitania+j)%200; |
zdenka | 0:140ca5e86a6a | 878 | int kam=(odkial+5)%200; |
zdenka | 0:140ca5e86a6a | 879 | kruhovybuffer[kam]=kruhovybuffer[odkial]; |
zdenka | 0:140ca5e86a6a | 880 | } |
zdenka | 0:140ca5e86a6a | 881 | } |
zdenka | 0:140ca5e86a6a | 882 | indexcitania=(indexcitania+5)%200; |
zdenka | 0:140ca5e86a6a | 883 | br=1; |
zdenka | 0:140ca5e86a6a | 884 | opakuj=0; |
zdenka | 0:140ca5e86a6a | 885 | break; |
zdenka | 0:140ca5e86a6a | 886 | } |
zdenka | 0:140ca5e86a6a | 887 | |
zdenka | 0:140ca5e86a6a | 888 | } |
zdenka | 0:140ca5e86a6a | 889 | if(br==1){break;} |
zdenka | 0:140ca5e86a6a | 890 | |
zdenka | 0:140ca5e86a6a | 891 | } |
zdenka | 0:140ca5e86a6a | 892 | timer.stop(); |
zdenka | 0:140ca5e86a6a | 893 | timer.reset(); |
zdenka | 0:140ca5e86a6a | 894 | }//while opakuj==1 |
zdenka | 0:140ca5e86a6a | 895 | } |
zdenka | 0:140ca5e86a6a | 896 | |
zdenka | 0:140ca5e86a6a | 897 | void spustiVytah(int nasledujucePoschodie){ |
zdenka | 0:140ca5e86a6a | 898 | |
zdenka | 0:140ca5e86a6a | 899 | char spravamotoru[10]; |
zdenka | 0:140ca5e86a6a | 900 | if(aktpozicia>nasledujucePoschodie){ |
zdenka | 0:140ca5e86a6a | 901 | spravamotoru[5]=0x9c; |
zdenka | 0:140ca5e86a6a | 902 | spravamotoru[6]=0xff; |
zdenka | 0:140ca5e86a6a | 903 | spravamotoru[7]=0xff; |
zdenka | 0:140ca5e86a6a | 904 | spravamotoru[8]=0xff; |
zdenka | 0:140ca5e86a6a | 905 | smerpohybu=0x02; |
zdenka | 0:140ca5e86a6a | 906 | }else if(aktpozicia<nasledujucePoschodie){ |
zdenka | 0:140ca5e86a6a | 907 | spravamotoru[5]=0x64; |
zdenka | 0:140ca5e86a6a | 908 | spravamotoru[6]=0x00; |
zdenka | 0:140ca5e86a6a | 909 | spravamotoru[7]=0x00; |
zdenka | 0:140ca5e86a6a | 910 | spravamotoru[8]=0x00; |
zdenka | 0:140ca5e86a6a | 911 | smerpohybu=0x01; |
zdenka | 0:140ca5e86a6a | 912 | } |
zdenka | 0:140ca5e86a6a | 913 | //pustam motor |
zdenka | 0:140ca5e86a6a | 914 | spravamotoru[0]=0xA0; |
zdenka | 0:140ca5e86a6a | 915 | spravamotoru[1]=MOTOR; |
zdenka | 0:140ca5e86a6a | 916 | spravamotoru[2]=MOJA_ADRESA; |
zdenka | 0:140ca5e86a6a | 917 | spravamotoru[3]=0x05; |
zdenka | 0:140ca5e86a6a | 918 | spravamotoru[4]=0x2; |
zdenka | 0:140ca5e86a6a | 919 | |
zdenka | 0:140ca5e86a6a | 920 | crc=0; |
zdenka | 0:140ca5e86a6a | 921 | crc=ccc[crc^spravamotoru[1]]; |
zdenka | 0:140ca5e86a6a | 922 | crc=ccc[crc^spravamotoru[2]]; |
zdenka | 0:140ca5e86a6a | 923 | crc=ccc[crc^spravamotoru[4]]; |
zdenka | 0:140ca5e86a6a | 924 | crc=ccc[crc^spravamotoru[5]]; |
zdenka | 0:140ca5e86a6a | 925 | crc=ccc[crc^spravamotoru[6]]; |
zdenka | 0:140ca5e86a6a | 926 | crc=ccc[crc^spravamotoru[7]]; |
zdenka | 0:140ca5e86a6a | 927 | crc=ccc[crc^spravamotoru[8]]; |
zdenka | 0:140ca5e86a6a | 928 | |
zdenka | 0:140ca5e86a6a | 929 | spravamotoru[9]=crc; |
zdenka | 0:140ca5e86a6a | 930 | |
zdenka | 0:140ca5e86a6a | 931 | int opakuj=1; |
zdenka | 0:140ca5e86a6a | 932 | while(opakuj==1){ |
zdenka | 0:140ca5e86a6a | 933 | // odstranPotvrdenia(); |
zdenka | 0:140ca5e86a6a | 934 | for(int p=0;p<=9;p++){ |
zdenka | 0:140ca5e86a6a | 935 | while(pc.writable()==0){} |
zdenka | 0:140ca5e86a6a | 936 | pc.putc(spravamotoru[p]); |
zdenka | 0:140ca5e86a6a | 937 | } |
zdenka | 0:140ca5e86a6a | 938 | |
zdenka | 0:140ca5e86a6a | 939 | //////////////////kym ubehne cas zistujem ci sa niekde v poli prijatych znakov nenachadza |
zdenka | 0:140ca5e86a6a | 940 | timer.start(); |
zdenka | 0:140ca5e86a6a | 941 | int milisecStart = timer.read_ms(); |
zdenka | 0:140ca5e86a6a | 942 | |
zdenka | 0:140ca5e86a6a | 943 | int br; |
zdenka | 0:140ca5e86a6a | 944 | while((timer.read_ms()-milisecStart)<100){//kym je ubehnuty cas mensi ako 100 milisekund |
zdenka | 0:140ca5e86a6a | 945 | br=0; |
zdenka | 0:140ca5e86a6a | 946 | int pocetDat=0; |
zdenka | 0:140ca5e86a6a | 947 | if(indexcitania<=indexzapisu){ |
zdenka | 0:140ca5e86a6a | 948 | pocetDat=indexzapisu-indexcitania; |
zdenka | 0:140ca5e86a6a | 949 | }else{ |
zdenka | 0:140ca5e86a6a | 950 | pocetDat=(199-indexcitania+1)+indexzapisu; |
zdenka | 0:140ca5e86a6a | 951 | } |
zdenka | 0:140ca5e86a6a | 952 | for(int i=0;i<pocetDat-4;i++){ |
zdenka | 0:140ca5e86a6a | 953 | if(kruhovybuffer[(indexcitania+i)%200]==0xA0&&kruhovybuffer[(indexcitania+1+i)%200]==0x00&&kruhovybuffer[(indexcitania+2+i)%200]==0x00&&kruhovybuffer[(indexcitania+3+i)%200]==0x00&&kruhovybuffer[(indexcitania+4+i)%200]==0x00){ |
zdenka | 0:140ca5e86a6a | 954 | pc.putc(0xcc); |
zdenka | 0:140ca5e86a6a | 955 | if(i!=0){ |
zdenka | 0:140ca5e86a6a | 956 | for(int j=i-1;j>=0;j--){//pojde od indexu kde sa potvrdzovacia sprava nasla az po index citania |
zdenka | 0:140ca5e86a6a | 957 | int odkial=(indexcitania+j)%200; |
zdenka | 0:140ca5e86a6a | 958 | int kam=(odkial+5)%200; |
zdenka | 0:140ca5e86a6a | 959 | kruhovybuffer[kam]=kruhovybuffer[odkial]; |
zdenka | 0:140ca5e86a6a | 960 | } |
zdenka | 0:140ca5e86a6a | 961 | } |
zdenka | 0:140ca5e86a6a | 962 | indexcitania=(indexcitania+5)%200; |
zdenka | 0:140ca5e86a6a | 963 | br=1; |
zdenka | 0:140ca5e86a6a | 964 | opakuj=0; |
zdenka | 0:140ca5e86a6a | 965 | break; |
zdenka | 0:140ca5e86a6a | 966 | } |
zdenka | 0:140ca5e86a6a | 967 | |
zdenka | 0:140ca5e86a6a | 968 | |
zdenka | 0:140ca5e86a6a | 969 | } |
zdenka | 0:140ca5e86a6a | 970 | if(br==1){break;} |
zdenka | 0:140ca5e86a6a | 971 | } |
zdenka | 0:140ca5e86a6a | 972 | timer.stop(); |
zdenka | 0:140ca5e86a6a | 973 | timer.reset(); |
zdenka | 0:140ca5e86a6a | 974 | }//while opakuj==1 |
zdenka | 0:140ca5e86a6a | 975 | } |
zdenka | 0:140ca5e86a6a | 976 | |
zdenka | 0:140ca5e86a6a | 977 | |
zdenka | 0:140ca5e86a6a | 978 | void watchdogReset(){ |
zdenka | 0:140ca5e86a6a | 979 | char watchdogRes[6]; |
zdenka | 0:140ca5e86a6a | 980 | watchdogRes[0]=0xA0; |
zdenka | 0:140ca5e86a6a | 981 | watchdogRes[1]=WATCHDOG_TIMER; |
zdenka | 0:140ca5e86a6a | 982 | watchdogRes[2]=MOJA_ADRESA; |
zdenka | 0:140ca5e86a6a | 983 | watchdogRes[3]=0x01; |
zdenka | 0:140ca5e86a6a | 984 | watchdogRes[4]=0x02; |
zdenka | 0:140ca5e86a6a | 985 | |
zdenka | 0:140ca5e86a6a | 986 | crc=0; |
zdenka | 0:140ca5e86a6a | 987 | crc=ccc[crc^watchdogRes[1]]; |
zdenka | 0:140ca5e86a6a | 988 | crc=ccc[crc^watchdogRes[2]]; |
zdenka | 0:140ca5e86a6a | 989 | crc=ccc[crc^watchdogRes[4]]; |
zdenka | 0:140ca5e86a6a | 990 | watchdogRes[5]=crc; |
zdenka | 0:140ca5e86a6a | 991 | |
zdenka | 0:140ca5e86a6a | 992 | for(int p=0;p<=5;p++){ |
zdenka | 0:140ca5e86a6a | 993 | while(pc.writable()==0){} |
zdenka | 0:140ca5e86a6a | 994 | pc.putc(watchdogRes[p]); |
zdenka | 0:140ca5e86a6a | 995 | } |
zdenka | 0:140ca5e86a6a | 996 | |
zdenka | 0:140ca5e86a6a | 997 | } |
zdenka | 0:140ca5e86a6a | 998 | |
zdenka | 0:140ca5e86a6a | 999 | void odstranPotvrdenia(){ |
zdenka | 0:140ca5e86a6a | 1000 | //////////////////kym ubehne cas zistujem ci sa niekde v poli prijatych znakov nenachadza |
zdenka | 0:140ca5e86a6a | 1001 | int br=0; |
zdenka | 0:140ca5e86a6a | 1002 | while(br==0){ |
zdenka | 0:140ca5e86a6a | 1003 | int pocetDat=0; |
zdenka | 0:140ca5e86a6a | 1004 | if(indexcitania<=indexzapisu){ |
zdenka | 0:140ca5e86a6a | 1005 | pocetDat=indexzapisu-indexcitania; |
zdenka | 0:140ca5e86a6a | 1006 | }else{ |
zdenka | 0:140ca5e86a6a | 1007 | pocetDat=(199-indexcitania+1)+indexzapisu; |
zdenka | 0:140ca5e86a6a | 1008 | } |
zdenka | 0:140ca5e86a6a | 1009 | for(int i=0;i<pocetDat-4;i++){ |
zdenka | 0:140ca5e86a6a | 1010 | if(kruhovybuffer[(indexcitania+i)%200]==0xA0&&kruhovybuffer[(indexcitania+1+i)%200]==0x00&&kruhovybuffer[(indexcitania+2+i)%200]==0x00&&kruhovybuffer[(indexcitania+3+i)%200]==0x00&&kruhovybuffer[(indexcitania+4+i)%200]==0x00){ |
zdenka | 0:140ca5e86a6a | 1011 | pc.putc(0xbb); |
zdenka | 0:140ca5e86a6a | 1012 | if(i!=0){ |
zdenka | 0:140ca5e86a6a | 1013 | for(int j=i-1;j>=0;j--){//pojde od indexu kde sa potvrdzovacia sprava nasla az po index citania |
zdenka | 0:140ca5e86a6a | 1014 | int odkial=(indexcitania+j)%200; |
zdenka | 0:140ca5e86a6a | 1015 | int kam=(odkial+5)%200; |
zdenka | 0:140ca5e86a6a | 1016 | kruhovybuffer[kam]=kruhovybuffer[odkial]; |
zdenka | 0:140ca5e86a6a | 1017 | } |
zdenka | 0:140ca5e86a6a | 1018 | } |
zdenka | 0:140ca5e86a6a | 1019 | indexcitania=(indexcitania+5)%200; |
zdenka | 0:140ca5e86a6a | 1020 | break; |
zdenka | 0:140ca5e86a6a | 1021 | } |
zdenka | 0:140ca5e86a6a | 1022 | |
zdenka | 0:140ca5e86a6a | 1023 | if(i==pocetDat-5){ |
zdenka | 0:140ca5e86a6a | 1024 | br=1; |
zdenka | 0:140ca5e86a6a | 1025 | } |
zdenka | 0:140ca5e86a6a | 1026 | } |
zdenka | 0:140ca5e86a6a | 1027 | } |
zdenka | 0:140ca5e86a6a | 1028 | |
zdenka | 0:140ca5e86a6a | 1029 | } |