part1

Dependencies:   mbed

main.cpp

Committer:
psahay
Date:
2015-02-22
Revision:
9:58c1acf33117
Parent:
8:8991b0b82440

File content as of revision 9:58c1acf33117:

#include "mbed.h"

//Initialize PWM
PwmOut PWM1(p21);
Serial pc(USBTX, USBRX);
Timer t1;


//Initialize Input buffer
char input[10];

  
 int main()
{
    //define input variables
    float freq;
    int dur;
    //Check if input is valid
    int isint;
    while(1){
            //wait for a valid input
            while(isint != 2) {
                //Input Desired Tone
                printf("Input Desired Tone: Frequency (Hz) Duration (ms) followed by enter\r");
                char c = pc.getc();
                int i =0;
                
                //wait for return to be pressed
                while(c != '\r') {
                        printf("%c",c);  //echo
                        input[i++]=c;    //add current char to buffer
                        c = pc.getc();
                    }
                    input[i] = '\0';    //end buffer
                isint = sscanf(input, "%f %d",&freq,&dur);      //assign input variables
                //printf("isint = %d\r",isint); //debug check if input is correct
                //if input is incorrect this will be displayed
                if(isint!= 2)
                printf("You did not enter a number.Please enter an argument's number\r");
            }
          //wait for another enter to output the tone
          if(pc.readable()) {
              //if enter is pressed continue to output tone
              if(pc.getc() == '\r')
             {
                //show user what value was input
                printf("Valid Input Frequency = %3.0f, Duration  = %d\r", freq, dur);
                isint = 0;  //reset input
                
                //Play tone with correct freq and durration
                //Timer used for duration
                t1.reset();
                t1.start();
                PWM1.period(1/freq);               // set PWM period to user specified   
                PWM1=0.5;                         // set duty cycle to 50% 
                while(t1.read_ms() < dur){
                    //WAIT
                    }
                PWM1=0.0;                         //turn off
                t1.stop();    
             }
            //if another button is pressed besides enter abort and start over
             else{
                printf("You didn't press enter\r");
                isint = 0;  
                 }
            }    
      }
      
}