![](/media/cache/img/default_profile.jpg.50x50_q85.jpg)
Test script for PwmOut control LED with buttons
main.cpp
- Committer:
- rubenlucas
- Date:
- 2018-09-28
- Revision:
- 1:9654405c52f4
- Parent:
- 0:2ba57c4723ea
File content as of revision 1:9654405c52f4:
#include "mbed.h" #include "math.h" PwmOut Led(D3); InterruptIn Brighter(D1); InterruptIn Dimmer(D0); Ticker checkTicker; volatile float DutyCycle = 0.2; // set start cycle percentage of 20% (this is free of choice) volatile float Percentage; void BrighterFcn() { if (DutyCycle >= 0.9) // check if duty cycle is already at max {return;} else {DutyCycle = DutyCycle + 0.025;} // raise duty cycle with 2.5% } void DimmerFcn() { if (DutyCycle <= 0.1) // check if duty cycle is already at minimum {return;} else {DutyCycle = DutyCycle - 0.025;} // lower duty cycle with 2.5% } void CheckDutyCycle() { Percentage = DutyCycle; } int main() { float frequency = 10000; // 10 kHz Led.period(1/frequency); // set fixed period Brighter.rise(&BrighterFcn); //call function to raise dutycycle percentage if button is pressed and released Dimmer.rise(&DimmerFcn); //call function to lower dutycycle percentage if button is pressed and released checkTicker.attach(&CheckDutyCycle, 0.05); // call for percentage with 20 Hz to make the working smoother while (true) { Led.write(Percentage); wait(0.1f); } }