Esercitazione5_9

Dependencies:   mbed

main.cpp

Committer:
MDevolution
Date:
2016-10-31
Revision:
0:f7509ce18bc8

File content as of revision 0:f7509ce18bc8:

/*Program Example 9: Metronome. Uses Ticker to set beat rate
*/
#include "mbed.h"
#include <stdio.h>
Serial pc(USBTX, USBRX);
DigitalIn button(USER_BUTTON);
DigitalIn dir(D4,PullDown);
DigitalOut redled(D8); //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, initial 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); //initializes the beat rate
    //main loop checks buttons, updates rates and displays
    while(1) {
        if (button ==0) {
            if (dir)
                //increase rate by 4
                rate = rate + 4;
            else
                //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;
}