Dependencies:   mbed

main.cpp

Committer:
kicin2
Date:
2018-01-24
Revision:
1:5e6b55099364
Parent:
0:2574b54351ed

File content as of revision 1:5e6b55099364:

/*!
 * \file main.cpp
 * \author Benedikt Kicin
 * subor main.cpp je hlavny subor aplikacie, inicializacia, reset, spustenie*/

#include "mbed.h"
#include "komunikacia.h"
#include "vytah.h"
#include "riadenie.h"
#include "nastavenia.h"
#include "MMA8451Q.h"


/**
*Hlavna funkcia riadenia celeho vytahu/programu
*/
int main(void)
{
  Ticker t; //na prerusenie aby mohol watchdog posielat spravy

  initCommunication();//nastavenie rychlosti komunikacie
  pc.attach(&prijmiPaket,Serial::RxIrq);  //prijimanie paketu cez prerusenie
  resetujSpravuWD();//obnovi watchdog pri opatovnom spusteni
  vypniBrzdu();//vypne ochrannu/nudzovu brzdu
  NVIC_SetPriority(LPTimer_IRQn, 255);//nastavenie priority, nastav tickeru najnizsiu prioritu aby vedel dostat ACK na prerusenie   
  t.attach(&posliSpravuWD, 1.4);//kazdu 1,5s odosle spravu watchdogu (+testovane na 1,4s)
  //NVIC_SetPriority(PORTC_PORTD_IRQn, 255);//nastavenie priority
  acc.MotionDetection(&zapniBrzdu);//prerusenie ma detekciu pohybu

  pociatocneNastavenieDispleja();//nastavi displej na stvrte/vychodzie poschodie

  while(1){

    rozsvietenieLED();//ak je stlacene tlacidlo rozsvieti sa ledka
    zmenDisplej();//zmeni hodnot na displeji

          if(spravnePoschodie == true){ //ked je na spravnom poschodi caka na dalsie pokyny(pociatocny stav)
            
              if(ostan == true){//ked je na spravnom poschodi vykona potrebne operacie, zastan
                  stop();//zastavenie vytahu
                  unsigned char vypniLedku = 16 + poschodie;
                  unsigned char vypniLedku2 = 32 + poschodie;
                  posliBajt(vypniLedku, 0x00);//poslanie bajtu na vypnutie ledky
                  posliBajt(vypniLedku2, 0x00);//poslanie bajtu na vypnutie ledky2
                  zmenDisplejNa(0x00, 48 + poschodie);//zmeni displej na prislusne poschodie

                  Timer t;
                  t.start();
                  while (t.read() <= 3) {}//caka 3 sekundy aby dobehol motor
                  t.stop();
                  odomkni();//odomknutie vytahu po 3 sek cakania - nemoze sa hybat

                  aktPoschodie = poschodie;
                  ostan = false;
                  poschodie = 0xFF;//aktualizacia poschodia na ktorom som

                }
                if((poschodie != 0xFF) && (poschodie != aktPoschodie)){ //ak nie som na rovnakom poschodi ako sa vytah prave nachadza
                    chodNaPoschodie(poschodie);//pojde na prislusne poschodie
                    zmenDisplejNa(smer, 48 + aktPoschodie);//nastavi displej
                    spravnePoschodie = false;//vyskoci z hlavnej podmienky kym nedojde na spravne poschodie
                }

             }
         }
}