Lab 1 Part 3

Dependencies:   mbed PinDetect

Committer:
glanier9
Date:
Mon Feb 01 20:02:51 2021 +0000
Revision:
0:bed258bad2ae
Final code

Who changed what in which revision?

UserRevisionLine numberNew 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 }