by Rob Toulson and Tim Wilmshurst from textbook "Fast and Effective Embedded Systems Design: Applying the ARM mbed"

Dependencies:   mbed

Files at this revision

API Documentation at this revision

Comitter:
robt
Date:
Fri May 24 21:49:35 2013 +0000
Commit message:
by Rob Toulson and Tim Wilmshurst from textbook "Fast and Effective Embedded Systems Design: Applying the ARM mbed"

Changed in this revision

main.cpp Show annotated file Show diff for this revision Revisions of this file
mbed.bld Show annotated file Show diff for this revision Revisions of this file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/main.cpp	Fri May 24 21:49:35 2013 +0000
@@ -0,0 +1,46 @@
+/*Program Example 9.10: Metronome. Uses Ticker to set beat rate
+                                                                       */            
+#include "mbed.h"
+#include <stdio.h>
+Serial pc(USBTX, USBRX);
+DigitalIn up_button(p5);
+DigitalIn down_button(p6);
+DigitalOut redled(p19);             //displays the metronome beat
+Ticker beat_rate;                   //define a Ticker, with name “beat_rate”
+void beat(void);
+float period (0.5);              //metronome period in seconds, inital value 0.5
+int rate (120);                  //metronome rate, initial value 120
+
+int main() {
+  pc.printf("\r\n");
+  pc.printf("mbed metronome!\r\n");
+  pc.printf("_______________\r\n");
+  period = 1;
+  redled = 1;        //diagnostic
+  wait(.1);
+  redled = 0;
+  beat_rate.attach(&beat, period);  //initialises the beat rate 
+  //main loop checks buttons, updates rates and displays
+  while(1){
+    if (up_button ==1)   //increase rate by 4
+      rate = rate + 4;
+    if (down_button ==1)   //decrease rate by 4
+      rate = rate - 4;
+    if (rate > 208)        //limit the maximum beat rate to 208
+      rate = 208;
+    if (rate < 40)      //limit the minimum beat rate to 40
+      rate = 40;
+    period = 60/rate;       //calculate the beat period
+    pc.printf("metronome rate is %i\r", rate);
+    //pc.printf("metronome period is %f\r\n", period);  //optional check
+    wait (0.5);
+  }
+}
+
+  void beat() {                         //this is the metronome beat
+    beat_rate.attach(&beat, period);    //update beat rate at this moment
+    redled = 1;
+    wait(.1);
+    redled = 0;
+  }
+
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/mbed.bld	Fri May 24 21:49:35 2013 +0000
@@ -0,0 +1,1 @@
+http://mbed.org/users/mbed_official/code/mbed/builds/b3110cd2dd17
\ No newline at end of file