Dependencies:   mbed

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