Example project for controlling GE ColorEffect Lights

Dependencies:   mbed

Committer:
clarkjarvis
Date:
Fri Dec 19 16:38:26 2014 +0000
Revision:
0:d9cf7fb66406
Child:
1:93c7d040444d
Base example project for controlling GE ColorEffect Lights

Who changed what in which revision?

UserRevisionLine numberNew contents of line
clarkjarvis 0:d9cf7fb66406 1 #include "mbed.h"
clarkjarvis 0:d9cf7fb66406 2
clarkjarvis 0:d9cf7fb66406 3 DigitalOut gpo(D12);
clarkjarvis 0:d9cf7fb66406 4 DigitalOut led_red(LED_RED);
clarkjarvis 0:d9cf7fb66406 5 DigitalOut led_green(LED_GREEN);
clarkjarvis 0:d9cf7fb66406 6 DigitalOut led_blue(LED_BLUE);
clarkjarvis 0:d9cf7fb66406 7
clarkjarvis 0:d9cf7fb66406 8 #define AL 18 // Array Length
clarkjarvis 0:d9cf7fb66406 9 #define NB 50 // Number of Bulbs
clarkjarvis 0:d9cf7fb66406 10 #define LUM 0xFF // Brightness
clarkjarvis 0:d9cf7fb66406 11
clarkjarvis 0:d9cf7fb66406 12 //RGB (array) (18)
clarkjarvis 0:d9cf7fb66406 13 unsigned int rval[AL] = {0xF,0xF,0xF,0xF,0xA,0x8,0x6,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x6,0x8,0xA};
clarkjarvis 0:d9cf7fb66406 14 unsigned int gval[AL] = {0x0,0x0,0x0,0x0,0x6,0x8,0xA,0xF,0xF,0xF,0xA,0x8,0x6,0x0,0x0,0x0,0x0,0x0};
clarkjarvis 0:d9cf7fb66406 15 unsigned int bval[AL] = {0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x6,0x8,0xA,0xF,0xF,0xA,0x8,0x6};
clarkjarvis 0:d9cf7fb66406 16
clarkjarvis 0:d9cf7fb66406 17 void s0()
clarkjarvis 0:d9cf7fb66406 18 {
clarkjarvis 0:d9cf7fb66406 19 gpo=0;
clarkjarvis 0:d9cf7fb66406 20 wait_us(10);
clarkjarvis 0:d9cf7fb66406 21 gpo=1;
clarkjarvis 0:d9cf7fb66406 22 wait_us(20);
clarkjarvis 0:d9cf7fb66406 23 }
clarkjarvis 0:d9cf7fb66406 24
clarkjarvis 0:d9cf7fb66406 25 void s1()
clarkjarvis 0:d9cf7fb66406 26 {
clarkjarvis 0:d9cf7fb66406 27 gpo=0;
clarkjarvis 0:d9cf7fb66406 28 wait_us(20);
clarkjarvis 0:d9cf7fb66406 29 gpo=1;
clarkjarvis 0:d9cf7fb66406 30 wait_us(10);
clarkjarvis 0:d9cf7fb66406 31 }
clarkjarvis 0:d9cf7fb66406 32
clarkjarvis 0:d9cf7fb66406 33 void end_frame()
clarkjarvis 0:d9cf7fb66406 34 {
clarkjarvis 0:d9cf7fb66406 35 gpo=0;
clarkjarvis 0:d9cf7fb66406 36 wait_us(30);
clarkjarvis 0:d9cf7fb66406 37 }
clarkjarvis 0:d9cf7fb66406 38
clarkjarvis 0:d9cf7fb66406 39 void sdata(unsigned int data, int length)
clarkjarvis 0:d9cf7fb66406 40 {
clarkjarvis 0:d9cf7fb66406 41 unsigned int data_bit;
clarkjarvis 0:d9cf7fb66406 42
clarkjarvis 0:d9cf7fb66406 43 for (int i=(length-1); i>=0; i--) {
clarkjarvis 0:d9cf7fb66406 44 data_bit = (data>>i)&0x01;
clarkjarvis 0:d9cf7fb66406 45 if (data_bit==0) {
clarkjarvis 0:d9cf7fb66406 46 s0();
clarkjarvis 0:d9cf7fb66406 47 } else if (data_bit==1) {
clarkjarvis 0:d9cf7fb66406 48 s1();
clarkjarvis 0:d9cf7fb66406 49 }
clarkjarvis 0:d9cf7fb66406 50 }
clarkjarvis 0:d9cf7fb66406 51 }
clarkjarvis 0:d9cf7fb66406 52
clarkjarvis 0:d9cf7fb66406 53 void sframe(int channel, unsigned int lumm, unsigned int R, unsigned int G, unsigned int B)
clarkjarvis 0:d9cf7fb66406 54 {
clarkjarvis 0:d9cf7fb66406 55 // Send "1" value to start Frame
clarkjarvis 0:d9cf7fb66406 56 s1();
clarkjarvis 0:d9cf7fb66406 57 // Send Address
clarkjarvis 0:d9cf7fb66406 58 sdata(channel,6);
clarkjarvis 0:d9cf7fb66406 59 // Send Luminosity
clarkjarvis 0:d9cf7fb66406 60 sdata(lumm,8);
clarkjarvis 0:d9cf7fb66406 61 // Send Blue 4-bits
clarkjarvis 0:d9cf7fb66406 62 sdata(B,4);
clarkjarvis 0:d9cf7fb66406 63 // Send Green 4-bits
clarkjarvis 0:d9cf7fb66406 64 sdata(G,4);
clarkjarvis 0:d9cf7fb66406 65 // Send Red 4-bits
clarkjarvis 0:d9cf7fb66406 66 sdata(R,4);
clarkjarvis 0:d9cf7fb66406 67 // Send End of Frame Marker
clarkjarvis 0:d9cf7fb66406 68 end_frame();
clarkjarvis 0:d9cf7fb66406 69 }
clarkjarvis 0:d9cf7fb66406 70
clarkjarvis 0:d9cf7fb66406 71 int main()
clarkjarvis 0:d9cf7fb66406 72 {
clarkjarvis 0:d9cf7fb66406 73 led_red=1;
clarkjarvis 0:d9cf7fb66406 74 led_green=1;
clarkjarvis 0:d9cf7fb66406 75 led_blue=1;
clarkjarvis 0:d9cf7fb66406 76 gpo=0;
clarkjarvis 0:d9cf7fb66406 77
clarkjarvis 0:d9cf7fb66406 78 wait_ms(1000);
clarkjarvis 0:d9cf7fb66406 79
clarkjarvis 0:d9cf7fb66406 80 // Init
clarkjarvis 0:d9cf7fb66406 81 for (int i=0; i<=NB; i++) {
clarkjarvis 0:d9cf7fb66406 82 sframe(i,0,0,0,0);
clarkjarvis 0:d9cf7fb66406 83 }
clarkjarvis 0:d9cf7fb66406 84
clarkjarvis 0:d9cf7fb66406 85 while(1) {
clarkjarvis 0:d9cf7fb66406 86 for (int i=0; i<AL; i++) {
clarkjarvis 0:d9cf7fb66406 87 for (int j=0; j<NB; j++) {
clarkjarvis 0:d9cf7fb66406 88 sframe(j,LUM,rval[(i+j)%AL],gval[(i+j)%AL],bval[(i+j)%AL]);
clarkjarvis 0:d9cf7fb66406 89 }
clarkjarvis 0:d9cf7fb66406 90 wait_ms(10);
clarkjarvis 0:d9cf7fb66406 91 }
clarkjarvis 0:d9cf7fb66406 92 }
clarkjarvis 0:d9cf7fb66406 93 }