
Benedikt Kicin, vytah semestralka
vytah.cpp
- Committer:
- kicin2
- Date:
- 2018-01-24
- Revision:
- 1:5e6b55099364
- Parent:
- 0:2574b54351ed
File content as of revision 1:5e6b55099364:
/*! * \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... 0x02 motor pohyb... 0x03 pocitadlo motora } /** *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 if(aktPoschodie != cisloPoschodia){ //zamknutie vytahu ked nie je na spravnom poschodi zamkni(); if(cisloPoschodia < aktPoschodie){ //ak je vytah na vyssom(alebo naopak) poschodi ako by mal byt pohyb = -100; //chod dole } else{ //inak pohyb = 100; //chod hore } switch(pohyb){ //rychlost pohybu case -100: //hodnoty 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 } } }