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: Controller ikarashiMDC
Diff: main.cpp
- Revision:
- 1:58103ad56096
- Parent:
- 0:9beba3a67526
- Child:
- 2:a583ad08d3d6
--- a/main.cpp Thu Mar 07 02:29:03 2019 +0000
+++ b/main.cpp Thu Mar 07 09:42:59 2019 +0000
@@ -1,20 +1,22 @@
#include "mbed.h"
-#include"PS3.h"
#include "ikarashiMDC.h"
+#include "controller.h"
Serial serial(PC_6, PC_7);
DigitalOut serialcontrol(D2);
DigitalOut led1(LED1);
-PS3 ps3(PC_12, PD_2);
Serial pc(USBTX, USBRX,115200);
+AnalogIn analog_value(A0);
+DigitalOut led(LED1);
+Controller pad(PC_10,PC_11,208);
+
ikarashiMDC ikarashi[] {
- ikarashiMDC(&serialcontrol,2,3,SM,&serial),
ikarashiMDC(&serialcontrol,2,0,SM,&serial),
ikarashiMDC(&serialcontrol,2,1,SM,&serial),
ikarashiMDC(&serialcontrol,2,2,SM,&serial),
- ikarashiMDC(&serialcontrol,3,0,SM,&serial),
- ikarashiMDC(&serialcontrol,3,1,SM,&serial)
+ ikarashiMDC(&serialcontrol,2,3,SM,&serial),
+ ikarashiMDC(&serialcontrol,3,3,SM,&serial)
};
PwmOut pwm(LED1);
@@ -24,122 +26,111 @@
float i = -1;
ikarashi[0].braking = true;
float pwm = 0;
- while(1) {
-
- int b[12], stick[4],X,Y,M;
- double SPe[4];
-
- /*ボタンスイッチ*/
- for(int i = 0; i < 12; i++) {
- b[i] = ps3.getButton(i);
- pc.printf("%2d", b[i] );
- }
- /*ジョイスティック*/
- for(int i = 0; i < 4; i++) {
- stick[i] = ps3.getStick(i);
- pc.printf("%4d", stick[i] );
- }
+ float meas;
+
+ printf("\nAnalogIn example\n");
+
+ int button[11];
+ double SPe[4];
+ float stickRadian[2], stickNorn[2];
+
+ serial.baud(115200);
+ ikarashi[0].braking = true;
- //ベルト機構
- if(b[6] == 0 || b[7] == 0){
- ikarashi[5].setSpeed(0);
- }
- if(b[6] == 1){
- ikarashi[4].setSpeed(0.08);
- ikarashi[5].setSpeed(-0.45);
- }
- if(b[7] == 1){
- ikarashi[4].setSpeed(-0.08);
- ikarashi[5].setSpeed(0.45);
- }
-
+ while(1) {
+ if(pad.receiveState()){
+ for(int i = 0; i < 13; i++){
+ button[i] = pad.getButton1(i);
+ pc.printf("%d ", button[i]);
+ }
+ for(int i = 0; i < 2; i++){
+ stickRadian[i] = pad.getRadian(i);
+ stickNorn[i] = pad.getNorm(i);
+ pc.printf("%f %f\t", stickRadian[i], stickNorn[i]);
+ }
+ pc.printf("\n\r");
- //バケット機構
- if(b[0] == 0 || b[1] == 0){
- ikarashi[4].setSpeed(0);
- }
- if(b[0] == 1){
- ikarashi[4].setSpeed(0.08);
- }
- if(b[1] == 1){
- ikarashi[4].setSpeed(-0.08);
+ //足回り
+ if(stickNorn[0] != 0){
+ SPe[0] = sin(stickRadian[0] - PI * 3/4);
+ SPe[1] = sin(stickRadian[0] - PI * (-3/4));
+ SPe[2] = sin(stickRadian[0] - PI * (-1/4));
+ SPe[3] = sin(stickRadian[0] - PI * 1/4);
}
-
- //足回り
- X = stick[0];
- Y = stick[1];
- M = stick[2];
-
- if(X > 100 && X < 155 && Y > 100 && Y < 155) { //停止
- SPe[0] = 0;
- SPe[1] = 0;
- SPe[2] = 0;
- SPe[3] = 0;
-
- pc.printf(" 停止 ");
+ //微調整
+ if(button[3] == 0){ //前
+ SPe[0] = 0.4;
+ SPe[1] = 0.4;
+ SPe[2] = -0.4;
+ SPe[3] = -0.4;
}
- if(X > 100 && Y <= 100) { //右前方向
- SPe[0] = -0.45;
- SPe[1] = ((127.5 - Y) - (X - 127.5)) * 0.004;
- SPe[2] = 0.45;
- SPe[3] = ((X - 127.5) - (127.5 - Y)) * 0.004;
-
- pc.printf(" 右前方向 ");
+ if(button[5] == 0){ //後ろ
+ SPe[0] = -0.4;
+ SPe[1] = -0.4;
+ SPe[2] = 0.4;
+ SPe[3] = 0.4;
}
- if(X <= 100 && Y < 155) { //左前方向
- SPe[0] = ((127.5 - X) - (127.5 - Y)) * 0.004;
- SPe[1] = 0.45;
- SPe[2] = ((127.5 - X) - (127.5 - Y)) * -0.004;
- SPe[3] = -0.45;
-
- pc.printf(" 左前方向 ");
+ if(button[4] == 0){ //右
+ SPe[0] = -0.4;
+ SPe[1] = 0.4;
+ SPe[2] = -0.4;
+ SPe[3] = 0.4;
}
- if(X >= 155 && Y > 100) { //右後ろ方向
- SPe[0] = ((X - 127.5) - (Y - 127.5)) * -0.004;
- SPe[1] = -0.45;
- SPe[2] = ((X - 127.5) - (Y - 127.5)) * 0.004;
- SPe[3] = 0.45;
-
- pc.printf(" 右後ろ方向 ");
+ if(button[2] == 0){ //左
+ SPe[0] = 0.4;
+ SPe[1] = -0.4;
+ SPe[2] = 0.4;
+ SPe[3] = -0.4;
}
- if(X < 155 && Y >= 155) { //左後ろ方向
- SPe[0] = 0.45;
- SPe[1] = ((X - 127.5) + (127.5 - Y)) * 0.004;
- SPe[2] = -0.45;
- SPe[3] = ((X - 127.5) - (127.5 - Y)) * 0.004;
-
- pc.printf(" 左後ろ方向 ");
- }
- if(M < 10) { //左回転
+
+ //右回転
+ if(button[7] == 0){
+ SPe[0] = -0.4;
+ SPe[1] = -0.4;
+ SPe[2] = -0.4;
+ SPe[3] = -0.4;
+ }
+ //左回転
+ if(button[8] == 0){
SPe[0] = 0.4;
SPe[1] = 0.4;
SPe[2] = 0.4;
SPe[3] = 0.4;
-
- pc.printf(" 左回転 ");
}
- if(M > 245) { //右回転
- SPe[0] = -0.4;
- SPe[1] = -0.4;
- SPe[2] = -0.4;
- SPe[3] = -0.4;
-
- pc.printf(" 右回転 ");
-
+
+ //機構
+ if(button[1] == 0){
+ ikarashi[4].setSpeed(-0.3); //閉じる
+ }
+
+ if(button[0] == 0){ //開く
+ ikarashi[4].setSpeed(0.3);
}
-
-
- ikarashi[0].setSpeed(SPe[0]);
- ikarashi[1].setSpeed(SPe[1]);
- ikarashi[2].setSpeed(SPe[2]);
- ikarashi[3].setSpeed(SPe[3]);
+
+
+ ikarashi[0].setSpeed(SPe[0]);
+ ikarashi[1].setSpeed(SPe[1]);
+ ikarashi[2].setSpeed(SPe[2]);
+ ikarashi[3].setSpeed(SPe[3]);
+
+ pc.printf("%.2f ",SPe[0]);
+ pc.printf("%.2f ",SPe[1]);
+ pc.printf("%.2f ",SPe[2]);
+ pc.printf("%.2f ",SPe[3]);
- pc.printf("%.2f ",SPe[0]);
- pc.printf("%.2f ",SPe[1]);
- pc.printf("%.2f ",SPe[2]);
- pc.printf("%.2f ",SPe[3]);
+ pc.printf("\r\n");
+
+ }else{
+ pc.printf("error\n\r");
- pc.printf("\r\n");
+ ikarashi[0].setSpeed(0);
+ ikarashi[1].setSpeed(0);
+ ikarashi[2].setSpeed(0);
+ ikarashi[3].setSpeed(0);
+ }
}
-}
+}
+
+
+
\ No newline at end of file