Runs an RC Brushless DC motor using with an ESC module. Mbed supplies the PWM control signal for the ESC. See https://developer.mbed.org/users/4180_1/notebook/using-a-dc-brushless-motor-with-an-rc-esc/ for more info

Dependencies:   Servo mbed

Revision:
0:378b1492eaf6
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/main.cpp	Sun May 14 12:38:56 2017 +0000
@@ -0,0 +1,44 @@
+// Calibrate and arm ESC and then sweep through motor speed range
+// To run: Hold down reset on mbed and power up ESC motor supply
+// Wait for three power up beeps from ESC, then release reset (or apply power) on mbed
+// See https://github.com/bitdump/BLHeli/blob/master/BLHeli_S%20SiLabs/BLHeli_S%20manual%20SiLabs%20Rev16.x.pdf
+// for info on beep codes and calibration
+#include "mbed.h"
+#include "Servo.h"
+PwmOut ledf(LED1); //throttle up test led with PWM dimming
+PwmOut ledr(LED2); //throttle down test led with PWM dimming
+
+Servo myservo(p21);
+
+int main()
+{
+    myservo = 0.0;
+    ledf = ledr = 1;
+    wait(0.5); //ESC detects signal
+//Required ESC Calibration/Arming sequence  
+//sends longest and shortest PWM pulse to learn and arm at power on
+    myservo = 1.0; //send longest PWM
+    ledf = ledr = 0;
+    wait(8);
+    myservo = 0.0; //send shortest PWM
+    wait(8);
+//ESC now operational using standard servo PWM signals
+    while (1) {
+        for (float p=0.0; p<=1.0; p += 0.025) { //Throttle up slowly to full throttle
+            myservo = p;
+            ledf = p;
+            wait(1.0);
+        }
+        myservo = 0.0; //Motor off
+        ledf = ledr = 0;
+        wait(4.0);
+        for (float p=1.0; p>=0.0; p -= 0.025) { //Throttle down slowly from full throttle
+            myservo = p;
+            ledr = p;
+            wait(1.0);
+        }
+        myservo = 0.0; //Motor off
+        ledf = ledr = 0;
+        wait(4.0);
+    }
+}