////////////////////////////////// // // prog_practice_pwm project // // 10/11/22 tj // // use ticker and pwm to create a siren //////////////////////////////// #include "mbed.h" #include #define T_STEP 100000us //////////////////////// // Global objects/variables for ISRs PwmOut myPWM(D13); float siren_per; uint8_t flag = 0; // incrementing period (decreasing freq) void splash(void); void tkr_isr(void); int main(void){ setbuf(stdout, NULL); // fix output buffer // splash splash(); // setup ticker Ticker myTK; myTK.attach(&tkr_isr, T_STEP); // note #define must include the us // setup PWM parameters // close to max volume, mid frequency reange myPWM.write(0.9); siren_per = 500; // us // hang out while(1){ printf("tick\n"); wait_us(1000000); // 1 sec } } void splash(void){ printf("\n\nPWM practice program - SIREN\n\n"); return; }// end splash void tkr_isr(void){ // ticker isr to change period of siren // Using flag for direction and using 1KHz - 10KHz // in approximatly 18 steps if(flag == 0) siren_per +=50; else siren_per -= 50; if(siren_per == 1000) // 1 KHz flag = 1; if(siren_per == 100) // 10KHz flag = 0; // set the PWM period value myPWM.period_us(siren_per); return; }// end tkr_isr