![](/media/cache/img/default_profile.jpg.50x50_q85.jpg)
aa
main.cpp
- Committer:
- tttko
- Date:
- 2020-01-29
- Revision:
- 5:4b841637618e
- Parent:
- 3:8790e69f8c59
File content as of revision 5:4b841637618e:
#include "mbed.h" #include "Motor.h" #include "MCP.h" #include "XBee.h" #include <stdint.h> #define SDA PB_7 #define SCL PB_6 #define MCP_ADDRESS 0x40 MCP MCP(SDA, SCL, MCP_ADDRESS); XBEE::ControllerData *controller; MOTOR::MotorStatus motor[MOUNTING_MOTOR_NUM]; /* ↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓ */ //ピン名変更 #define FL 0 #define FR 1 #define BL 2 #define BR 3 #define CC 4 #define Lim0 0 #define Lim1 1 #define AIR0 2 #define AIR1 3 #define AIR2 4 #define SL0 5 #define SL1 6 //リミットスイッチ 読み取る int g = MCP.Read(0); const int omni[15][15] = { { 0, 5, 21, 47, 83, 130, 187, 255, 255, 255, 255, 255, 255, 255, 255 }, { -5, 0, 5, 21, 47, 83, 130, 187, 193, 208, 234, 255, 255, 255, 255 }, { -21, -5, 0, 5, 21, 47, 83, 130, 135, 151, 177, 213, 255, 255, 255 }, { -47, -21, 5, 0, 5, 21, 47, 83, 88, 104, 130, 167, 213, 255, 255 }, { -83, -47, -21, 5, 0, 5, 21, 47, 52, 68, 94, 130, 177, 234, 255 }, { -130, -83, -47, -21, 5, 0, 5, 21, 26, 42, 68, 104, 151, 208, 255 }, { -187, -130, -83, -47, -21, -5, 0, 5, 10, 26, 52, 88, 135, 193, 255 }, { -255, -187, -130, -83, -47, -21, -5, 0, 5, 21, 47, 83, 130, 187, 255 }, { -255, -193, -135, -88, -52, -26, -10, -5, 0, 5, 21, 47, 83, 130, 187 }, { -255, -208, -151, -104, -68, -42, -26, -21, -5, 0, 5, 21, 47, 83, 130 }, { -255, -234, -177, -130, -94, -68, -52, -47, -21, -7, 0, 7, 21, 47, 83 }, { -255, -255, -213, -167, -130, -104, -88, -83, -47, -21, -5, 0, 5, 21, 47 }, { -255, -255, -255, -213, -177, -151, -135, -130, -83, -47, -21, -5, 0, 5, 21 }, { -255, -255, -255, -255, -234, -208, -193, -187, -130, -83, -47, -21, -5, 0, 5 }, { -255, -255, -255, -255, -255, -255, -255, -255, -187, -130, -83, -47, -21, -5, 0 } }; const int curve[15] = { -204, -150, -104, -66, -38, -17, -4, 0, 4, 17, 38, 66, 104, 150, 204 }; //uint8_t SetStatus(int pwmVal); //uint8_t SetPWM(int pwmVal); /* ↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑ */ int main() { XBEE::Controller::Initialize(); MOTOR::Motor::Initialize(); __enable_irq(); /* ↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓ */ /* ↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑ */ while(1) { controller = XBEE::Controller::GetData(); MCP.Update(); /* ↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓ */ //足回り //左スティック 向き + 右スティック 向き motor[FL].dir = MOTOR::Motor::SetStatus(omni[controller->AnalogL.Y][controller->AnalogL.X] + curve[controller->AnalogR.X]); motor[FR].dir = MOTOR::Motor::SetStatus(omni[14-controller->AnalogL.Y][controller->AnalogL.X] +curve[controller->AnalogR.X]); motor[BL].dir=MOTOR::Motor::SetStatus(omni[controller->AnalogL.Y][controller->AnalogL.X] + curve[controller->AnalogR.X]); motor[BR].dir=MOTOR::Motor::SetStatus(omni[14-controller->AnalogL.Y][controller->AnalogL.X] + curve[14-controller->AnalogR.X]); //左スティック PWM + 右スティック PWM motor[FL].pwm=MOTOR::Motor::SetPWM(omni[controller->AnalogL.Y][controller->AnalogL.X] + curve[controller->AnalogR.X]); motor[FR].pwm=MOTOR::Motor::SetPWM(omni[14-controller->AnalogL.Y][controller->AnalogL.X] + curve[14-controller->AnalogR.X]); motor[BR].pwm=MOTOR::Motor::SetPWM(omni[controller->AnalogL.Y][controller->AnalogL.X] + curve[controller->AnalogR.X]); motor[BL].pwm=MOTOR::Motor::SetPWM(omni[14-controller->AnalogL.Y][controller->AnalogL.X] + curve[14-controller->AnalogR.X]); //回収 if(controller-> Button.A) { motor[CC].pwm=50; motor[CC].dir = FOR; } else if(controller-> Button.B) { motor[CC].pwm=50; motor[CC].dir=BACK; } else { motor[CC].pwm=100; motor[CC].dir=BRAKE; } //リミットスイッチのプログラム if(Lim0==1 || Lim1==1) { motor[CC].pwm=100; motor[CC].dir=BRAKE; } //投射 if(controller-> Button.Y) { MCP.Write(AIR2,1); } else { MCP.Write(AIR2,0); } //スロープ if(controller-> Button.L) { MCP.Write(AIR1,1); } else { MCP.Write(AIR1,0); } if(controller-> Button.ZL) { MCP.Write(SL1,1); } else { MCP.Write(SL1,0); } //ストックボックス if(controller-> Button.R) { MCP.Write(AIR0,1); } else { MCP.Write(AIR0,0); } if(controller-> Button.ZR) { MCP.Write(SL0,1); } else { MCP.Write(SL0,0); } /* ↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑ */ MOTOR::Motor::Update(motor); } }