control simulation of elevator

Dependencies:   mbed TSI

bezpecnost.cpp

Committer:
kicin2
Date:
2019-01-23
Revision:
1:7dea46c9d8dc
Parent:
0:62c18ef61b61

File content as of revision 1:7dea46c9d8dc:

/** 
*   @file bezpecnost.cpp 
*   @brief Súbor obsahuje funkcie ktoré zabezpečujú bezpečnosť výťahu
*   @author Benedikt Kicin
*   @date 21.1.2018
*/

#include "mbed.h"
#include "TSISensor.h"
#include "komunikacia.h"

Ticker timerEmerg; //timer pre Emergency Break
Ticker timerWatch; //timer pre WatchDog
TSISensor tsi; //capacitive touch slider

float pomTSIBreak;
PwmOut led(LED_BLUE);

/**
* Funkcia ktorá odošle paket pre aktiváciu Bezpečnostnej brzdy
*/
void Emergency()
{                                               //komu;  od koho; kto ma vykonat; 1b; aktivovat brzdu   
    int packet0[]= {0xA0,0xf,0x00,0x01,0x01};   //doska; emergBreak; vytah; velkost dat; data-activate
    sendTo(packet0);
}

/**
* Funkcia ktorá odošle paket pre deaktiváciu Bezpečnostnej brzdy
*/
void EmergencyDeact()
{
    pomTSIBreak=0;
    int packet0[]= {0xA0,0xf,0x00,0x01,0x00};
    sendTo(packet0);
}

/**
* Funkcia ktorá odošle Sledovaciemu zariadeniu - WatchDog-u packet pre reset
*/
void WatchDogReset()  //1 - reset , else - ticker
{
    int packet0[]= {0xA0,0xfe,0x00,0x01,0x01}; ///tu odosielam packet pre reset watchdou
    sendTo(packet0);
}

/**
* Funkciaktorá pravidelne odosiela WatchDog-u paket pre udržanie behu programu
*/
void WatchDog()
{
    int packet0[]= {0xA0,0xfe,0x00,0x01,0x02};
    sendTo(packet0);
}

/**
* Funkcia, ktorá deteguje na TSI senzore náraz a vyvolá Bezpečnostnú brzdu
*/
void TSIBreak()
{
    pomTSIBreak += tsi.readPercentage(); 
    led = 1.0 - tsi.readPercentage(); 
    if(pomTSIBreak > 0.1) Emergency();
    
}

/**
* Obsluha prerušenia pre Bezpečnostnú brzdu zastavenia výťahu a WatchDogu
*/
void EmergBreak()
{
    EmergencyDeact();
    WatchDogReset();
    timerWatch.attach(&WatchDog,1.0);
    timerEmerg.attach(&TSIBreak,1.0);
}