Important changes to repositories hosted on mbed.com
Mbed hosted mercurial repositories are deprecated and are due to be permanently deleted in July 2026.
To keep a copy of this software download the repository Zip archive or clone locally using Mercurial.
It is also possible to export all your personal repositories from the account settings page.
Dependencies: mbed FATFileSystem
Diff: CaMove/CaMove.cpp
- 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; + +};