Benedikt Kičin
/
kicin2vytah
Diff: vytah.cpp
- Revision:
- 0:2574b54351ed
- Child:
- 1:5e6b55099364
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/vytah.cpp Wed Jan 24 07:55:50 2018 +0000 @@ -0,0 +1,119 @@ +/*! + * \file vytah.cpp + * \author Benedikt Kicin + * Subor vytah.cpp sluzi na obsluhu vytahu a jeho casti - zamknut,smer,reset,stop,brzdy,chod na poschodie..*/ + +#include "vytah.h" + + +bool zamknute = false; +unsigned char aktPoschodie = 4; +unsigned char smer; +MMA8451Q acc(PTE25, PTE24, MMA8451_I2C_ADDRESS); + +/** +*Funkcia zamkni vytah +*/ +void zamkni() +{ + posliBajt(0xf0, 0x01); //vytah, zamkni dvere + zamknute = true; +} + +/** +*Funkcia odomkni vytah +*/ +void odomkni() +{ + posliBajt(0xf0, 0x00); //vytah, odomkni dvere + zamknute = false; +} + +/** +*Funkcia zastav vytah +*/ +void stop() +{ + posliBajt(0xf1, 0x01); //motor, stop +} + +/** +*Funkcia resetovanie sprav pre kontrolu spojenia +*/ +void resetujSpravuWD() +{ + posliBajt(0xfe, 0x01); //watchdog, reset watchdog timer +} + +/** +*Funkcia posli spravu pre kontrolu spojenia +*/ +void posliSpravuWD() +{ + posliBajt(0xfe, 0x02); //watchdog, ina sprava +} + +/** +*Funkcia vypni brzdy +*/ +void vypniBrzdu() +{ + posliBajt(0x0f, 0x00); //emergency break, deaktivovane +} + +/** +*Funkcia zapni brzdy +*/ +void zapniBrzdu() +{ + posliBajt(0x0f,0x01); //emergency break, aktivovana brzda +} + +/** +*Funkcia na poslanie vytahu na zadane poschodie +*@param cisloPoschodia - cislo poschodia na ktore vytah pojde +*/ +void chodNaPoschodie(unsigned char cisloPoschodia) +{ + int pohyb; //rychlost pohybu + unsigned char poleR[5]; //inicializacia 5 poli + + if(aktPoschodie != cisloPoschodia){ //zamknutie vytahu ked nie je na spravnom poschodi + + zamkni(); + + if(cisloPoschodia < aktPoschodie){ //ak je vytah na vyssom poschodi ako sme my + pohyb = -100; //chod dole + } + else{ //inak + pohyb = 100; //chod hore + } + + switch(pohyb){ //rychlost pohybu + case -100: //hodnoty rychlosti v bin tvare + poleR[0] = 0x02; //0000 0010 + poleR[1] = 0x9C; //1001 1100 + poleR[2] = 0xFF; //1111 1111 + poleR[3] = 0xFF; + poleR[4] = 0xFF; + break; + case 100 : + poleR[0] = 0x02; + poleR[1] = 0x64; //0110 0100 + poleR[2] = 0x00; //0000 0000 + poleR[3] = 0x00; + poleR[4] = 0x00; + break; + } + + posliPaket(0xF1,0x05,poleR); //prijimatel: motor, dlzka pola: 5, poleR + + if(cisloPoschodia > aktPoschodie){ + smer = 0x01; //sipka hore + } + else{ + smer = 0x02; //sipka dole + } + } + +}