気がつくと買って一ヶ月、ここ三週間ぐらいぜんぜん触ってない。マズい。
来週には勉強会があるので、言い出しっぺとしてもう少し詳しくなっておく必要がある。
いつもお世話になっているブログのArduino+Proce55ingで3分PhysicalComputingの記事を見ながら、ブレッドボード上に光センサの仕組みを作り、シリアル値を読み取るソースをArduinoに書く。
int ad;
void setup()
{
Serial.begin(9600);
}void loop()
{
ad = analogRead(0);
if(ad > 500){
Serial.println(’1′);
}
else{
Serial.println(’0′);
}
delay(100);
}
これだと1か0しか出ないから、どういう入力なのかよくわからないので、こういうソースにして、アナログの読み出しがそのまま画面に出るようにする。
int ad;
void setup()
{
Serial.begin(9600);
}void loop()
{
ad = analogRead(0);
Serial.println(ad);
delay(100);
}
無事成功。どうやら、0-1023の間で数値が行き来するようだ。
光るのと暗くなるのとで、点滅の間隔が変わるLEDを作りたい。
とりあえず13番PinにLEDを刺して、LEDも光るようにして、LEDが光る感覚にadを入れるようにする。
int ad; //adという変数を作ります。
int ledPin = 13; // 13ピンのLEDとして、ledPinという変数を作ります。void setup()
{
Serial.begin(9600); //シリアル通信開始
pinMode(ledPin, OUTPUT); // 13番のデジタル出力を設定します。
}void loop()
{
ad = analogRead(0); //adにanaogReadを代入
Serial.println(ad); //adを画面表示
digitalWrite(ledPin, HIGH); // ledPinをONにします。
delay(ad/5); // adを5で割ったミリ秒待ちます。
digitalWrite(ledPin, LOW); // ledPinをOFFにします。
delay(ad/5); // adを5で割ったミリ秒待ちます。
}
見事に、まわりが暗いと激しく光り、明るいとそれなりにピカピカ光るArduinoができた!
次に、まわりが明るいと、LEDが光らないようにしたい。
一番最初のチュートリアルにある、loop文を使えば、できるんじゃないかな?
int ad;
int ledPin = 13; // 13ピンのLEDとして、ledPinという変数を作ります。void setup()
{
Serial.begin(9600);
pinMode(ledPin, OUTPUT); // 13番のデジタル出力を設定します。
}void loop()
{
ad = analogRead(0);
Serial.println(ad);
if(ad > 700){ //もし周囲がそれなりに明るかったら
delay(ad); //ずっと待つ
}
else{ // 暗かったら
digitalWrite(ledPin, HIGH); // ledPinをONにします。
delay(ad/5); // 光センサの出力を5で割った分待ちます。
digitalWrite(ledPin, LOW); // ledPinをOFFにします。
delay(ad/5); // 光センサの出力を5で割った分待ちます。
}
}
成功!