Simple example to drive a servo on pin 1. A serial input at 57600 baud send a percentage from 0 to 100 (followed by whitespace) and a pulse goes out to drive an RC servo to one end of travel to another. Example for my DDJ blog at http://www.ddj.com/embedded.

Dependencies:   mbed

Files at this revision

API Documentation at this revision

Comitter:
wd5gnr
Date:
Mon May 12 01:28:06 2014 +0000
Commit message:
First commit;

Changed in this revision

mbed.bld Show annotated file Show diff for this revision Revisions of this file
meter.cpp Show annotated file Show diff for this revision Revisions of this file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/mbed.bld	Mon May 12 01:28:06 2014 +0000
@@ -0,0 +1,1 @@
+http://mbed.org/users/mbed_official/code/mbed/builds/8a40adfe8776
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/meter.cpp	Mon May 12 01:28:06 2014 +0000
@@ -0,0 +1,30 @@
+
+#include "mbed.h"
+
+PwmOut out0(P0_8);
+
+
+Serial host(USBTX, USBRX);
+
+
+
+
+
+int main(void)
+{
+    host.baud(57600);  // TODO read a digital input to select high/low baud
+    out0.period_ms(20);
+    out0.pulsewidth_us(2600);
+
+    while(1)
+    {
+        unsigned int n=200;
+        host.scanf("%d",&n);  // read from PC
+        if (n>100) continue;  // make sure in range 0-100
+        n=((unsigned int) (1600.0*n/100.0));  // get a number from 0 to 1600
+        n=1600-n;  // reverse motion direction  so now it is 1600 to 0
+        out0.pulsewidth_us(n+1000);  // add 1000 so that total number is 1000 to 2600 (or 1mS to 2.6mS)
+    }
+}
+
+