騒がしい未来

無駄に元気な毎日を送っている、チームラボ所属 高須正和のブログです。最近はtwitterメインで更新中

気がつくと買って一ヶ月、ここ三週間ぐらいぜんぜん触ってない。マズい。

来週には勉強会があるので、言い出しっぺとしてもう少し詳しくなっておく必要がある。

いつもお世話になっているブログの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);
}

image

 無事成功。どうやら、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で割った分待ちます。
  }
}

 

 成功!

IMG_0275

Arduino-Processing シリアル通信1(建築発明工作ゼミ2008)
http://kousaku-kousaku.blogspot.com/2008/05/arduino-processing.html

の記述を読みながら、

Arduinoにアナログスイッチ(可変抵抗器)をみのむしクリップで接続!

DSCN1237

 

ArduinoとProcessing側にプログラムを下記、実行すると….

image
スイッチをひねるたびに画面上をピンが動く!

image

スイッチをひねるたびに、ランダムに大きさの変わる円が画面を塗りつぶす!

などというテストをしました。

Arduinoに光センサをつなげて、

http://web.sfc.keio.ac.jp/~shokai/archives/2006/11/arduino-proce55ing-physicalcomputing.html

にあるソースを使って、Arduinoのシリアルコンソールから光センサの情報を取り出して、「明るいと1,暗いと0」という実験は成功。

ただ、Processingを使って、暗くなると丸が大きくなるサンプルはまだ試せていない。

光センサの入力のアナログ化もまだ。眠くなって力尽きてきたので今日はここまで。

先は長い…

携帯アクセス解析