Firmware for an Android accessory electric bicycle. See http://www.danielcasner.org/tag/ebike/ for some more information on my build.

Dependencies:   AndroidAccessory mbed

Revision:
2:e2c3c7340fb3
Parent:
1:be88f22fc412
Child:
3:dc564aaf8a81
--- a/main.cpp	Sat Aug 11 21:20:13 2012 +0000
+++ b/main.cpp	Mon Aug 20 05:18:03 2012 +0000
@@ -1,10 +1,14 @@
 #include "mbed.h"
 #include "AndroidAccessory.h"
+#include "throttle.h"
 
-DigitalOut led1(LED1);
-DigitalOut led2(LED2);
-DigitalOut led3(LED3);
-DigitalOut led4(LED4);
+DigitalOut l_running(LED1);
+DigitalOut l_cruise(LED2);
+DigitalOut l_error(LED3);
+DigitalOut l_debug(LED4);
+
+AnalogIn break_l(p19);
+AnalogIn break_r(p20);
 
 static const size_t OUTL=61;
 static const size_t INBL=61;
@@ -20,19 +24,27 @@
     
 private:
     void onTick();
+    void throttleTick();
     char buffer[OUTL];
     int bcount;
+    unsigned int blink_counter;
     Ticker tick;
     Timeout n;
+    Throttle* thr;
+    float I, v_f, v_r, cadence;
 };
 
 DroidCycleMbed::DroidCycleMbed() : AndroidAccessory(INBL, OUTL,
-                                                  "DC Labs",
-                                                  "DroidCycle",
-                                                  "Android E-Bike controller interface",
-                                                  "0.1",
-                                                  "http://www.danielcasner.org",
-                                                  "0000000123456789") {
+                                                    "DC Labs",
+                                                    "DroidCycle",
+                                                    "Android E-Bike controller interface",
+                                                    "0.1",
+                                                    "http://www.danielcasner.org",
+                                                    "0000000123456789"),
+                                                    bcount(0),
+                                                    blink_counter(0),
+                                                    thr(NULL) {
+    thr = Throttle::getThrottle(&I, &v_f, &v_r, &cadence, &break_l, &break_r);
     tick.attach(this, &DroidCycleMbed::onTick, 0.010);
 }
 
@@ -57,14 +69,17 @@
 
 
 void DroidCycleMbed::onTick() {
-
+    blink_counter++;
+    if (blink_counter < 10) l_running = 1;
+    else if (blink_counter < 100) l_running = 0;
+    else blink_counter = 0;
 }
 
 int main() {
-    while(1) {
-        led1 = 1;
-        wait(0.2);
-        led1 = 0;
-        wait(0.2);
+    DroidCycleMbed instance;
+    
+    USBInit();
+    while (1) {
+        USBLoop();
     }
 }