Jayla Williams
/
lab1_pt3
4180
main.cpp
- Committer:
- jwilliams664
- Date:
- 2021-02-01
- Revision:
- 0:c46e86ee0ceb
File content as of revision 0:c46e86ee0ceb:
#include "mbed.h" #include "PinDetect.h" // Define buttons PinDetect pb1(p19); PinDetect pb2(p15); PinDetect dip1(p10); PinDetect dip2(p11); PinDetect dip3(p12); DigitalOut pin(p14); class RGBLed { public: RGBLed(PinName redpin, PinName greenpin, PinName bluepin); void write(float red,float green, float blue); private: PwmOut _redpin; PwmOut _greenpin; PwmOut _bluepin; }; RGBLed::RGBLed (PinName redpin, PinName greenpin, PinName bluepin) : _redpin(redpin), _greenpin(greenpin), _bluepin(bluepin) { //50Hz PWM clock default a bit too low, go to 2000Hz (less flicker) _redpin.period(0.0005); } void RGBLed::write(float red,float green, float blue) { _redpin = red; _greenpin = green; _bluepin = blue; } //class could be moved to include file //Setup RGB led using PWM pins and class RGBLed myRGBled(p21,p22,p23); //RGB PWM pins float pwm = 0.5f; void inc_led() { // Read in current PWM value and increment it pwm += 0.1f; if (pwm > 1.0f) { pwm = 0.0f; } } void dec_led() { // Read in current PWM value and increment it pwm -= 0.1f; if (pwm < 0.0f) { pwm = 0.0f; } } void dip_red() { myRGBled.write(pwm,0.0,0.0); //red wait(2.0); } void dip_green() { myRGBled.write(0.0,pwm,0.0); //green wait(2.0); } void dip_blue() { myRGBled.write(0.0,0.0,pwm); //blue wait(2.0); } int main() { pb1.mode(PullUp); pb2.mode(PullUp); dip1.mode(PullUp); dip2.mode(PullUp); dip3.mode(PullUp); wait(.001); pb1.attach_deasserted(&inc_led); pb2.attach_deasserted(&dec_led); dip1.attach_deasserted(&dip_red); dip2.attach_deasserted(&dip_green); dip3.attach_deasserted(&dip_blue); pb1.setSampleFrequency(); pb2.setSampleFrequency(); while(1) { pin = 1; } }