Oleksandr Malyuskin / Mbed 2 deprecated LED_Lamp_full_control_Interrupt_ADC_PWM

Dependencies:   mbed

Committer:
malyuskin
Date:
Thu Nov 14 22:01:13 2019 +0000
Revision:
0:d5bbef547b76
LED lamp with full control - interrupt-based switch, Analog In and PWM out

Who changed what in which revision?

UserRevisionLine numberNew contents of line
malyuskin 0:d5bbef547b76 1 #include "mbed.h"
malyuskin 0:d5bbef547b76 2 InterruptIn button(A2);
malyuskin 0:d5bbef547b76 3 AnalogIn analog_value(A0);
malyuskin 0:d5bbef547b76 4 PwmOut ledpwm(A6);
malyuskin 0:d5bbef547b76 5
malyuskin 0:d5bbef547b76 6
malyuskin 0:d5bbef547b76 7 volatile bool state = 0; //initially lamp is OFF state is 0
malyuskin 0:d5bbef547b76 8
malyuskin 0:d5bbef547b76 9 void flip() {
malyuskin 0:d5bbef547b76 10 state = !state; }
malyuskin 0:d5bbef547b76 11
malyuskin 0:d5bbef547b76 12 int main() {
malyuskin 0:d5bbef547b76 13 button.rise(&flip); // attach the address of the flip function to the rising edge
malyuskin 0:d5bbef547b76 14
malyuskin 0:d5bbef547b76 15 float meas_r; // measured analog voltage on pin A0
malyuskin 0:d5bbef547b76 16
malyuskin 0:d5bbef547b76 17
malyuskin 0:d5bbef547b76 18 while(1) { // wait around, interrupts will interrupt this!
malyuskin 0:d5bbef547b76 19
malyuskin 0:d5bbef547b76 20 if (state==1){ //lamp is ON
malyuskin 0:d5bbef547b76 21 //... we can control brightness here using AnalogIn
malyuskin 0:d5bbef547b76 22
malyuskin 0:d5bbef547b76 23 ledpwm.period_ms(10); // PWM period is 10ms
malyuskin 0:d5bbef547b76 24
malyuskin 0:d5bbef547b76 25 meas_r = analog_value.read();
malyuskin 0:d5bbef547b76 26
malyuskin 0:d5bbef547b76 27 if (meas_r<0.1) {ledpwm.write(0.1);} // this is done to have led ON even when
malyuskin 0:d5bbef547b76 28 // voltage on analogIn A2 is 0
malyuskin 0:d5bbef547b76 29 else ledpwm.write(meas_r);
malyuskin 0:d5bbef547b76 30
malyuskin 0:d5bbef547b76 31 }
malyuskin 0:d5bbef547b76 32
malyuskin 0:d5bbef547b76 33 else {
malyuskin 0:d5bbef547b76 34 //lamp is OFF
malyuskin 0:d5bbef547b76 35 //... set PWM to 0
malyuskin 0:d5bbef547b76 36
malyuskin 0:d5bbef547b76 37 ledpwm.period_ms(10); // PWM period is 10ms
malyuskin 0:d5bbef547b76 38 ledpwm.write(0.0);
malyuskin 0:d5bbef547b76 39
malyuskin 0:d5bbef547b76 40 }
malyuskin 0:d5bbef547b76 41 wait(0.2); }
malyuskin 0:d5bbef547b76 42 }
malyuskin 0:d5bbef547b76 43
malyuskin 0:d5bbef547b76 44
malyuskin 0:d5bbef547b76 45
malyuskin 0:d5bbef547b76 46
malyuskin 0:d5bbef547b76 47
malyuskin 0:d5bbef547b76 48
malyuskin 0:d5bbef547b76 49