Roman Ciesarík
/
Semestralna_praca_Roman_Ciesarik
Semestrálna práca VÝTAH Roman Ciesarík
Diff: main.cpp
- Revision:
- 6:83b531eead03
- Parent:
- 5:c1952cbf8111
- Child:
- 7:8786833154ff
--- a/main.cpp Thu Jan 04 23:04:53 2018 +0000 +++ b/main.cpp Fri Jan 05 21:10:58 2018 +0000 @@ -20,7 +20,7 @@ #define POSCHODIE_BUTTON_3 0xc3 // |-----------| #define POSCHODIE_BUTTON_4 0xc4 // └-----------┘ -#define VYTAH_DIODA_P 0x20 // ┌--------------------------┐ +#define VYTAH_DIODA_P 0x20 // ┌--------------------------┐ #define VYTAH_DIODA_1 0x21 // | DATA 0x00-> OFF 0x01->ON | #define VYTAH_DIODA_2 0x22 // |--------------------------| #define VYTAH_DIODA_3 0x23 // |--------------------------| @@ -35,7 +35,7 @@ #define VYTAH 0xf0 // DATA 0x00-> UNLOCK 0x01-> LOCK #define BRZDA 0xf // DATA 0x00-> DEACTIVATE 0x01-> ACTIVATE -#define FLOOR_LIMIT_SWITCH_P 0xe0 // ┌------------------------------------------┐ +#define FLOOR_LIMIT_SWITCH_P 0xe0 // ┌------------------------------------------┐ #define FLOOR_LIMIT_SWITCH_1 0xe1 // | DATA 0x00-> LOW 0x01->WIDE 0x02-> NARROW | #define FLOOR_LIMIT_SWITCH_2 0xe2 // |------------------------------------------| #define FLOOR_LIMIT_SWITCH_3 0xe3 // |------------------------------------------| @@ -76,63 +76,71 @@ char demo[]= {1,2,3,4,5,6}; char prijemSpravy[30]; -char diode_DATA[]={0x00,0x01}; -int diode_cislo[]={0,0,0,0,0}; +char diode_DATA[]= {0x00,0x01}; +int diode_cislo[]= {0,0,0,0,0}; int stav=5; -int poradie[]={0,0,0,0,0}; +int poradie[]= {0,0,0,0,0}; int zar=0; int por=0; +//int kk=0; int main() { pc.attach(&prijmemSpravu); //dole(); -while(true) -{ - - rozhodni(); - /* for(int i=0;i<5;i++) - if(diode_cislo[i]!=0) - { - if(i<stav){dole();break;} - else {hore();break;} + while(true) { + + //rozhodni(); + /* for(int i=0;i<5;i++) + if(diode_cislo[i]!=0) + { + if(i<stav){dole();break;} + else {hore();break;} + } + */ + + while(true) { + + if (por<5) { + pc.attach(&prijmemSpravu); + pohyb(poradie[por]); + + por++; + } else { + por=0; + pohyb(poradie[por]); + } } - */ + - - /*stop(); - wait(1); - hore();*/ -} + + } } void zarad(int co) { - if (zar<5) - { - poradie[zar]=co; - zar++; - } - else - { + if (zar<5) { + poradie[zar]=co; + zar++; + } else { poradie[0]=co; zar=1; } } -void pohyb( ) +void pohyb(int kam ) { zamkni(); - if (stav < poradie[por]) hore(); - if (stav > poradie[por]) dole(); + if (stav < kam) { pc.attach(&prijmemSpravu);hore();} + if (stav > kam) { pc.attach(&prijmemSpravu);dole();} /* switch(stav) { case 5: dole(); break; - case 4: + case 4: if(diode_cislo[4]==1) break; case 3: break; @@ -166,208 +174,274 @@ void hore() { char DATA[]= {0x02,0x64,0x00,0x00,0x00}; - poslemSpravu(MOTOR,0xcc,sizeof(DATA),DATA); + poslemSpravu(MOTOR,0xcc,sizeof(DATA),DATA); } void dole() { char DATA[]= {0x02,0x9c,0xff,0xff,0xff}; poslemSpravu(MOTOR,0xcc,sizeof(DATA),DATA); + pc.attach(&prijmemSpravu); } void prijmemSpravu() { - //pc.attach(&prijmemSpravu); - for (int j=0;j<4;j++) - { - while(true) - { - if(pc.readable()==1) - { - prijemSpravy[j]=pc.getc(); - break; + for (int j=0; j<4; j++) { + while(true) { + if(pc.readable()==1) { + prijemSpravy[j]=pc.getc(); + break; } - } + } + } + + int pom= prijemSpravy[3] + 1; + + for (int j=0; j<pom; j++) { + while(true) { + if(pc.readable()==1) { + prijemSpravy[j+4]=pc.getc(); + break; + } + } } - int pom= prijemSpravy[3] + 1; + rozhodni(); - for (int j=0;j<pom;j++) - { - while(true) - { - if(pc.readable()==1) - { - prijemSpravy[j+4]=pc.getc(); - break; - } - } - } - pc.attach(&prijmemSpravu); + pc.attach(&prijmemSpravu); } /* void obsluz(int cislo) { poslemSpravu(VYTAH_DIODA_4,0xCC,0x01, &diode_DATA[1]); - diode_cislo[4]=1; + diode_cislo[4]=1; zamkni(); - + } */ void rozhodni() { - switch(prijemSpravy[2]) - { + switch(prijemSpravy[2]) { + case 0xb4: /* vytah tla4idlo 4 poschodie */ - if (diode_cislo[4]==0) { zarad(4);} + if (diode_cislo[4]==0) { + zarad(4); + } poslemSpravu(VYTAH_DIODA_4,0xCC,0x01, &diode_DATA[1]); - diode_cislo[4]=1; - + diode_cislo[4]=1; + + break; + + case 0xb3: /* vytah tla4idlo 3 poschodie */ + + if (diode_cislo[3]==0) { + zarad(3); + } + poslemSpravu(VYTAH_DIODA_3,0xCC,0x01, &diode_DATA[1]); + diode_cislo[3]=1; + + break; + + case 0xb2: /* vytah tla4idlo 2 poschodie */ + + if (diode_cislo[2]==0) { + zarad(2); + } + poslemSpravu(VYTAH_DIODA_2,0xCC,0x01, &diode_DATA[1]); + diode_cislo[2]=1; + + break; + + case 0xb1: /* vytah tla4idlo 1 poschodie */ + + if (diode_cislo[1]==0) { + zarad(1); + } + poslemSpravu(VYTAH_DIODA_1,0xCC,0x01, &diode_DATA[1]); + diode_cislo[1]=1; + + break; + + case 0xb0: /* vytah tla4idlo pr9zemie */ + + if (diode_cislo[0]==0) { + zarad(0); + } + poslemSpravu(VYTAH_DIODA_P,0xCC,0x01, &diode_DATA[1]); + diode_cislo[0]=1; + + break; + + case 0xc4: /* chodba tla4idlo 4 poschodie */ + + if (diode_cislo[4]==0) { + zarad(4); + } + poslemSpravu(POSCHODIE_DIODA_4,0xCC,0x01, &diode_DATA[1]); + diode_cislo[4]=1; + + break; + + case 0xc3: /* chodba tla4idlo 3 poschodie */ + + if (diode_cislo[3]==0) { + zarad(3); + } + poslemSpravu(POSCHODIE_DIODA_3,0xCC,0x01, &diode_DATA[1]); + diode_cislo[3]=1; + + break; + + case 0xc2: /* chodba tla4idlo 2 poschodie */ + + if (diode_cislo[2]==0) { + zarad(2); + } + poslemSpravu(POSCHODIE_DIODA_2,0xCC,0x01, &diode_DATA[1]); + diode_cislo[2]=1; + + break; + + case 0xc1: /* chodba tla4idlo 1 poschodie */ + + if (diode_cislo[1]==0) { + zarad(1); + } + poslemSpravu(POSCHODIE_DIODA_1,0xCC,0x01, &diode_DATA[1]); + diode_cislo[1]=1; + + break; + + case 0xc0: /* chodba tla4idlo pr9zemie */ + + if (diode_cislo[0]==0) { + zarad(0); + } + poslemSpravu(POSCHODIE_DIODA_P,0xCC,0x01, &diode_DATA[1]); + diode_cislo[0]=1; + + break; + + + + + case 0xe4: /* info pre odomknutie 4 poschodie */ + + if(poradie[por]==4) { + + if(prijemSpravy[4]==0x01&&diode_cislo[4]==1) { + stop(); + poslemSpravu(VYTAH_DIODA_4,0xCC,0x01, &diode_DATA[0]); + poslemSpravu(POSCHODIE_DIODA_4,0xCC,0x01, &diode_DATA[0]); + diode_cislo[4]=0; + stav=4; + } + if(prijemSpravy[4]==0x02&&stav==4) { + wait(1); + odomkni(); + //por++; + } + } + + break; + + case 0xe3: /* info pre odomknutie 3 poschodie */ - - break; - - case 0xb3: /* vytah tla4idlo 3 poschodie */ - poslemSpravu(VYTAH_DIODA_3,0xCC,0x01, &diode_DATA[1]); - diode_cislo[3]=1; - zamkni(); - if (stav <3) hore(); - if (stav >3) dole(); - break; - - case 0xb2: /* vytah tla4idlo 2 poschodie */ - poslemSpravu(VYTAH_DIODA_2,0xCC,0x01, &diode_DATA[1]); - diode_cislo[2]=1; - zamkni(); - if (stav <2) hore(); - if (stav >2) dole(); - break; - - case 0xb1: /* vytah tla4idlo 1 poschodie */ - poslemSpravu(VYTAH_DIODA_1,0xCC,0x01, &diode_DATA[1]); - diode_cislo[1]=1; - zamkni(); - if (stav <1) hore(); - if (stav >1) dole(); - break; + if(poradie[por]==3) { + // por++; - case 0xb0: /* vytah tla4idlo pr9zemie */ - poslemSpravu(VYTAH_DIODA_P,0xCC,0x01, &diode_DATA[1]); - diode_cislo[0]=1; - zamkni(); - if (stav <0) hore(); - if (stav >0) dole(); - break; - - case 0xc4: /* chodba tla4idlo 4 poschodie */ - poslemSpravu(POSCHODIE_DIODA_4,0xCC,0x01, &diode_DATA[1]); - diode_cislo[4]=1; - zamkni(); - if (stav <4) hore(); - if (stav >4) dole(); - break; - - case 0xc3: /* chodba tla4idlo 3 poschodie */ - poslemSpravu(POSCHODIE_DIODA_3,0xCC,0x01, &diode_DATA[1]); - diode_cislo[3]=1; - zamkni(); - if (stav <3) hore(); - if (stav >3) dole(); - break; - - case 0xc2: /* chodba tla4idlo 2 poschodie */ - poslemSpravu(POSCHODIE_DIODA_2,0xCC,0x01, &diode_DATA[1]); - diode_cislo[2]=1; - zamkni(); - if (stav <2) hore(); - if (stav >2) dole(); - break; - - case 0xc1: /* chodba tla4idlo 1 poschodie */ - poslemSpravu(POSCHODIE_DIODA_1,0xCC,0x01, &diode_DATA[1]); - diode_cislo[1]=1; - zamkni(); - if (stav <1) hore(); - if (stav >2) dole(); - break; + if(prijemSpravy[4]==0x01&&diode_cislo[3]==1) { + stop(); + poslemSpravu(VYTAH_DIODA_3,0xCC,0x01, &diode_DATA[0]); + poslemSpravu(POSCHODIE_DIODA_3,0xCC,0x01, &diode_DATA[0]); + diode_cislo[3]=0; + stav=3; + } + if(prijemSpravy[4]==0x02&&stav==3) { + wait(1); + odomkni(); + + } + + + } + break; + + case 0xe2: /* info pre odomknutie 2 poschodie */ - case 0xc0: /* chodba tla4idlo pr9zemie */ - poslemSpravu(POSCHODIE_DIODA_P,0xCC,0x01, &diode_DATA[1]); - diode_cislo[0]=1; - zamkni(); - if (stav <0) hore(); - if (stav >0) dole(); - //hore(); - break; - - - - - case 0xe4: /* info pre odomknutie 4 poschodie */ - - if(poradie[zar]==4) { - - if(prijemSpravy[4]==0x01&&diode_cislo[4]==1){stop(); - poslemSpravu(VYTAH_DIODA_4,0xCC,0x01, &diode_DATA[0]); - poslemSpravu(POSCHODIE_DIODA_4,0xCC,0x01, &diode_DATA[0]); - diode_cislo[4]=0; - stav=4;} - if(prijemSpravy[4]==0x02&&stav==4){wait(1);odomkni();} - } - - break; - - case 0xe3: /* info pre odomknutie 3 poschodie */ - if(prijemSpravy[4]==0x01&&diode_cislo[3]==1){stop(); - poslemSpravu(VYTAH_DIODA_3,0xCC,0x01, &diode_DATA[0]); - poslemSpravu(POSCHODIE_DIODA_3,0xCC,0x01, &diode_DATA[0]); - diode_cislo[3]=0; - stav=3;} - if(prijemSpravy[4]==0x02&&stav==3){wait(1);odomkni();} - break; + if(poradie[por]==2) { + + if(prijemSpravy[4]==0x01&&diode_cislo[2]==1) { + stop(); + poslemSpravu(VYTAH_DIODA_2,0xCC,0x01, &diode_DATA[0]); + poslemSpravu(POSCHODIE_DIODA_2,0xCC,0x01, &diode_DATA[0]); + diode_cislo[2]=0; + stav=2; + } + if(prijemSpravy[4]==0x02&&stav==2) { + wait(1); + odomkni(); + } + + } + + break; + + case 0xe1: /* info pre odomknutie 1 poschodie */ + if(poradie[por]==1) { + + if(prijemSpravy[4]==0x01&&diode_cislo[1]==1) { + stop(); + poslemSpravu(VYTAH_DIODA_1,0xCC,0x01, &diode_DATA[0]); + poslemSpravu(POSCHODIE_DIODA_1,0xCC,0x01, &diode_DATA[0]); + diode_cislo[1]=0; + stav=1; + } + if(prijemSpravy[4]==0x02&&stav==1) { + wait(1); + odomkni(); + } + + } + + break; + + case 0xe0: /* info pre odomknutie prízemie */ - case 0xe2: /* info pre odomknutie 2 poschodie */ - if(prijemSpravy[4]==0x01&&diode_cislo[2]==1){stop(); - poslemSpravu(VYTAH_DIODA_2,0xCC,0x01, &diode_DATA[0]); - poslemSpravu(POSCHODIE_DIODA_2,0xCC,0x01, &diode_DATA[0]); - diode_cislo[2]=0; - stav=2;} - if(prijemSpravy[4]==0x02&&stav==2){wait(1);odomkni();} - break; - - case 0xe1: /* info pre odomknutie 1 poschodie */ - if(prijemSpravy[4]==0x01&&diode_cislo[1]==1){stop(); - poslemSpravu(VYTAH_DIODA_1,0xCC,0x01, &diode_DATA[0]); - poslemSpravu(POSCHODIE_DIODA_1,0xCC,0x01, &diode_DATA[0]); - diode_cislo[1]=0; - stav=1;} - if(prijemSpravy[4]==0x02&&stav==1){wait(1);odomkni();} - break; - - case 0xe0: /* info pre odomknutie prízemie */ - if(prijemSpravy[4]==0x01&&diode_cislo[0]==1){stop(); - poslemSpravu(VYTAH_DIODA_P,0xCC,0x01, &diode_DATA[0]); - poslemSpravu(POSCHODIE_DIODA_P,0xCC,0x01, &diode_DATA[0]); - diode_cislo[0]=0; - stav=0;} - if(prijemSpravy[4]==0x02&&stav==0){wait(1);odomkni();} - break; - - - - - + if(poradie[por]==0) { + + if(prijemSpravy[4]==0x01&&diode_cislo[0]==1) { + stop(); + poslemSpravu(VYTAH_DIODA_P,0xCC,0x01, &diode_DATA[0]); + poslemSpravu(POSCHODIE_DIODA_P,0xCC,0x01, &diode_DATA[0]); + diode_cislo[0]=0; + stav=0; + } + if(prijemSpravy[4]==0x02&&stav==0) { + wait(1); + odomkni(); + } + + } + + break; + + + + + case 0xf: /* zachranna brzda */ - - break; - + + break; + case 0xfe: /* watchdog */ - - break; - default: break; - } + + break; + default: + break; + } } void poslemSpravu(char adrRX, char adrTX, int velkost, char DATA[] ) @@ -400,22 +474,18 @@ void kontrola() { - char kontrola[5]={0,0,0,0,0}; + char kontrola[5]= {0,0,0,0,0}; - for(int i=0;i<5;i++) - { - while(true) - { - if(pc.readable()==1) - { - kontrola[i]=pc.getc(); - break; - } + for(int i=0; i<5; i++) { + while(true) { + if(pc.readable()==1) { + kontrola[i]=pc.getc(); + break; } } - - if(kontrola[0]!=0xA0&&kontrola[1]!=0x00&&kontrola[2]!=0x00&&kontrola[3]!=0x00&&kontrola[4]!=0x00) - { - // poslemSpravu(); - } + } + + if(kontrola[0]!=0xA0&&kontrola[1]!=0x00&&kontrola[2]!=0x00&&kontrola[3]!=0x00&&kontrola[4]!=0x00) { + // poslemSpravu(); + } } \ No newline at end of file