じゃあ、次は単純に2つのLEDを接続して、ホタルのように「ほわっ」と明るくしたり、暗くしたり
して見ます。
これは、PWM出力ができるポートにLEDを接続すれば良いのですが・・・
デジタル出力と違って、あらかじめ pinMode( ) で出力設定をしておかなくても良いようです。
プログラムは
#define G_LED 9
#define R_LED 10
void setup()
{
}
void loop()
{
int i;
for( i=0;i<=100;i++ )
{
analogWrite(G_LED,i);
analogWrite(R_LED,100-i);
delay(20);
}
delay(500);
for( i=0;i<=100;i++ )
{
analogWrite(G_LED,100-i);
analogWrite(R_LED,i);
delay(20);
}
delay(500);
}
こんな感じです。
基本中の基本として、Digital Output を確認します。
昨年の夏休みの工作(研究?)に、Yが信号機の動きをAVRで実現したのがありましたので・・・
あれ、もどきを再現してみました。
やっと、Makeで買ってきたジャンパー線が役に立ちました。
とはいえ、さすがに配線が多いのはめんどいので、5個のLEDで、片側の信号機の動きを実現してます。
プログラムはこんなの
#define GH_LED 8
#define RH_LED 9
#define G_LED 11
#define Y_LED 12
#define R_LED 13
void setup()
{
pinMode( GH_LED,OUTPUT );
pinMode( RH_LED,OUTPUT );
pinMode( G_LED,OUTPUT );
pinMode( Y_LED,OUTPUT );
pinMode( R_LED,OUTPUT );
}
void loop()
{
int i;
digitalWrite( G_LED,HIGH );
digitalWrite( GH_LED,HIGH );
delay( 3000 );
for( i=0; i<5 ;i++ )
{
digitalWrite( GH_LED,LOW );
delay( 500 );
digitalWrite( GH_LED,HIGH );
delay( 500 );
}
digitalWrite( GH_LED,LOW );
digitalWrite( RH_LED,HIGH );
delay( 1000 );
digitalWrite( G_LED,LOW );
digitalWrite( Y_LED,HIGH );
delay( 2000 );
digitalWrite( Y_LED,LOW );
digitalWrite( R_LED,HIGH );
delay( 4000 );
digitalWrite( R_LED,LOW );
digitalWrite( RH_LED,LOW );
}
これだけで、出来ちゃうのだから・・・簡単ですねぇ。
Arduinoちょっと好きになっちゃったかも!
ずっと前に買ってあった、大人の科学マガジンのArduino互換機を試してみました。
(互換機なので、「Japanino」なのですが、表記が面倒なので以降も「Arduino」と記載します。)
先ずはIDEとドライバをダウンロードします。
ダウンロードしたIDEをインストールします。(ディレクトリ arduino-0018 の中の arduino.exe を実行します。)
そして、ドライバをインスト-ルします。(CP210x_VCP_Win_XP_S2K3_Vista_7.exeを実行します。)
そうしたら・・・あっさり終了です。
スケッチのところに、簡単なプログラムを書いて見ます。
そして、コンパイルして転送すると・・・
基板上のLEDがゆっくりと点滅します。 成功!
でも、このLEDが「ずっと点滅していて」うざい!
消す方法は無いの?
というわけで、「新規」で「何もしないプログラム」を作って、それをArduinoに転送して消してます。 本当に、こんな使い方でいいの?
なんで、急に始めたの?
って言うと・・・今年の夏休みの宿題に、昨年の信号機の続きをやりたいというYの発言に・・・「Arduinoなら、もっと簡単にできるんじゃないの」と安易に答えてしまったので・・・自分の勉強も兼ねてやってみますかねぇ。
大人の科学も読んだだけで、箱の中はそのままだったし・・・