Basic tank-style drive robot control firmware for Freescale FRDM-K64F. Controls motors on a Dual-Full-H-Bridge with EN, like DBH-1x series, from Bluetooth serial commands

Dependencies:   mbed

Revision:
2:54d27fdcbe5c
Parent:
1:23d0a615756a
Child:
3:502f90649834
--- a/main.cpp	Fri Jul 31 17:37:52 2015 +0000
+++ b/main.cpp	Sun Aug 02 18:34:12 2015 +0000
@@ -38,6 +38,9 @@
 //Serial CmdSerial(PTC17,PTC16);  // Command/Diagnostic serial port on UART3, sicne I don't know how to use USB ports (yet)
 Serial CmdSerial(PTC15,PTC14);  // Command/Diagnostic serial port on "bluetooth add-on" header
 
+// emulation of some Arduino serial methods.
+//    this class has a singleton interrupt callback, so it
+//    creates a singleton global
 #include "ASerial.h"  // emulation of some common Arduino Serial methods
 ASerial cSerial(CmdSerial); 
 
@@ -91,7 +94,7 @@
   float cr, cl;
   cr = MotR.getCurrent();
   cl = MotL.getCurrent();
-  CmdSerial.printf("\r\nCurrent:  left=%.3f  right=%.3f\r\n",cl,cr);
+  CmdSerial.printf("\tCurrent:  left=%.3f  right=%.3f\r\n",cl,cr);
 }
 
 //void dumpSerialChar()
@@ -115,7 +118,8 @@
 {
     CmdSerial.baud(57600);
     CmdSerial.puts("\r\nTankDrive for K64F with Bluetooth\r\n\n");
-    
+    CmdSerial.attach(&gotChar);  // singleton serial character buffer
+
     // Set motor drive parameters
     initMotorDrive(MotL);
     initMotorDrive(MotR);
@@ -123,7 +127,7 @@
     Time.reset();
     Time.start();
 
-    CommandReader cmd(cSerial);
+    CommandReader cmd;
     
     //int detailMsg=9;    
     while (true) {
@@ -154,8 +158,8 @@
         }
         else
         { // no command, do housekeeping (misc state update stuff)
-            MotL.update(t);
-            MotR.update(t);
+            //MotL.update(t);
+            //MotR.update(t);
 
             if ((prevCommandTime > 0x0fffff00) && (t < 999))
             {  // time counter is close to wrapping around.  make sure this does not happen.