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: mbed
Revision 5:9ff2f6cd54d2, committed 2019-12-08
- Comitter:
 - KINU
 - Date:
 - Sun Dec 08 13:28:08 2019 +0000
 - Parent:
 - 4:88f7837f947f
 - Commit message:
 - GPSXBeecompleted
 
Changed in this revision
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/TB6612.cpp	Sun Dec 08 13:28:08 2019 +0000
@@ -0,0 +1,57 @@
+/**
+ * Motor Driver TB6612 Control Library
+ *
+ * -- TB6612 is a device of the TOSHIBA. 
+ *
+ * Copyright (C) 2012 Junichi Katsu (JKSOFT) 
+ */
+ 
+ 
+#include "TB6612.h"
+ 
+// TB6612 Class Constructor
+TB6612::TB6612(PinName pwm, PinName fwd, PinName rev):
+        _pwm(pwm), _fwd(fwd), _rev(rev) {
+ 
+    _fwd = 0;
+    _rev = 0;
+    _pwm = 0.0;
+    _pwm.period(0.001);
+}
+ 
+// Speed Control
+//  arg
+//   int speed -100 -- 0 -- 100
+void TB6612::speed(int speed) {
+        
+    if( speed > 0 )
+    {
+        _pwm = ((float)speed) / 100.0;
+        _fwd = 1;
+        _rev = 0;
+    }
+    else if( speed < 0 )
+    {
+        _pwm = -((float)speed) / 100.0;
+        _fwd = 0;
+        _rev = 1;
+    }
+    else
+    {
+        _fwd = 1;
+        _rev = 1;
+    }
+}
+ 
+ 
+// Speed Control with time-out
+//  arg
+//   int speed -100 -- 0 -- 100
+//   int time  0
+void TB6612::move(int sspeed , int time)
+{
+    speed(sspeed);
+    wait_ms(time);
+}
+ 
+            
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/TB6612.h	Sun Dec 08 13:28:08 2019 +0000
@@ -0,0 +1,30 @@
+/**
+ * Motor Driver TB6612 Control Library
+ *
+ * -- TB6612 is a device of the rohm. 
+ *
+ * Copyright (C) 2012 Junichi Katsu (JKSOFT) 
+ */
+ 
+#ifndef MBED_TB6612_H
+#define MBED_TB6612_H
+ 
+#include "mbed.h"
+ 
+class TB6612 {
+public:
+    TB6612(PinName pwm, PinName fwd, PinName rev);
+    void speed(int speed);
+    void move(int speed , int time);
+    void operator= ( int value )
+    {
+        speed(value);
+    }
+    
+protected:
+    PwmOut _pwm;
+    DigitalOut _fwd;
+    DigitalOut _rev;
+};
+ 
+#endif
\ No newline at end of file
--- a/gps.cpp	Sun Nov 10 10:41:19 2019 +0000
+++ b/gps.cpp	Sun Dec 08 13:28:08 2019 +0000
@@ -1,44 +1,67 @@
 #include "mbed.h"
 #include "getGPS.h"
 #include "math.h"
+#include "TB6612.h"
 
 Serial pc(USBTX,USBRX);
 GPS gps (p28,p27);
 Serial xbee(p13,p14);
-
+TB6612 left(p25,p17,p16);
+TB6612 right(p26,p19,p18);
 
 int main() {
      double a;
      double b;
      double distance;
-    
-    pc.printf("GPS Start\n");
-    
+     int i = 0;
+     int j = 0;
+     
+     pc.printf("GPS Start\n");
+     xbee.printf("s\n");
      while(1) {
          if(gps.getgps()){
+           
+          pc.printf("(%lf,%lf)\r\n",gps.latitude,gps.longitude);//緯度と経度を表示   
+          i ++;
+          if(i<59){
+           }else{
            a = gps.latitude;
            b = gps.longitude;
-           
-          pc.printf("(%lf,%lf)\r\n",gps.latitude,gps.longitude);//緯度と経度を表示   
+           printf("(a =%lf,b =%lf)\r\n",gps.latitude,gps.longitude);//a,bを表示   
            break;
-           
+           }
          }else{
           pc.printf("NO DATA\r\n");//データ取得失敗
           wait(1);
             }
        }
-      while(1){
-         if(gps.getgps()) {
+       printf("moter on");
+        left = 100; //左モーター100%
+        right = 100;//右モーター100%
+        
+        wait(30);
+        printf("moter off");
+        left = 0; //左モーター10%
+        right = 0;//右モーター10%(左折)
+        printf("moter off");
+        wait(15);
+        printf("GPS restart\n");
+        
+        while(1) {
+         if(gps.getgps()){
            
-          pc.printf("(%lf,%lf)\n\r",gps.latitude,gps.longitude);//緯度と経度を表示   
-          
-       // 球面三角法により、大円距離(メートル)を求める
-       double c;
-       double d; 
-        c = gps.latitude;
-        d = gps.longitude;
+          pc.printf("(%lf,%lf)\r\n",gps.latitude,gps.longitude);//緯度と経度を表示   
+          j ++;
+          if(j<29){
+           }else{
+            // 球面三角法により、大円距離(メートル)を求める
+           double c;
+           double d; 
+           c = gps.latitude;
+           d = gps.longitude;
 
-         const double pi = 3.14159265359; // 円周率
+            pc.printf("(%lf,%lf)\n\r",gps.latitude,gps.longitude);//c,dを表示   
+            const double pi = 3.14159265359; // 円周率
                            
             double ra = a * pi / 180;
             double rb = b * pi / 180;     // 緯度経度をラジアンに変換
@@ -51,27 +74,18 @@
             const double earth_radius = 6378140;   // 地球赤道半径(m)
 
             distance = earth_radius * rr; // 2点間の距離(m)
-             
-
-         if (distance<5){
+            
+            if (distance<5){
              }else{
+             pc.printf("(c =%lf,d =%lf)\n\r",gps.latitude,gps.longitude);//c,dを表示   
              pc.printf("5m clear!");
              xbee.printf("5m clear!");
-             break;
-              }
-          
-          }else{
-           xbee.printf("NO DATA\r\n");//データ取得失 
-           pc.printf("NO DATA\r\n");  
-           wait(1);
-           }
+              break;
+           }  
+            }
+       }else{
+         printf("No data");
+          }
         }
-        return 0;
-     }
-     
-     
-     
-     
-     
-    
-
+       return 0;      
+}
\ No newline at end of file