by Rob Toulson and Tim Wilmshurst from textbook "Fast and Effective Embedded Systems Design: Applying the ARM mbed"
main.cpp
- Committer:
- robt
- Date:
- 2013-05-24
- Revision:
- 0:d7c850cdbc39
File content as of revision 0:d7c850cdbc39:
/*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; }