RPU-10講座/第十四章 目玉LEDの点灯
すいません m(_ _)m、本記事はブログ引越時に書式が崩れました。順次修正中です。
今回はジャイロに続いて、またまたコネクタを作ります。
RPU-10にはLED点灯用の端子が付いていますが、実はこのLED制御、PWM制御…高速でLEDをON/OFFさせ、ONの時間を長くすると明るくなり、OFFの時間を長くすると理解してもらえればよいかと…によって明るく点灯したり、暗く点灯したりすることができ、連続で変化させると、「ふわっふわっ」という感じで点灯させることができます。また、2つのLEDを制御できますが、独立で輝度を変化させることができます。
■LEDを接続する方法
「RPU-10講座/第十二章 ジャイロセンサの接続」にてやりましたが、同じように、今度は3Pでケーブルを作成します。配線は以下のとおりです。
最初、てっきり吸い込み電流でLEDを点灯させているのかな?と思ったのですが、RPU-10を開けて基板を眺めていたら逆のようで、共通になっている端子がグランドであることがわかりました。あとはこっそりGR-001の目玉基板を見せてもらってちょっと研究…で、以下のような配線図になりました。G-TuneF108Mでは、青色のLEDを470Ωの抵抗を経由して接続しています。今回の組み込み方は、青色のアクリル板がボワっと光るのでお気に入りです。
■サンプルプログラム
1: //—————————————————————————————-
2: // 2個LEDをふわふわっと点滅させます。
3: // ひたすらふわふわ点滅します。
4: //
5: // 環境 RPU-10、GDL V2.00
6: // 説明 ビルドされた本プログラムをRPU-10へ転送後、パソコン側で「SIMPLE TERM」(GDLに
7: // 同梱)などを使って通信速度115200bpsで通信ポートを開いてください。その後RPU-10
8: // を再起動するとプログラムがスタートし、「SIMPLE TERM」の方に起動文字列が表示
9: // され、LED点滅を実行します。他には何もしません。
10: //
11: // AUTHORED BY SISO JUNK STDUIO
12: //—————————————————————————————-
13: #include <avr/pgmspace.h>
14: #include <avr/io.h>
15: #include <avr/interrupt.h>
16: #include <avr/eeprom.h>
17: #include <stdio.h>
18: #include <avr/boot.h>
19: #include <avr/wdt.h>
20:
21: #include <sv.h>
22: #include <rs.h>
23:
24: int main( void )
25: {
26: short sCnt; // ループ用カウンタ(LED輝度指示兼用)
27:
28: RPU_InitConsole( br115200 ); // RPU-10ライブラリの初期化
29: SV_Init( br115200 ); // サーボ制御ライブラリの初期化
30: sei(); // 割り込み処理開始
31:
32: // 1秒待つ(よく知らないけど必要らしい)
33: RPU_ResetTimerCounter();
34: while( RPU_GetTimerCounter10() < 100 );
35:
36: // 起動メッセージの表示
37: rs0_puts_P( PSTR( “EYES LED PROGRAM\n” ));
38: while( 1 ){
39: for( sCnt = 0; sCnt <= 500; sCnt += 10 ){
40: RPU_SetLedBrightness( sCnt, sCnt );
41: RPU_ResetTimerCounter();
42: while( RPU_GetTimerCounter10() < 1 );
43: }
44: for( sCnt = 500; sCnt >= 0; sCnt -= 10 ){
45: RPU_SetLedBrightness( sCnt, sCnt );
46: RPU_ResetTimerCounter();
47: while( RPU_GetTimerCounter10() < 1 );
48: }
49: }
50:
51: return 1;
52: }
■動作中の動画
「動作中の動画」とか言いながら、実はG-TuneF108Mの紹介で使っているプログラムと同じなので、流用しちゃいますが、こんな感じで光ります。
■今回使用した関数
- short RPU_SetLedBrightness( short r, short l );
2個のLEDのそれぞれを指定します。視覚的にわかるのは0~512ぐらいです。0にしても真っ暗にはならないのですが、まあそれはそれで綺麗です。レジスタをちゃんと調べれば、値の上限などがわかるのですが、そこまでは調査していません。まあ、それなりに動くので、追求はこれぐらいにしておきます。
※注意:本BLOGにてRPU-10での再プログラミングについての情報を公開していますが、これらはSISOが個人的に再プログラミングを行った時の技術情報を整理して紹介しています。GDLへのRPU-10ライブラリ同梱については、 Best Technologyさんのご好意で、趣味人への1つのチャンスとして同梱してくださっていると理解しています。そのため、RPU-10の再プログラミングについては、くれぐれもご自身の責任で、また、Best TechnologyさんやFUTABAさんに問い合わせたりすることの無いようにお願いいたします。
こんばんわ
LED綺麗ですね!
ふわふわっとして、
夜間の飛行機の点滅灯のような感じの光り方が
もう~そそります!