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

Dependencies:   mbed

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

Committer:
MrBearing
Date:
Mon Jul 15 12:46:16 2013 +0000
Revision:
1:00a40243c245
Parent:
0:dc9726268dc6
int???????????????

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 1:00a40243c245 46
MrBearing 0:dc9726268dc6 47 void sendRGB(char rb,char gb ,char bb){
MrBearing 1:00a40243c245 48 /*
MrBearing 0:dc9726268dc6 49 printf("******\n");
MrBearing 0:dc9726268dc6 50 printf("r is %X \n",rb);
MrBearing 0:dc9726268dc6 51 printf("g is %X \n",gb );
MrBearing 0:dc9726268dc6 52 printf("b is %X \n",bb );
MrBearing 0:dc9726268dc6 53 printf("******\n\n");
MrBearing 1:00a40243c245 54 */
MrBearing 0:dc9726268dc6 55 char r = toGrayCode(rb);
MrBearing 0:dc9726268dc6 56 char g = toGrayCode(gb);
MrBearing 0:dc9726268dc6 57 char b = toGrayCode(bb);
MrBearing 0:dc9726268dc6 58
MrBearing 0:dc9726268dc6 59 sendStartFrame();
MrBearing 0:dc9726268dc6 60 sendBit(H);
MrBearing 0:dc9726268dc6 61 sendBit(H);
MrBearing 0:dc9726268dc6 62 // error check
MrBearing 0:dc9726268dc6 63 sendBit( (~b) & 0x80 );//mask by 1000 0000
MrBearing 0:dc9726268dc6 64 sendBit( (~b) & 0x40 );//mask by 0100 0000
MrBearing 0:dc9726268dc6 65 sendBit( (~g) & 0x80 );//mask by 1000 0000
MrBearing 0:dc9726268dc6 66 sendBit( (~g) & 0x40 );//mask by 0100 0000
MrBearing 0:dc9726268dc6 67 sendBit( (~r) & 0x80 );//mask by 1000 0000
MrBearing 0:dc9726268dc6 68 sendBit( (~r) & 0x40 );//mask by 0100 0000
MrBearing 0:dc9726268dc6 69 //send RGB data
MrBearing 0:dc9726268dc6 70 sendByte(b);
MrBearing 0:dc9726268dc6 71 sendByte(g);
MrBearing 0:dc9726268dc6 72 sendByte(r);
MrBearing 0:dc9726268dc6 73 sendStopFrame();
MrBearing 0:dc9726268dc6 74 }
MrBearing 0:dc9726268dc6 75
MrBearing 1:00a40243c245 76 void sendRGB(int rgb){
MrBearing 1:00a40243c245 77 char r = (char) ((rgb & 0x00FF0000) >> 16);
MrBearing 1:00a40243c245 78 char g = (char) ((rgb & 0x0000FF00) >> 8);
MrBearing 1:00a40243c245 79 char b = (char) ( rgb & 0x000000FF);
MrBearing 1:00a40243c245 80 //printf("r:%X,g:%X,b:%X \n",r,g,b);
MrBearing 1:00a40243c245 81 sendRGB(r,g,b);
MrBearing 1:00a40243c245 82 }
MrBearing 1:00a40243c245 83
MrBearing 0:dc9726268dc6 84
MrBearing 0:dc9726268dc6 85
MrBearing 0:dc9726268dc6 86 int main() {
MrBearing 1:00a40243c245 87 int rgb =0x000000;
MrBearing 1:00a40243c245 88 int color[] ={
MrBearing 1:00a40243c245 89 0x00000000,
MrBearing 1:00a40243c245 90 0x000000FF,
MrBearing 1:00a40243c245 91 0x0000FF00,
MrBearing 1:00a40243c245 92 0x0000FFFF,
MrBearing 1:00a40243c245 93 0x00FF0000,
MrBearing 1:00a40243c245 94 0x00FF00FF,
MrBearing 1:00a40243c245 95 0x00FFFF00,
MrBearing 1:00a40243c245 96 0x00FFFFFF};
MrBearing 0:dc9726268dc6 97 leds =0x0;
MrBearing 1:00a40243c245 98 int index=0;
MrBearing 0:dc9726268dc6 99 while(1) {
MrBearing 1:00a40243c245 100 //printf("%d\n",index);
MrBearing 0:dc9726268dc6 101 leds=leds+1;
MrBearing 1:00a40243c245 102 sendRGB(color[index]);
MrBearing 1:00a40243c245 103 index++;
MrBearing 1:00a40243c245 104 if(index == 8){
MrBearing 1:00a40243c245 105 index = 0;
MrBearing 1:00a40243c245 106 //printf("******");
MrBearing 1:00a40243c245 107 }
MrBearing 0:dc9726268dc6 108 wait(2.0*analog.read());
MrBearing 1:00a40243c245 109 /*
MrBearing 0:dc9726268dc6 110 leds=leds+1;
MrBearing 0:dc9726268dc6 111 sendRGB(0xFF,0x00,0x00);
MrBearing 0:dc9726268dc6 112 wait(2.0*analog.read());
MrBearing 0:dc9726268dc6 113 leds=leds+1;
MrBearing 0:dc9726268dc6 114 sendRGB(0x00,0xFF,0x00);
MrBearing 0:dc9726268dc6 115 wait(2.0*analog.read());
MrBearing 0:dc9726268dc6 116 leds=leds+1;
MrBearing 1:00a40243c245 117 */
MrBearing 0:dc9726268dc6 118 }
MrBearing 0:dc9726268dc6 119 }