ELEC2645 (2018/19) / Mbed 2 deprecated el17st

Dependencies:   mbed FATFileSystem

Revision:
4:34bf3587cf42
Child:
5:860087ff295e
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/CaMove/CaMove.cpp	Thu Apr 18 21:44:05 2019 +0000
@@ -0,0 +1,127 @@
+#include "CaMove.h"
+#include "FilePaths.h"
+
+CaMove::CaMove(PinName pin) : _check(pin) {
+    _check.mode(PullDown);
+    _check.rise(callback(this,&CaMove::intercheck));
+    _h = 40;
+    _v = 20;
+    _itr = 0;
+    Faceing = Lt;
+    Trig = false;
+};
+
+CaMove::~CaMove() {
+};
+
+void CaMove::CMmove(N5110 &lcd, AnalogIn &hoz, AnalogIn &ver) {
+    if (hoz > 0.6f && lcd.getPixel((_h-1),(_v+7)) == 0) {
+        _h = _h - 2;
+        Faceing = Lt;
+    }
+    if (hoz < 0.4f && lcd.getPixel((_h+10),(_v+7)) == 0) {
+        _h = _h + 2;
+        Faceing = Rt;
+    }
+    if (ver > 0.6f && lcd.getPixel((_h+5),(_v-1)) == 0) {
+        _v = _v - 2;
+        Faceing = Fd;
+    }
+    if (ver < 0.4f && lcd.getPixel((_h+5),(_v+14)) == 0) {
+        _v = _v + 2;
+        Faceing = Bd;
+    }
+    if (_itr == 3) {
+        _itr = -1;
+    }
+    _itr++;
+    switch (Faceing) {
+            case Lt:
+            Bitmap::renderBMP(L[_itr],lcd,_h,_v);
+            break;
+            
+            case Rt:
+            Bitmap::renderBMP(R[_itr],lcd,_h,_v);
+            break;
+            
+            case Fd:
+            Bitmap::renderBMP(F[_itr],lcd,_h,_v);
+            break;
+            
+            case Bd:
+            Bitmap::renderBMP(B[_itr],lcd,_h,_v);
+            break;
+        }
+};
+
+
+bool CaMove::inscreen() {
+    if (_h >= 84 || (_h + 9) <= 0 || _v <= 0 || (_v + 13) >= 48) {
+        return true;
+    } else {
+        return false;
+    }
+};
+
+void CaMove::set_region(int xmin, int ymax, int xl, int yl) {
+    intereact.push_back((xmin + xl));
+    intereact.push_back(xmin);
+    intereact.push_back(ymax);
+    intereact.push_back((ymax - yl));
+};
+
+void CaMove::delete_regions() {
+    intereact.clear();
+};
+
+void CaMove::intercheck() {
+    Trig = false;
+    if (intereact.size() > 0) {
+        for(int Vvalue = 0; Vvalue < intereact.size(); Vvalue = Vvalue +4) {
+            //if Statements
+            bool LowerH = (_h - 1) <= intereact[Vvalue] && (_h-1) >= intereact[Vvalue + 1];
+            bool UpperH = (_h + 10) <= intereact[Vvalue] && (_h + 10) >= intereact[Vvalue + 1];
+            bool MidH = (_h + 5) <= intereact[Vvalue] && (_h + 5) >= intereact[Vvalue + 1];
+            bool LowerV = (_v - 1) >= intereact[Vvalue + 3] && (_v - 1) <= intereact[Vvalue + 2];
+            bool UpperV = (_v+14) >= intereact[Vvalue + 3] && (_v + 14) <= intereact[Vvalue + 2];
+            bool MidV = (_v+7) >= intereact[Vvalue + 3] && (_v + 7) <= intereact[Vvalue + 2];
+            
+            switch (Faceing) {
+                case Lt:           //L
+                    if (LowerH && MidV) {
+                        Trig = true;
+                        tregion = Vvalue / 4;
+                    };
+                break;
+                
+                case Rt:          //R
+                    if (UpperH && MidV) {
+                        Trig = true;
+                        tregion = Vvalue / 4;
+                    }
+                break;
+                
+                case Fd:         //F
+                    if (MidH && LowerV) {
+                        Trig = true;
+                        tregion = Vvalue / 4;
+                    }
+                break;
+                
+                case Bd:         //B
+                    if (MidH && UpperV) {
+                        Trig = true;
+                        tregion = Vvalue / 4;
+                    }
+                break;
+            }
+        }
+    }
+}
+
+bool CaMove::get_Trig() {
+    bool temp = Trig;
+    Trig = false;
+    return temp;
+
+};