Gregory Lanier
/
4180_L1_P3
Lab 1 Part 3
Diff: main.cpp
- Revision:
- 0:bed258bad2ae
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/main.cpp Mon Feb 01 20:02:51 2021 +0000 @@ -0,0 +1,78 @@ + // 4180 Lab 1, Part 3 +// Gregory Lanier + +#include "mbed.h" +#include "PinDetect.h" + +/* + This program uses PWM with two buttons and a DIP switch to control the color and brightness of an RGB LED. +*/ + +// Global Vars +float brightness = 0.5f; // Initial brightness 1/2 power + +// I/O +PinDetect dimButton(p8); // Make LED dimmer with p8 button +PinDetect brightButton(p9); // Make LED brighter with p9 button +DigitalIn rDIP(p15); // Switch 1 for Red LED with p15 +DigitalIn gDIP(p16); // Switch 2 for Green LED with p16 +DigitalIn bDIP(p17); // Switch 3 for Blue LED with p17 +PwmOut rLED(p21); // Light up Red LED with p21 +PwmOut gLED(p22); // Light up Green LED with p22 +PwmOut bLED(p23); // Light up Blue LED with p23 + +// Dim Callback +void dim_callback(void) { + brightness -= 0.1f; +} + +// Brighten Callback +void bright_callback(void) { + brightness += 0.1f; +} + +int main() +{ + // Button Mode Set + dimButton.mode(PullUp); + brightButton.mode(PullUp); + wait(0.01); + + // Switch Mode Set + rDIP.mode(PullUp); + gDIP.mode(PullUp); + bDIP.mode(PullUp); + + // Setuo button callbacks + dimButton.attach_deasserted(&dim_callback); + brightButton.attach_deasserted(&bright_callback); + + // Start sampling button inputs using interrupts + dimButton.setSampleFrequency(); + brightButton.setSampleFrequency(); + + // Logic Loop + while(1) { + + if (!rDIP){ + rLED = brightness; + } + else{ + rLED = 0; + } + + if (!gDIP){ + gLED = brightness; + } + else{ + gLED = 0; + } + + if (!bDIP){ + bLED = brightness; + } + else{ + bLED = 0; + } + } +} \ No newline at end of file