aigamozu / AigamozuControlPackets_展示会

Dependencies:   VNH5019

Dependents:   Aigamozu_Robot_展示会 Aigamozu_Robot_March Aigamozu_Robot_templete

Fork of AigamozuControlPackets by aigamozu

Committer:
s1200058
Date:
Sat Mar 11 14:57:17 2017 +0000
Revision:
45:2f47c25a3562
Parent:
43:e011cf13dbb2
Child:
46:c35184266e00
This is for experiment in 22-23 March

Who changed what in which revision?

UserRevisionLine numberNew contents of line
m5171135 0:2b8b56ac7a82 1 #include "AigamozuControlPackets.h"
m5171135 0:2b8b56ac7a82 2 #include "VNH5019.h"
m5171135 0:2b8b56ac7a82 3
s1200058 45:2f47c25a3562 4 #define RIGHT_SPEED 96
s1200058 45:2f47c25a3562 5 #define LEFT_SPEED 96
s1200058 45:2f47c25a3562 6 #define FORWARD_SPEED 96
s1200058 41:fbf8f617a6ab 7
m5171135 6:f164a716be46 8 //////////////////////////////
m5171135 6:f164a716be46 9 // Init //
m5171135 6:f164a716be46 10 //////////////////////////////
m5171135 5:3f51eeb5aedc 11 AigamozuControlPackets::AigamozuControlPackets(VNH5019 agzSheild):_agzSheild(agzSheild){
s1200058 45:2f47c25a3562 12 packetData = new uint8_t[50];
m5171135 2:3f2d4f53ceed 13 }
m5171135 2:3f2d4f53ceed 14
kityann 17:a6fa8cc96d94 15 //////////////////////////////
m5171135 2:3f2d4f53ceed 16 // Using createPacket //
m5171135 2:3f2d4f53ceed 17 //////////////////////////////
m5171135 4:04dadf67ecb6 18 uint8_t AigamozuControlPackets::checkCommnadType(uint8_t* buf){
m5171135 4:04dadf67ecb6 19 return buf[14];
m5171135 4:04dadf67ecb6 20 }
m5171135 2:3f2d4f53ceed 21
m5171135 2:3f2d4f53ceed 22 uint8_t* AigamozuControlPackets::getPacketData(){
m5171135 2:3f2d4f53ceed 23 return packetData;
m5171135 2:3f2d4f53ceed 24 }
m5171135 2:3f2d4f53ceed 25
m5171135 2:3f2d4f53ceed 26 int AigamozuControlPackets::getPacketLength(){
m5171135 2:3f2d4f53ceed 27 return packetLength;
m5171135 0:2b8b56ac7a82 28 }
m5171135 0:2b8b56ac7a82 29
m5171135 5:3f51eeb5aedc 30 void AigamozuControlPackets::changeSpeed(uint8_t* buf){
m5171135 5:3f51eeb5aedc 31 if(nowMode == MANUAL_MODE){
m5171135 5:3f51eeb5aedc 32 manualCount =0;
m5171135 5:3f51eeb5aedc 33 _agzSheild.changeSpeed(buf[20],buf[21],buf[23],buf[24]);
m5171135 5:3f51eeb5aedc 34 }
m5171135 5:3f51eeb5aedc 35 }
m5171135 4:04dadf67ecb6 36
s1200058 45:2f47c25a3562 37
s1200058 45:2f47c25a3562 38 //////////////////////////////
s1200058 45:2f47c25a3562 39 // Robot -> Manager //
s1200058 45:2f47c25a3562 40 //////////////////////////////
s1200058 45:2f47c25a3562 41
s1200058 45:2f47c25a3562 42 void AigamozuControlPackets::SendDataCommand(uint8_t fromID, uint8_t toID, uint8_t gx,uint8_t gy, uint8_t gz, uint8_t ax, uint8_t ay,uint8_t az, uint8_t flag)
s1200058 45:2f47c25a3562 43 {
s1200058 45:2f47c25a3562 44
s1200058 45:2f47c25a3562 45 uint8_t tmp[] = {'A','G','S','M','F',fromID,'T',toID, gx, gy, gz, ax, ay, az,flag,'A','G','E'};
s1200058 45:2f47c25a3562 46 for(int i = 0; i < SEND_DATA_COMMNAD_LENGTH; i++) packetData[i] = tmp[i];
s1200058 45:2f47c25a3562 47 packetLength = SEND_DATA_COMMNAD_LENGTH;
s1200058 45:2f47c25a3562 48
s1200058 45:2f47c25a3562 49 }
s1200058 45:2f47c25a3562 50
s1200058 45:2f47c25a3562 51
s1200058 45:2f47c25a3562 52
m5171135 6:f164a716be46 53 //////////////////////////////
m5171135 6:f164a716be46 54 // each mode interrupt //
m5171135 6:f164a716be46 55 //////////////////////////////
m5171135 6:f164a716be46 56
m5171135 6:f164a716be46 57 void AigamozuControlPackets::manualMode(){
m5171135 6:f164a716be46 58 manualCount++;
m5171135 6:f164a716be46 59 if(manualCount > 10){
m5171135 6:f164a716be46 60 _agzSheild.changeSpeed(0,0,0,0);
m5171135 6:f164a716be46 61 manualCount = 0;
m5171135 6:f164a716be46 62 }
m5171135 6:f164a716be46 63 }
m5171135 6:f164a716be46 64
s1200058 41:fbf8f617a6ab 65 bool AigamozuControlPackets::gpsAuto(/*const int autobase[]*/){
m5171135 5:3f51eeb5aedc 66
kityann 10:e77c664ee5e2 67 /*
kityann 10:e77c664ee5e2 68 _agzSheild.changeSpeed(2,128,2,128):for moving robot
kityann 10:e77c664ee5e2 69 */
kityann 10:e77c664ee5e2 70
s1200058 41:fbf8f617a6ab 71 if(nowMode == AUTO_GPS_MODE){
s1200058 45:2f47c25a3562 72 //if(Move_Timer.read_ms() < 5000){
s1200058 43:e011cf13dbb2 73 _agzSheild.changeSpeed(1,LEFT_SPEED,1,RIGHT_SPEED);//turn
s1200058 45:2f47c25a3562 74 // }else if(Move_Timer.read_ms() >= 5000 && Move_Timer.read_ms() < 6000){
s1200058 45:2f47c25a3562 75 // _agzSheild.changeSpeed(0,0,0,0);//stop
s1200058 45:2f47c25a3562 76 // Move_Timer.reset();
s1200058 45:2f47c25a3562 77 //}
s1200058 43:e011cf13dbb2 78 /*
s1200058 42:04ca5242eaf2 79 if(Move_Timer.read_ms() < 4000){
s1200058 42:04ca5242eaf2 80 _agzSheild.changeSpeed(1,LEFT_SPEED,1,RIGHT_SPEED);//turn
s1200058 42:04ca5242eaf2 81 }else if(Move_Timer.read_ms() >= 4000 && Move_Timer.read_ms() < 5000){
s1200058 42:04ca5242eaf2 82 _agzSheild.changeSpeed(0,0,0,0);//stop
s1200058 42:04ca5242eaf2 83 }else if(Move_Timer.read_ms() >= 5000 && Move_Timer.read_ms() < 6000){
s1200058 42:04ca5242eaf2 84 _agzSheild.changeSpeed(1,FORWARD_SPEED,1,FORWARD_SPEED);//forward
s1200058 42:04ca5242eaf2 85 }else if(Move_Timer.read_ms() >= 6000 && Move_Timer.read_ms() < 7000){
s1200058 42:04ca5242eaf2 86 _agzSheild.changeSpeed(0,0,0,0);//stop
s1200058 42:04ca5242eaf2 87 }else if(Move_Timer.read_ms() >= 7000 && Move_Timer.read_ms() < 12000){
s1200058 42:04ca5242eaf2 88 _agzSheild.changeSpeed(1,RIGHT_SPEED,1,LEFT_SPEED);//turn
s1200058 42:04ca5242eaf2 89 }else if(Move_Timer.read_ms() >=12000 && Move_Timer.read_ms() < 13000){
s1200058 42:04ca5242eaf2 90 _agzSheild.changeSpeed(0,0,0,0);//stop
s1200058 42:04ca5242eaf2 91 }else if(Move_Timer.read_ms() >= 13000 && Move_Timer.read_ms() < 14000){
s1200058 42:04ca5242eaf2 92 _agzSheild.changeSpeed(1,FORWARD_SPEED,1,FORWARD_SPEED);//forward
s1200058 42:04ca5242eaf2 93 }else if(Move_Timer.read_ms() >= 14000 && Move_Timer.read_ms() < 15000){
s1200058 42:04ca5242eaf2 94 _agzSheild.changeSpeed(0,0,0,0);//stop
s1200058 42:04ca5242eaf2 95 Move_Timer.reset();
kityann 10:e77c664ee5e2 96 }
s1200058 43:e011cf13dbb2 97 */
s1200058 32:cd68a37d1ee1 98 }
s1200058 41:fbf8f617a6ab 99
s1200058 41:fbf8f617a6ab 100 return 1;
kityann 10:e77c664ee5e2 101 }
s1200058 41:fbf8f617a6ab 102
m5171135 7:200ce5c1f486 103
m5171135 7:200ce5c1f486 104
m5171135 7:200ce5c1f486 105
m5171135 5:3f51eeb5aedc 106
m5171135 6:f164a716be46 107 //////////////////////////////
m5171135 6:f164a716be46 108 // Mode change //
m5171135 6:f164a716be46 109 //////////////////////////////
m5171135 2:3f2d4f53ceed 110 bool AigamozuControlPackets::changeMode(uint8_t *buf){
m5171135 2:3f2d4f53ceed 111
m5171135 6:f164a716be46 112 //reset
m5171135 5:3f51eeb5aedc 113 _agzSheild.changeSpeed(0,0,0,0);
m5171135 6:f164a716be46 114 eachModeInt.detach();
m5171135 5:3f51eeb5aedc 115
m5171135 6:f164a716be46 116 //Select Mode
s1200058 29:3a2d87c10e43 117 switch(buf[19]){
m5171135 2:3f2d4f53ceed 118 case 0:
m5171135 2:3f2d4f53ceed 119 nowMode = STANDBY_MODE;
m5171135 2:3f2d4f53ceed 120 break;
m5171135 2:3f2d4f53ceed 121
m5171135 2:3f2d4f53ceed 122 case 1:
m5171135 6:f164a716be46 123 eachModeInt.attach(this,&AigamozuControlPackets::manualMode,1.0);
m5171135 2:3f2d4f53ceed 124 nowMode = MANUAL_MODE;
m5171135 2:3f2d4f53ceed 125 break;
m5171135 2:3f2d4f53ceed 126
m5171135 2:3f2d4f53ceed 127 case 2:
kityann 11:4d71c9cc3b4a 128 nowMode = AUTO_GPS_MODE;
s1200058 33:c11a9cb35840 129 Move_Timer.reset();
m5171135 2:3f2d4f53ceed 130 break;
m5171135 4:04dadf67ecb6 131
m5171135 4:04dadf67ecb6 132 case 3:
m5171135 4:04dadf67ecb6 133 nowMode = AUTO_GPS_MODE;
s1200058 33:c11a9cb35840 134 Move_Timer.reset();
m5171135 4:04dadf67ecb6 135 break;
m5171135 4:04dadf67ecb6 136
m5171135 6:f164a716be46 137 default:
m5171135 6:f164a716be46 138 nowMode = STANDBY_MODE;
m5171135 6:f164a716be46 139 break;
m5171135 5:3f51eeb5aedc 140
m5171135 2:3f2d4f53ceed 141 }
m5171135 2:3f2d4f53ceed 142 return false;
m5171135 2:3f2d4f53ceed 143 }
m5171135 5:3f51eeb5aedc 144
m5171135 5:3f51eeb5aedc 145
m5171135 2:3f2d4f53ceed 146