aigamozu / AigamozuControlPackets_展示会

Dependencies:   VNH5019

Dependents:   Aigamozu_Robot_展示会 Aigamozu_Robot_March Aigamozu_Robot_templete

Fork of AigamozuControlPackets by aigamozu

Committer:
s1200058
Date:
Mon Mar 13 17:55:25 2017 +0000
Revision:
47:36fdf8cd4336
Parent:
46:c35184266e00
Child:
48:4695e72853c6
????????; ???????????????

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 46:c35184266e00 39 // Robot -> Xbee
s1200058 46:c35184266e00 40 // ジャイロ・加速度データを送信する //
s1200058 45:2f47c25a3562 41 //////////////////////////////
s1200058 45:2f47c25a3562 42
s1200058 47:36fdf8cd4336 43 void AigamozuControlPackets::SendDataCommand(uint8_t fromID, uint8_t toID, int16_t gx,int16_t gy, int16_t gz, int16_t ax, int16_t ay,int16_t az, uint8_t flag)
s1200058 45:2f47c25a3562 44 {
s1200058 47:36fdf8cd4336 45
s1200058 47:36fdf8cd4336 46 UNION_int_char gx_data, gy_data, gz_data;
s1200058 47:36fdf8cd4336 47 UNION_int_char ax_data,ay_data, az_data;
s1200058 47:36fdf8cd4336 48
s1200058 47:36fdf8cd4336 49 gx_data.int_value=gx;
s1200058 47:36fdf8cd4336 50 gy_data.int_value=gy;
s1200058 47:36fdf8cd4336 51 gz_data.int_value=gz;
s1200058 47:36fdf8cd4336 52 ax_data.int_value=ax;
s1200058 47:36fdf8cd4336 53 ay_data.int_value=ay;
s1200058 47:36fdf8cd4336 54 az_data.int_value=az;
s1200058 45:2f47c25a3562 55
s1200058 47:36fdf8cd4336 56 uint8_t tmp[] = {'A','G','S','M','F',fromID,'T',toID,
s1200058 47:36fdf8cd4336 57 gx_data.char_value[0],gx_data.char_value[1],
s1200058 47:36fdf8cd4336 58 gy_data.char_value[0],gy_data.char_value[1],
s1200058 47:36fdf8cd4336 59 gz_data.char_value[0],gz_data.char_value[1],
s1200058 47:36fdf8cd4336 60 ax_data.char_value[0],ax_data.char_value[1],
s1200058 47:36fdf8cd4336 61 ay_data.char_value[0],ay_data.char_value[1],
s1200058 47:36fdf8cd4336 62 az_data.char_value[0],az_data.char_value[1],
s1200058 47:36fdf8cd4336 63 flag,'A','G','E'};
s1200058 47:36fdf8cd4336 64
s1200058 45:2f47c25a3562 65 for(int i = 0; i < SEND_DATA_COMMNAD_LENGTH; i++) packetData[i] = tmp[i];
s1200058 45:2f47c25a3562 66 packetLength = SEND_DATA_COMMNAD_LENGTH;
s1200058 45:2f47c25a3562 67
s1200058 45:2f47c25a3562 68 }
s1200058 45:2f47c25a3562 69
s1200058 45:2f47c25a3562 70
s1200058 45:2f47c25a3562 71
m5171135 6:f164a716be46 72 //////////////////////////////
m5171135 6:f164a716be46 73 // each mode interrupt //
m5171135 6:f164a716be46 74 //////////////////////////////
m5171135 6:f164a716be46 75
m5171135 6:f164a716be46 76 void AigamozuControlPackets::manualMode(){
m5171135 6:f164a716be46 77 manualCount++;
m5171135 6:f164a716be46 78 if(manualCount > 10){
m5171135 6:f164a716be46 79 _agzSheild.changeSpeed(0,0,0,0);
m5171135 6:f164a716be46 80 manualCount = 0;
m5171135 6:f164a716be46 81 }
m5171135 6:f164a716be46 82 }
m5171135 6:f164a716be46 83
s1200058 41:fbf8f617a6ab 84 bool AigamozuControlPackets::gpsAuto(/*const int autobase[]*/){
m5171135 5:3f51eeb5aedc 85
kityann 10:e77c664ee5e2 86 /*
kityann 10:e77c664ee5e2 87 _agzSheild.changeSpeed(2,128,2,128):for moving robot
kityann 10:e77c664ee5e2 88 */
kityann 10:e77c664ee5e2 89
s1200058 41:fbf8f617a6ab 90 if(nowMode == AUTO_GPS_MODE){
s1200058 45:2f47c25a3562 91 //if(Move_Timer.read_ms() < 5000){
s1200058 43:e011cf13dbb2 92 _agzSheild.changeSpeed(1,LEFT_SPEED,1,RIGHT_SPEED);//turn
s1200058 45:2f47c25a3562 93 // }else if(Move_Timer.read_ms() >= 5000 && Move_Timer.read_ms() < 6000){
s1200058 45:2f47c25a3562 94 // _agzSheild.changeSpeed(0,0,0,0);//stop
s1200058 45:2f47c25a3562 95 // Move_Timer.reset();
s1200058 45:2f47c25a3562 96 //}
s1200058 43:e011cf13dbb2 97 /*
s1200058 42:04ca5242eaf2 98 if(Move_Timer.read_ms() < 4000){
s1200058 42:04ca5242eaf2 99 _agzSheild.changeSpeed(1,LEFT_SPEED,1,RIGHT_SPEED);//turn
s1200058 42:04ca5242eaf2 100 }else if(Move_Timer.read_ms() >= 4000 && Move_Timer.read_ms() < 5000){
s1200058 42:04ca5242eaf2 101 _agzSheild.changeSpeed(0,0,0,0);//stop
s1200058 42:04ca5242eaf2 102 }else if(Move_Timer.read_ms() >= 5000 && Move_Timer.read_ms() < 6000){
s1200058 42:04ca5242eaf2 103 _agzSheild.changeSpeed(1,FORWARD_SPEED,1,FORWARD_SPEED);//forward
s1200058 42:04ca5242eaf2 104 }else if(Move_Timer.read_ms() >= 6000 && Move_Timer.read_ms() < 7000){
s1200058 42:04ca5242eaf2 105 _agzSheild.changeSpeed(0,0,0,0);//stop
s1200058 42:04ca5242eaf2 106 }else if(Move_Timer.read_ms() >= 7000 && Move_Timer.read_ms() < 12000){
s1200058 42:04ca5242eaf2 107 _agzSheild.changeSpeed(1,RIGHT_SPEED,1,LEFT_SPEED);//turn
s1200058 42:04ca5242eaf2 108 }else if(Move_Timer.read_ms() >=12000 && Move_Timer.read_ms() < 13000){
s1200058 42:04ca5242eaf2 109 _agzSheild.changeSpeed(0,0,0,0);//stop
s1200058 42:04ca5242eaf2 110 }else if(Move_Timer.read_ms() >= 13000 && Move_Timer.read_ms() < 14000){
s1200058 42:04ca5242eaf2 111 _agzSheild.changeSpeed(1,FORWARD_SPEED,1,FORWARD_SPEED);//forward
s1200058 42:04ca5242eaf2 112 }else if(Move_Timer.read_ms() >= 14000 && Move_Timer.read_ms() < 15000){
s1200058 42:04ca5242eaf2 113 _agzSheild.changeSpeed(0,0,0,0);//stop
s1200058 42:04ca5242eaf2 114 Move_Timer.reset();
kityann 10:e77c664ee5e2 115 }
s1200058 43:e011cf13dbb2 116 */
s1200058 32:cd68a37d1ee1 117 }
s1200058 41:fbf8f617a6ab 118
s1200058 41:fbf8f617a6ab 119 return 1;
kityann 10:e77c664ee5e2 120 }
s1200058 41:fbf8f617a6ab 121
m5171135 7:200ce5c1f486 122
m5171135 7:200ce5c1f486 123
m5171135 7:200ce5c1f486 124
m5171135 5:3f51eeb5aedc 125
m5171135 6:f164a716be46 126 //////////////////////////////
m5171135 6:f164a716be46 127 // Mode change //
m5171135 6:f164a716be46 128 //////////////////////////////
m5171135 2:3f2d4f53ceed 129 bool AigamozuControlPackets::changeMode(uint8_t *buf){
m5171135 2:3f2d4f53ceed 130
m5171135 6:f164a716be46 131 //reset
m5171135 5:3f51eeb5aedc 132 _agzSheild.changeSpeed(0,0,0,0);
m5171135 6:f164a716be46 133 eachModeInt.detach();
m5171135 5:3f51eeb5aedc 134
m5171135 6:f164a716be46 135 //Select Mode
s1200058 29:3a2d87c10e43 136 switch(buf[19]){
m5171135 2:3f2d4f53ceed 137 case 0:
m5171135 2:3f2d4f53ceed 138 nowMode = STANDBY_MODE;
m5171135 2:3f2d4f53ceed 139 break;
m5171135 2:3f2d4f53ceed 140
m5171135 2:3f2d4f53ceed 141 case 1:
m5171135 6:f164a716be46 142 eachModeInt.attach(this,&AigamozuControlPackets::manualMode,1.0);
m5171135 2:3f2d4f53ceed 143 nowMode = MANUAL_MODE;
m5171135 2:3f2d4f53ceed 144 break;
m5171135 2:3f2d4f53ceed 145
m5171135 2:3f2d4f53ceed 146 case 2:
kityann 11:4d71c9cc3b4a 147 nowMode = AUTO_GPS_MODE;
s1200058 33:c11a9cb35840 148 Move_Timer.reset();
m5171135 2:3f2d4f53ceed 149 break;
m5171135 4:04dadf67ecb6 150
m5171135 4:04dadf67ecb6 151 case 3:
m5171135 4:04dadf67ecb6 152 nowMode = AUTO_GPS_MODE;
s1200058 33:c11a9cb35840 153 Move_Timer.reset();
m5171135 4:04dadf67ecb6 154 break;
m5171135 4:04dadf67ecb6 155
m5171135 6:f164a716be46 156 default:
m5171135 6:f164a716be46 157 nowMode = STANDBY_MODE;
m5171135 6:f164a716be46 158 break;
m5171135 5:3f51eeb5aedc 159
m5171135 2:3f2d4f53ceed 160 }
m5171135 2:3f2d4f53ceed 161 return false;
m5171135 2:3f2d4f53ceed 162 }
m5171135 5:3f51eeb5aedc 163
m5171135 5:3f51eeb5aedc 164
m5171135 2:3f2d4f53ceed 165