デジットで入手したフルカラーLEDの制御プログラムです。

Dependencies:   mbed

デジットで入手したフルカラーLEDの制御プログラム。

Committer:
MrBearing
Date:
Mon Jul 15 08:16:02 2013 +0000
Revision:
0:dc9726268dc6
Child:
1:00a40243c245
??????????????LED???????????

Who changed what in which revision?

UserRevisionLine numberNew contents of line
MrBearing 0:dc9726268dc6 1 /**
MrBearing 0:dc9726268dc6 2 * This program is test for p9813 IC
MrBearing 0:dc9726268dc6 3 **/
MrBearing 0:dc9726268dc6 4
MrBearing 0:dc9726268dc6 5
MrBearing 0:dc9726268dc6 6 #include "mbed.h"
MrBearing 0:dc9726268dc6 7
MrBearing 0:dc9726268dc6 8 //DigitalOut led(LED1);
MrBearing 0:dc9726268dc6 9 BusOut leds(LED1,LED2,LED3,LED4);
MrBearing 0:dc9726268dc6 10 AnalogIn analog(p15);
MrBearing 0:dc9726268dc6 11
MrBearing 0:dc9726268dc6 12
MrBearing 0:dc9726268dc6 13 #define H 1
MrBearing 0:dc9726268dc6 14 #define L 0
MrBearing 0:dc9726268dc6 15
MrBearing 0:dc9726268dc6 16 DigitalOut di(p10);//signal
MrBearing 0:dc9726268dc6 17 DigitalOut ci(p11);//clock
MrBearing 0:dc9726268dc6 18
MrBearing 0:dc9726268dc6 19 void sendBit(char bit){
MrBearing 0:dc9726268dc6 20 ci =L;
MrBearing 0:dc9726268dc6 21 di = (bit==0 ? L:H );
MrBearing 0:dc9726268dc6 22 ci=H;//read DI at rising edge
MrBearing 0:dc9726268dc6 23 }
MrBearing 0:dc9726268dc6 24 char toGrayCode(char byte){
MrBearing 0:dc9726268dc6 25 char shift = byte>>1;
MrBearing 0:dc9726268dc6 26 return shift^byte;
MrBearing 0:dc9726268dc6 27 }
MrBearing 0:dc9726268dc6 28
MrBearing 0:dc9726268dc6 29 void sendByte(char byte){
MrBearing 0:dc9726268dc6 30 char mask =0x80;
MrBearing 0:dc9726268dc6 31 for( ; mask != 0x00 ; mask>>=1){// 1000 0000
MrBearing 0:dc9726268dc6 32 sendBit(byte & mask);
MrBearing 0:dc9726268dc6 33 }
MrBearing 0:dc9726268dc6 34 }
MrBearing 0:dc9726268dc6 35
MrBearing 0:dc9726268dc6 36 void sendStartFrame(){
MrBearing 0:dc9726268dc6 37 for(int i = 0; i<4 ;i++){
MrBearing 0:dc9726268dc6 38 sendByte(0x00);
MrBearing 0:dc9726268dc6 39 }
MrBearing 0:dc9726268dc6 40 }
MrBearing 0:dc9726268dc6 41
MrBearing 0:dc9726268dc6 42 void sendStopFrame(){
MrBearing 0:dc9726268dc6 43 sendStartFrame();
MrBearing 0:dc9726268dc6 44 }
MrBearing 0:dc9726268dc6 45
MrBearing 0:dc9726268dc6 46 void sendRGB(char rb,char gb ,char bb){
MrBearing 0:dc9726268dc6 47 printf("******\n");
MrBearing 0:dc9726268dc6 48 printf("r is %X \n",rb);
MrBearing 0:dc9726268dc6 49 printf("g is %X \n",gb );
MrBearing 0:dc9726268dc6 50 printf("b is %X \n",bb );
MrBearing 0:dc9726268dc6 51 printf("******\n\n");
MrBearing 0:dc9726268dc6 52
MrBearing 0:dc9726268dc6 53 char r = toGrayCode(rb);
MrBearing 0:dc9726268dc6 54 char g = toGrayCode(gb);
MrBearing 0:dc9726268dc6 55 char b = toGrayCode(bb);
MrBearing 0:dc9726268dc6 56
MrBearing 0:dc9726268dc6 57 sendStartFrame();
MrBearing 0:dc9726268dc6 58 sendBit(H);
MrBearing 0:dc9726268dc6 59 sendBit(H);
MrBearing 0:dc9726268dc6 60 // error check
MrBearing 0:dc9726268dc6 61 sendBit( (~b) & 0x80 );//mask by 1000 0000
MrBearing 0:dc9726268dc6 62 sendBit( (~b) & 0x40 );//mask by 0100 0000
MrBearing 0:dc9726268dc6 63 sendBit( (~g) & 0x80 );//mask by 1000 0000
MrBearing 0:dc9726268dc6 64 sendBit( (~g) & 0x40 );//mask by 0100 0000
MrBearing 0:dc9726268dc6 65 sendBit( (~r) & 0x80 );//mask by 1000 0000
MrBearing 0:dc9726268dc6 66 sendBit( (~r) & 0x40 );//mask by 0100 0000
MrBearing 0:dc9726268dc6 67 //send RGB data
MrBearing 0:dc9726268dc6 68 sendByte(b);
MrBearing 0:dc9726268dc6 69 sendByte(g);
MrBearing 0:dc9726268dc6 70 sendByte(r);
MrBearing 0:dc9726268dc6 71 sendStopFrame();
MrBearing 0:dc9726268dc6 72 }
MrBearing 0:dc9726268dc6 73
MrBearing 0:dc9726268dc6 74
MrBearing 0:dc9726268dc6 75
MrBearing 0:dc9726268dc6 76 int main() {
MrBearing 0:dc9726268dc6 77 leds =0x0;
MrBearing 0:dc9726268dc6 78 while(1) {
MrBearing 0:dc9726268dc6 79
MrBearing 0:dc9726268dc6 80 leds=leds+1;
MrBearing 0:dc9726268dc6 81 sendRGB(0x00,0x00,0xFF);
MrBearing 0:dc9726268dc6 82 wait(2.0*analog.read());
MrBearing 0:dc9726268dc6 83 leds=leds+1;
MrBearing 0:dc9726268dc6 84 sendRGB(0xFF,0x00,0x00);
MrBearing 0:dc9726268dc6 85 wait(2.0*analog.read());
MrBearing 0:dc9726268dc6 86 leds=leds+1;
MrBearing 0:dc9726268dc6 87 sendRGB(0x00,0xFF,0x00);
MrBearing 0:dc9726268dc6 88 wait(2.0*analog.read());
MrBearing 0:dc9726268dc6 89 leds=leds+1;
MrBearing 0:dc9726268dc6 90 }
MrBearing 0:dc9726268dc6 91 }