![](/media/cache/profiles/avater.png.50x50_q85.jpg)
デジットで入手したフルカラーLEDの制御プログラムです。
デジットで入手したフルカラーLEDの制御プログラム。
main.cpp
- Committer:
- MrBearing
- Date:
- 2013-07-15
- Revision:
- 0:dc9726268dc6
- Child:
- 1:00a40243c245
File content as of revision 0:dc9726268dc6:
/** * This program is test for p9813 IC **/ #include "mbed.h" //DigitalOut led(LED1); BusOut leds(LED1,LED2,LED3,LED4); AnalogIn analog(p15); #define H 1 #define L 0 DigitalOut di(p10);//signal DigitalOut ci(p11);//clock void sendBit(char bit){ ci =L; di = (bit==0 ? L:H ); ci=H;//read DI at rising edge } char toGrayCode(char byte){ char shift = byte>>1; return shift^byte; } void sendByte(char byte){ char mask =0x80; for( ; mask != 0x00 ; mask>>=1){// 1000 0000 sendBit(byte & mask); } } void sendStartFrame(){ for(int i = 0; i<4 ;i++){ sendByte(0x00); } } void sendStopFrame(){ sendStartFrame(); } void sendRGB(char rb,char gb ,char bb){ printf("******\n"); printf("r is %X \n",rb); printf("g is %X \n",gb ); printf("b is %X \n",bb ); printf("******\n\n"); char r = toGrayCode(rb); char g = toGrayCode(gb); char b = toGrayCode(bb); sendStartFrame(); sendBit(H); sendBit(H); // error check sendBit( (~b) & 0x80 );//mask by 1000 0000 sendBit( (~b) & 0x40 );//mask by 0100 0000 sendBit( (~g) & 0x80 );//mask by 1000 0000 sendBit( (~g) & 0x40 );//mask by 0100 0000 sendBit( (~r) & 0x80 );//mask by 1000 0000 sendBit( (~r) & 0x40 );//mask by 0100 0000 //send RGB data sendByte(b); sendByte(g); sendByte(r); sendStopFrame(); } int main() { leds =0x0; while(1) { leds=leds+1; sendRGB(0x00,0x00,0xFF); wait(2.0*analog.read()); leds=leds+1; sendRGB(0xFF,0x00,0x00); wait(2.0*analog.read()); leds=leds+1; sendRGB(0x00,0xFF,0x00); wait(2.0*analog.read()); leds=leds+1; } }