test

Dependencies:   mbed TB6612FNG HMC6352

Revision:
0:4c10d798d1bb
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/main.cpp	Wed Oct 13 10:49:38 2021 +0000
@@ -0,0 +1,77 @@
+#include "mbed.h"
+#include "TB6612.h"
+#include "HMC6352.h"
+#include "us015.h"
+
+TB6612      motor_a(D10,D6,D7);  //モータA制御用(pwma,ain1,ain2)
+TB6612      motor_b(D11,D8,D9);  //モータB制御用(pwmb,bin1,bin2)
+Serial      pc(USBTX,USBRX);    //USBシリアル通信用
+HMC6352 compass(D4, D5);
+US015 hs(D2,D3);
+int d;
+int n;
+
+int motor(char m) {
+    float   motor_speed;        //モータスピード情報格納用
+        while(1) {
+        motor_speed=0.5; //モータスピード(低速運転させるため2分の1の値とする。)
+        switch(m)
+        {
+            case    '1':    motor_a=motor_speed;    //モータA正転
+                            break;    
+            case    '2':    motor_a=0;              //モータAブレーキ
+                            break;
+            case    '3':    motor_a=-motor_speed;   //モータA逆転
+                            break;                                        
+            case    '7':    motor_b=motor_speed;    //モータB正転
+                            break;    
+            case    '8':    motor_b=0;              //モータBブレーキ
+                            break;
+            case    '9':    motor_b=-motor_speed;   //モータB逆転
+                            break;              
+            default    :    motor_a=0;
+                            motor_b=0;              //両方モータブレーキ
+                            break;        
+        }
+    }
+}
+
+int Compass()
+{
+    int angle;
+    compass.setOpMode(HMC6352_CONTINUOUS, 1, 20);
+    angle = compass.sample() / 10;
+    return angle;
+}
+
+int Sonic()
+{
+    int distance;
+    distance = hs.GetDistance();
+    return distance;
+}
+
+int main()
+{
+    motor(1);
+    motor(7);
+    while(1)
+    {
+        n = Compass();
+        if(n >= 5) {    //5°ずれると片方のモーターが逆転する
+        motor(3); 
+        wait(5.0);
+        }
+        else {
+        motor(1);
+        motor(7); 
+        }
+        
+        d = Sonic();
+        if(d<=2000){    //超音波反応
+        motor(3);  
+        wait(5.0);
+        motor(1);
+        }
+    }
+}
\ No newline at end of file