|
本帖最后由 cjs1748 于 2017-3-26 22:03 编辑
- #include <PS2X_lib.h> //導入PS2搖桿庫v1.8
- #include <Servo.h> //導入舵機庫
- PS2X ps2x;
- int PS2 = 0;
- Servo LXservo; //建造LX舵機
- Servo RXservo; //建造LY舵機
- const int Ain1 = 4; // direction pin 1
- const int Ain2 = 9; // direction pin 2
- const int enA = 6; // PWM pin 控制轉速用
- const int Bin1 = 7; // direction pin 1
- const int Bin2 = 8; // direction pin 2
- const int enB = 5; // PWM pin 控制轉速用,我用minipro D9 PWM 無法使用,所以跟D5互換
- int fspeedLY; // 指定LY轉速變數
- int fspeedRY; // 指定RY轉速變數
- void setup(){
- LXservo.attach(2); // 指定LX舵機接D2腳位
- RXservo.attach(3); // 指定RX舵機接D2腳位
-
- PS2 = ps2x.config_gamepad(13,11,10,12, true, true); //指定PS2搖桿腳位及類比搖桿開啟
-
- pinMode(Ain1, OUTPUT); // connection to TB6612FNG
- pinMode(Ain2, OUTPUT); // connection to TB6612FNG
- pinMode(enA, OUTPUT); // connection to TB6612FNG
- pinMode(Bin1, OUTPUT); // connection to TB6612FNG
- pinMode(Bin2, OUTPUT); // connection to TB6612FNG
- pinMode(enB, OUTPUT); // connection to TB6612FNG
- pinMode(A0, OUTPUT); // 三角和圓形控制的LED
- pinMode(A1, OUTPUT); // 四方和X控制的LED
- pinMode(A2, OUTPUT); // LY軸控制的LED燈
- pinMode(A3, OUTPUT); // RY軸控制的LED燈
- pinMode(A4, OUTPUT); // LX軸控制的LED燈
- pinMode(A5, OUTPUT); // LX軸控制的LED燈
- pinMode(A6, OUTPUT); // RX軸控制的LED燈 無作用
- pinMode(A7, OUTPUT); // RX軸控制的LED燈 無作用
-
- }
- void loop(){
- ps2x.read_gamepad();
-
- if(ps2x.ButtonPressed(PSB_CIRCLE)) digitalWrite(A0, LOW);
- if(ps2x.ButtonPressed(PSB_TRIANGLE)) digitalWrite(A0, HIGH);
- if(ps2x.ButtonPressed(PSB_CROSS)) digitalWrite(A1, LOW);
- if(ps2x.ButtonPressed(PSB_SQUARE)) digitalWrite(A1, HIGH);
-
- if (ps2x.Analog(PSS_LY) == 128) analogWrite(enA, 0);
- if (ps2x.Analog(PSS_LY) > 128){
- fspeedLY = map(ps2x.Analog(PSS_LY), 129, 255, 0, 150); // LY搖桿對應馬達驅動的值 0~150即可以達到全速(配合電壓及馬達樣式調整)
- digitalWrite(Ain1, LOW);
- digitalWrite(Ain2, HIGH);
- analogWrite(enA, fspeedLY);
- digitalWrite(A2, HIGH);
- }
- if (ps2x.Analog(PSS_LY) < 128){
- fspeedLY = map(ps2x.Analog(PSS_LY), 0, 127, 150, 0);
- digitalWrite(Ain1, HIGH);
- digitalWrite(Ain2, LOW);
- analogWrite(enA, fspeedLY);
- digitalWrite(A2, LOW);
- }
- if (ps2x.Analog(PSS_RY) == 128) analogWrite(enB, 0);
- if (ps2x.Analog(PSS_RY) > 128){
- fspeedRY = map(ps2x.Analog(PSS_RY), 129, 255, 0, 150);
- digitalWrite(Bin1, LOW);
- digitalWrite(Bin2, HIGH);
- analogWrite(enB, fspeedRY);
- digitalWrite(A3, HIGH);
- }
- if (ps2x.Analog(PSS_RY) < 128){
- fspeedRY = map(ps2x.Analog(PSS_RY), 0, 127, 150, 0);
- digitalWrite(Bin1, HIGH);
- digitalWrite(Bin2, LOW);
- analogWrite(enB, fspeedRY);
- digitalWrite(A3, LOW);
- }
-
- LXservo.write(map(ps2x.Analog(PSS_LX), 0, 255, 20, 160)); // LX搖桿對應舵機角度 20~160
- RXservo.write(map(ps2x.Analog(PSS_RX), 0, 255, 20, 160));
-
- if (ps2x.Analog(PSS_LX) < 120){
- digitalWrite(A4, HIGH);
- digitalWrite(A5, LOW);
- }
- if (ps2x.Analog(PSS_LX) > 150){
- digitalWrite(A4, LOW);
- digitalWrite(A5, HIGH);
- }
- if (ps2x.Analog(PSS_LX) > 120 && ps2x.Analog(PSS_LX) < 150){
- digitalWrite(A4, LOW);
- digitalWrite(A5, LOW);
- }
- if (ps2x.Analog(PSS_RX) < 120){
- digitalWrite(A6, HIGH);
- digitalWrite(A7, LOW);
- }
- if (ps2x.Analog(PSS_RX) > 150){
- digitalWrite(A6, LOW);
- digitalWrite(A7, HIGH);
- }
- if (ps2x.Analog(PSS_RX) > 120 && ps2x.Analog(PSS_RX) < 150){
- digitalWrite(A6, LOW);
- digitalWrite(A7, LOW);
- }
-
- delay(50);
- }
复制代码
之前做過六個舵機的測試,結果時間一久就都忘了!!又重新測試!!
所以趕快留一個紀錄!!下次就不用再撞牆了!!
1.外部電源12V1.5A 對馬達驅動板及MINIPRO RAW腳
2.馬達驅動板邏輯電源及PS2接收器接3.3V
3.UNO 及 MINIPRO 都測試成功
|
本帖子中包含更多资源
您需要 登录 才可以下载或查看,没有帐号?注册
x
评分
-
查看全部评分
|