Benedikt Kicin, vytah semestralka

Dependencies:   mbed

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
      }
    }

}