Jayla Williams
/
lab1_pt3
4180
Embed:
(wiki syntax)
Show/hide line numbers
main.cpp
00001 #include "mbed.h" 00002 #include "PinDetect.h" 00003 00004 // Define buttons 00005 PinDetect pb1(p19); 00006 PinDetect pb2(p15); 00007 00008 PinDetect dip1(p10); 00009 PinDetect dip2(p11); 00010 PinDetect dip3(p12); 00011 00012 DigitalOut pin(p14); 00013 00014 class RGBLed 00015 { 00016 public: 00017 RGBLed(PinName redpin, PinName greenpin, PinName bluepin); 00018 void write(float red,float green, float blue); 00019 private: 00020 PwmOut _redpin; 00021 PwmOut _greenpin; 00022 PwmOut _bluepin; 00023 }; 00024 00025 RGBLed::RGBLed (PinName redpin, PinName greenpin, PinName bluepin) 00026 : _redpin(redpin), _greenpin(greenpin), _bluepin(bluepin) 00027 { 00028 //50Hz PWM clock default a bit too low, go to 2000Hz (less flicker) 00029 _redpin.period(0.0005); 00030 } 00031 00032 void RGBLed::write(float red,float green, float blue) 00033 { 00034 _redpin = red; 00035 _greenpin = green; 00036 _bluepin = blue; 00037 } 00038 //class could be moved to include file 00039 00040 00041 //Setup RGB led using PWM pins and class 00042 RGBLed myRGBled(p21,p22,p23); //RGB PWM pins 00043 00044 float pwm = 0.5f; 00045 00046 void inc_led() { 00047 00048 // Read in current PWM value and increment it 00049 pwm += 0.1f; 00050 if (pwm > 1.0f) { 00051 pwm = 0.0f; 00052 } 00053 } 00054 00055 void dec_led() { 00056 00057 // Read in current PWM value and increment it 00058 pwm -= 0.1f; 00059 if (pwm < 0.0f) { 00060 pwm = 0.0f; 00061 } 00062 } 00063 00064 void dip_red() { 00065 myRGBled.write(pwm,0.0,0.0); //red 00066 wait(2.0); 00067 } 00068 00069 void dip_green() { 00070 myRGBled.write(0.0,pwm,0.0); //green 00071 wait(2.0); 00072 } 00073 00074 void dip_blue() { 00075 myRGBled.write(0.0,0.0,pwm); //blue 00076 wait(2.0); 00077 } 00078 00079 int main() { 00080 00081 pb1.mode(PullUp); 00082 pb2.mode(PullUp); 00083 dip1.mode(PullUp); 00084 dip2.mode(PullUp); 00085 dip3.mode(PullUp); 00086 00087 wait(.001); 00088 00089 pb1.attach_deasserted(&inc_led); 00090 pb2.attach_deasserted(&dec_led); 00091 00092 dip1.attach_deasserted(&dip_red); 00093 dip2.attach_deasserted(&dip_green); 00094 dip3.attach_deasserted(&dip_blue); 00095 00096 pb1.setSampleFrequency(); 00097 pb2.setSampleFrequency(); 00098 00099 while(1) { 00100 pin = 1; 00101 00102 } 00103 }
Generated on Sat Jul 30 2022 20:16:04 by 1.7.2