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: VNH5019
Dependents: Aigamozu_Robot_展示会 Aigamozu_Robot_March Aigamozu_Robot_templete
Fork of AigamozuControlPackets by
AigamozuControlPackets.cpp
- Committer:
- s1200058
- Date:
- 2016-10-30
- Revision:
- 43:e011cf13dbb2
- Parent:
- 42:04ca5242eaf2
- Child:
- 45:2f47c25a3562
File content as of revision 43:e011cf13dbb2:
#include "AigamozuControlPackets.h" #include "VNH5019.h" #define RIGHT_SPEED 32 #define LEFT_SPEED 16 #define FORWARD_SPEED 32 ////////////////////////////// // Init // ////////////////////////////// AigamozuControlPackets::AigamozuControlPackets(VNH5019 agzSheild):_agzSheild(agzSheild){ } ////////////////////////////// // Using createPacket // ////////////////////////////// uint8_t AigamozuControlPackets::checkCommnadType(uint8_t* buf){ return buf[14]; } uint8_t* AigamozuControlPackets::getPacketData(){ return packetData; } int AigamozuControlPackets::getPacketLength(){ return packetLength; } void AigamozuControlPackets::changeSpeed(uint8_t* buf){ if(nowMode == MANUAL_MODE){ manualCount =0; _agzSheild.changeSpeed(buf[20],buf[21],buf[23],buf[24]); } } ////////////////////////////// // each mode interrupt // ////////////////////////////// void AigamozuControlPackets::manualMode(){ manualCount++; if(manualCount > 10){ _agzSheild.changeSpeed(0,0,0,0); manualCount = 0; } } bool AigamozuControlPackets::gpsAuto(/*const int autobase[]*/){ /* _agzSheild.changeSpeed(2,128,2,128):for moving robot */ if(nowMode == AUTO_GPS_MODE){ if(Move_Timer.read_ms() < 5000){ _agzSheild.changeSpeed(1,LEFT_SPEED,1,RIGHT_SPEED);//turn }else if(Move_Timer.read_ms() >= 5000 && Move_Timer.read_ms() < 6000){ _agzSheild.changeSpeed(0,0,0,0);//stop Move_Timer.reset(); } /* if(Move_Timer.read_ms() < 4000){ _agzSheild.changeSpeed(1,LEFT_SPEED,1,RIGHT_SPEED);//turn }else if(Move_Timer.read_ms() >= 4000 && Move_Timer.read_ms() < 5000){ _agzSheild.changeSpeed(0,0,0,0);//stop }else if(Move_Timer.read_ms() >= 5000 && Move_Timer.read_ms() < 6000){ _agzSheild.changeSpeed(1,FORWARD_SPEED,1,FORWARD_SPEED);//forward }else if(Move_Timer.read_ms() >= 6000 && Move_Timer.read_ms() < 7000){ _agzSheild.changeSpeed(0,0,0,0);//stop }else if(Move_Timer.read_ms() >= 7000 && Move_Timer.read_ms() < 12000){ _agzSheild.changeSpeed(1,RIGHT_SPEED,1,LEFT_SPEED);//turn }else if(Move_Timer.read_ms() >=12000 && Move_Timer.read_ms() < 13000){ _agzSheild.changeSpeed(0,0,0,0);//stop }else if(Move_Timer.read_ms() >= 13000 && Move_Timer.read_ms() < 14000){ _agzSheild.changeSpeed(1,FORWARD_SPEED,1,FORWARD_SPEED);//forward }else if(Move_Timer.read_ms() >= 14000 && Move_Timer.read_ms() < 15000){ _agzSheild.changeSpeed(0,0,0,0);//stop Move_Timer.reset(); } */ } return 1; } ////////////////////////////// // Mode change // ////////////////////////////// bool AigamozuControlPackets::changeMode(uint8_t *buf){ //reset _agzSheild.changeSpeed(0,0,0,0); eachModeInt.detach(); //Select Mode switch(buf[19]){ case 0: nowMode = STANDBY_MODE; break; case 1: eachModeInt.attach(this,&AigamozuControlPackets::manualMode,1.0); nowMode = MANUAL_MODE; break; case 2: nowMode = AUTO_GPS_MODE; Move_Timer.reset(); break; case 3: nowMode = AUTO_GPS_MODE; Move_Timer.reset(); break; default: nowMode = STANDBY_MODE; break; } return false; }