GR-SAKURAでフルカラーLEDリボンの制御

| | トラックバック(0)
RenesasRulzで助言を受けながら、GR-SAKURAでフルカラーLEDリボンの制御できました。注意として、リボンの電源は、3.3V電源のマイコンから使う場合、5Vでなく、少し電圧を落として使わないと、制御信号のHレベルが認識されない。対策としては、電源に直結で、整流ダイオードを一ついれる。1mのリボンで3A強の電流が流れるようなので、ダイオードもそれなりの電流のものを使う。



サンプルソースコードは、、、、
/*GR-SAKURA Sketch Template Version: V1.08*/
/* (C) 2014, DIGI-P, BSD LICENSE for AS-IS */
#include <rxduino.h> #include <iodefine_gcc63n.h> const int waitHigh0 = 6; const int waitLow0 = 13; const int waitHigh1 =12; const int waitLow1 = 10; const int waitRet = 1000; void code_0(void); void code_1(void); void code_ret(void); void intrTimer(void); uint8_t p2podr; uint8_t p21high; uint8_t p21low; unsigned char r[256]; unsigned char g[256]; unsigned char b[256]; unsigned char ptr = 0; unsigned int timerCnt = 0; unsigned int loopCnt = 0; void setup() { int i; pinMode(PIN_LED0,OUTPUT); pinMode(PIN_LED1,OUTPUT); pinMode(PIN_LED2,OUTPUT); pinMode(PIN_LED3,OUTPUT); p2podr = PORT2.PODR.BYTE; p21high = p2podr | 0x02; p21low = p2podr & ~0x02; for( i=0; i<256; i++ ) { r[i] = 0x00; g[i] = 0x00; b[i] = 0x00; } pinMode( 0 ,OUTPUT); code_ret(); timer_regist_userfunc(intrTimer); } void code_0(void) { int i; PORT2.PODR.BIT.B1 = 1; for ( i=0; i<waitHigh0; i++ ) { asm volatile ("nop\n"); } PORT2.PODR.BIT.B1 = 0; for ( i=0; i<waitLow0; i++ ) asm volatile ("nop\n"); } void code_1(void) { int i; PORT2.PODR.BIT.B1 = 1; for ( i=0; i<waitHigh1; i++ ) { asm volatile ("nop\n"); } PORT2.PODR.BIT.B1 = 0; for ( i=0; i<waitLow1; i++ ) asm volatile ("nop\n"); } void code_ret(void) { int i; for ( i=0; i<waitRet; i++ ) asm volatile ("nop\n"); } void intrTimer(void) { int i; unsigned char cur; if ( ((timerCnt++) % 10) != 0 ) return; for( i=0, cur=(ptr - 1); i<256; i++, cur-- ) { // Green if (g[cur] & 0x80) code_1(); else code_0(); if (g[cur] & 0x40) code_1(); else code_0(); if (g[cur] & 0x20) code_1(); else code_0(); if (g[cur] & 0x20) code_1(); else code_0(); if (g[cur] & 0x08) code_1(); else code_0(); if (g[cur] & 0x04) code_1(); else code_0(); if (g[cur] & 0x02) code_1(); else code_0(); if (g[cur] & 0x01) code_1(); else code_0(); // Red if (r[cur] & 0x80) code_1(); else code_0(); if (r[cur] & 0x40) code_1(); else code_0(); if (r[cur] & 0x20) code_1(); else code_0(); if (r[cur] & 0x10) code_1(); else code_0(); if (r[cur] & 0x08) code_1(); else code_0(); if (r[cur] & 0x04) code_1(); else code_0(); if (r[cur] & 0x02) code_1(); else code_0(); if (r[cur] & 0x01) code_1(); else code_0(); // Blue if (b[cur] & 0x80) code_1(); else code_0(); if (b[cur] & 0x40) code_1(); else code_0(); if (b[cur] & 0x20) code_1(); else code_0(); if (b[cur] & 0x10) code_1(); else code_0(); if (b[cur] & 0x08) code_1(); else code_0(); if (b[cur] & 0x04) code_1(); else code_0(); if (b[cur] & 0x02) code_1(); else code_0(); if (b[cur] & 0x01) code_1(); else code_0(); } code_ret(); } void color_phase( unsigned char *r, unsigned char *g, unsigned char *b, unsigned int phase ) // 12bit { unsigned int theta = phase & 0xfff; unsigned int offset = theta % 683; switch ( theta / 683 ) { case 0: *r = 0xff; *g = (offset * 255)/ 683; *b = 0x00; break; case 1: *r = ((683 - offset) * 255)/ 683; *g = 0xff; *b = 0x00; break; case 2: *r = 0x00; *g = 0xff; *b = (offset * 255)/ 683; break; case 3: *r = 0x00; *g = ((683 - offset) * 255)/ 683; *b = 0xff; break; case 4: *r = (offset * 255)/ 683; *g = 0x00; *b = 0xff; break; case 5: default: *r = 0xff; *g = 0x00; *b = ((683 - offset) * 255)/ 683; } } void loop() { color_phase( &(r[ptr]), &(g[ptr]), &(b[ptr]), loopCnt ); ptr++; loopCnt += 10; delay(100); }

-------


ご参考♪

トラックバック(0)

このブログ記事を参照しているブログ一覧: GR-SAKURAでフルカラーLEDリボンの制御

このブログ記事に対するトラックバックURL: http://the.nerd.jp/blogs/cgi-bin/mt-tb.cgi/4898

リンク用バナ画像

Thank you for visitors:

from 7th, May. 2005

2014年2月

            1
2 3 4 5 6 7 8
9 10 11 12 13 14 15
16 17 18 19 20 21 22
23 24 25 26 27 28  

MY TWITTER

今月のイラスト/ムービー

応援サイト、その他




Visit RenderSan
<-- script type="text/javascript" src="http://swf.mikunavi.net/miku" width=150 height=44 --><-- /script --><-- br / -->
 

このブログ記事について

このページは、Digi Pontaが2014年2月16日 08:15に書いたブログ記事です。

ひとつ前のブログ記事は「コミケ86のサークル参加申込」です。

次のブログ記事は「γ線分光計のフルカラーLEDリボン連携♪」です。

最近のコンテンツはインデックスページで見られます。過去に書かれたものはアーカイブのページで見られます。

Powered by Movable Type 4.01

マイサイト





Trackback People






注)「Calture」の正しい綴りは、「Culture」です。お間違いないように。