騒がしい未来

無駄に元気な毎日を送っている、チームラボ所属 高須正和のブログです。最近は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

No Comments :(

 
携帯アクセス解析