4180

Dependencies:   mbed PinDetect

Embed: (wiki syntax)

« Back to documentation index

Show/hide line numbers main.cpp Source File

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 }