![](/media/cache/group/default_image.jpg.50x50_q85.jpg)
ese519
Dependencies: Adafruit-PWM-Servo-Driver mbed-rtos mbed
Fork of xlab_lights by
Diff: main.cpp
- Revision:
- 0:0d0dcca68fba
- Child:
- 1:ae6c0b321908
diff -r 000000000000 -r 0d0dcca68fba main.cpp --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/main.cpp Fri Feb 13 21:51:43 2015 +0000 @@ -0,0 +1,64 @@ +#include "mbed.h" +#include "Adafruit_PWMServoDriver.h" + +#define STRONG 39 +#define MEDIUM 22 +#define WEAK 5 + +// Contains the color codes - Red, Green, Blue +int purple[] = {204, 0, 255}; +int orange[] = {255, 69, 0}; +int pink[] = {255, 0, 255}; +int blue[] = {0, 0, 255}; +int black[] = {0, 0, 0}; +int red[] = {255, 0, 0}; +int green[] = {0, 255, 0}; + +Adafruit_PWMServoDriver pwm(p9, p10); + +void setServoPulse(uint8_t n, float pulse) { + float pulselength = 10000; // 10,000 us per second + pulse = 4094 * pulse / pulselength; + pwm.setPWM(n, 0, pulse); +} + +void setColor(int *color, int intensity, int duration){ + setServoPulse(0, color[0] * intensity); + setServoPulse(1, color[1] * intensity); + setServoPulse(2, color[2] * intensity); + wait_ms(duration); +} + +void initServoDriver() { + pwm.begin(); + //pwm.setPWMFreq(100); //This dosen't work well because of uncertain clock speed. Use setPrescale(). + pwm.setPrescale(64); //This value is decided for 10ms interval. + pwm.setI2Cfreq(400000); //400kHz +} + +int main() { + //pwm.i2c_probe(); + initServoDriver(); + + while(1){ + + // Test basic color patterns + setColor(purple, STRONG, 1000); + setColor(orange, STRONG, 1000); + setColor(pink, STRONG, 1000); + setColor(blue, STRONG, 1000); + + // Test blinking patterns + for(int i = 0 ; i < 10 ; i++){ + setColor(red, STRONG, 250); + setColor(green, STRONG, 250); + } + + // Test dimming + for(int i = 10 ; i < 0 ; i++){ + setColor(blue, 4 * i, 250); + } + + } + +} \ No newline at end of file