Gregory Lanier
/
4180_L1_P3
Lab 1 Part 3
main.cpp@0:bed258bad2ae, 2021-02-01 (annotated)
- Committer:
- glanier9
- Date:
- Mon Feb 01 20:02:51 2021 +0000
- Revision:
- 0:bed258bad2ae
Final code
Who changed what in which revision?
User | Revision | Line number | New contents of line |
---|---|---|---|
glanier9 | 0:bed258bad2ae | 1 | // 4180 Lab 1, Part 3 |
glanier9 | 0:bed258bad2ae | 2 | // Gregory Lanier |
glanier9 | 0:bed258bad2ae | 3 | |
glanier9 | 0:bed258bad2ae | 4 | #include "mbed.h" |
glanier9 | 0:bed258bad2ae | 5 | #include "PinDetect.h" |
glanier9 | 0:bed258bad2ae | 6 | |
glanier9 | 0:bed258bad2ae | 7 | /* |
glanier9 | 0:bed258bad2ae | 8 | This program uses PWM with two buttons and a DIP switch to control the color and brightness of an RGB LED. |
glanier9 | 0:bed258bad2ae | 9 | */ |
glanier9 | 0:bed258bad2ae | 10 | |
glanier9 | 0:bed258bad2ae | 11 | // Global Vars |
glanier9 | 0:bed258bad2ae | 12 | float brightness = 0.5f; // Initial brightness 1/2 power |
glanier9 | 0:bed258bad2ae | 13 | |
glanier9 | 0:bed258bad2ae | 14 | // I/O |
glanier9 | 0:bed258bad2ae | 15 | PinDetect dimButton(p8); // Make LED dimmer with p8 button |
glanier9 | 0:bed258bad2ae | 16 | PinDetect brightButton(p9); // Make LED brighter with p9 button |
glanier9 | 0:bed258bad2ae | 17 | DigitalIn rDIP(p15); // Switch 1 for Red LED with p15 |
glanier9 | 0:bed258bad2ae | 18 | DigitalIn gDIP(p16); // Switch 2 for Green LED with p16 |
glanier9 | 0:bed258bad2ae | 19 | DigitalIn bDIP(p17); // Switch 3 for Blue LED with p17 |
glanier9 | 0:bed258bad2ae | 20 | PwmOut rLED(p21); // Light up Red LED with p21 |
glanier9 | 0:bed258bad2ae | 21 | PwmOut gLED(p22); // Light up Green LED with p22 |
glanier9 | 0:bed258bad2ae | 22 | PwmOut bLED(p23); // Light up Blue LED with p23 |
glanier9 | 0:bed258bad2ae | 23 | |
glanier9 | 0:bed258bad2ae | 24 | // Dim Callback |
glanier9 | 0:bed258bad2ae | 25 | void dim_callback(void) { |
glanier9 | 0:bed258bad2ae | 26 | brightness -= 0.1f; |
glanier9 | 0:bed258bad2ae | 27 | } |
glanier9 | 0:bed258bad2ae | 28 | |
glanier9 | 0:bed258bad2ae | 29 | // Brighten Callback |
glanier9 | 0:bed258bad2ae | 30 | void bright_callback(void) { |
glanier9 | 0:bed258bad2ae | 31 | brightness += 0.1f; |
glanier9 | 0:bed258bad2ae | 32 | } |
glanier9 | 0:bed258bad2ae | 33 | |
glanier9 | 0:bed258bad2ae | 34 | int main() |
glanier9 | 0:bed258bad2ae | 35 | { |
glanier9 | 0:bed258bad2ae | 36 | // Button Mode Set |
glanier9 | 0:bed258bad2ae | 37 | dimButton.mode(PullUp); |
glanier9 | 0:bed258bad2ae | 38 | brightButton.mode(PullUp); |
glanier9 | 0:bed258bad2ae | 39 | wait(0.01); |
glanier9 | 0:bed258bad2ae | 40 | |
glanier9 | 0:bed258bad2ae | 41 | // Switch Mode Set |
glanier9 | 0:bed258bad2ae | 42 | rDIP.mode(PullUp); |
glanier9 | 0:bed258bad2ae | 43 | gDIP.mode(PullUp); |
glanier9 | 0:bed258bad2ae | 44 | bDIP.mode(PullUp); |
glanier9 | 0:bed258bad2ae | 45 | |
glanier9 | 0:bed258bad2ae | 46 | // Setuo button callbacks |
glanier9 | 0:bed258bad2ae | 47 | dimButton.attach_deasserted(&dim_callback); |
glanier9 | 0:bed258bad2ae | 48 | brightButton.attach_deasserted(&bright_callback); |
glanier9 | 0:bed258bad2ae | 49 | |
glanier9 | 0:bed258bad2ae | 50 | // Start sampling button inputs using interrupts |
glanier9 | 0:bed258bad2ae | 51 | dimButton.setSampleFrequency(); |
glanier9 | 0:bed258bad2ae | 52 | brightButton.setSampleFrequency(); |
glanier9 | 0:bed258bad2ae | 53 | |
glanier9 | 0:bed258bad2ae | 54 | // Logic Loop |
glanier9 | 0:bed258bad2ae | 55 | while(1) { |
glanier9 | 0:bed258bad2ae | 56 | |
glanier9 | 0:bed258bad2ae | 57 | if (!rDIP){ |
glanier9 | 0:bed258bad2ae | 58 | rLED = brightness; |
glanier9 | 0:bed258bad2ae | 59 | } |
glanier9 | 0:bed258bad2ae | 60 | else{ |
glanier9 | 0:bed258bad2ae | 61 | rLED = 0; |
glanier9 | 0:bed258bad2ae | 62 | } |
glanier9 | 0:bed258bad2ae | 63 | |
glanier9 | 0:bed258bad2ae | 64 | if (!gDIP){ |
glanier9 | 0:bed258bad2ae | 65 | gLED = brightness; |
glanier9 | 0:bed258bad2ae | 66 | } |
glanier9 | 0:bed258bad2ae | 67 | else{ |
glanier9 | 0:bed258bad2ae | 68 | gLED = 0; |
glanier9 | 0:bed258bad2ae | 69 | } |
glanier9 | 0:bed258bad2ae | 70 | |
glanier9 | 0:bed258bad2ae | 71 | if (!bDIP){ |
glanier9 | 0:bed258bad2ae | 72 | bLED = brightness; |
glanier9 | 0:bed258bad2ae | 73 | } |
glanier9 | 0:bed258bad2ae | 74 | else{ |
glanier9 | 0:bed258bad2ae | 75 | bLED = 0; |
glanier9 | 0:bed258bad2ae | 76 | } |
glanier9 | 0:bed258bad2ae | 77 | } |
glanier9 | 0:bed258bad2ae | 78 | } |