このチュートリアルは武蔵野美術大学通信教育課程授業用に作成したものです。
今回は授業課題のイメージを掴むために具体的なサンプルを挙げ、ステップバイステップでプログラミングしてゆきます。
サンプルとして「光を注ぐと花が開く花瓶」を考えてみます。今回は光を検知するためにCDSセルを、花を開かせるためにサーボモータで糸を引っ張るといった構成にしてみましょう。
アイディア
花に水をあげるような行為か等発想してみます。
水の代わりに光を注ぐ行為で花が喜んでいるかのような動きを見せると可愛いのではないかという仮説を持ちました。
茎に見立てたパイプに糸を通してサーボモータで角度指定をして糸を引っ張る構成にしてみます。そして糸を引っ張ると軸を中心に花びらが開くような機構を作り、開閉しているような挙動を検討しました。
さてデバイスエンジニアリングの検討としてはこちらとこちらのサンプルを応用してゆきます。
プログラム
まずは簡単にでも動作する物が作りたいので、スケッチの例からServo / Knobを呼び出しアップロードします。
#include <Servo.h> Servo myservo; // create servo object to control a servo int potpin = A0; // analog pin used to connect the potentiometer int val; // variable to read the value from the analog pin void setup() { myservo.attach(9); // attaches the servo on pin 9 to the servo object } void loop() { val = analogRead(potpin); // reads the value of the potentiometer (value between 0 and 1023) val = map(val, 0, 1023, 0, 180); // scale it for use with the servo (value between 0 and 180) myservo.write(val); // sets the servo position according to the scaled value delay(15); // waits for the servo to get there }
上記は一部コメントを削除しています。
上記プログラムをアップロードしたときの挙動を確認できました。光を当てるとサーボの角度が変化します。
この状態が確認できれば、まずは機器構成がある程度見えてきますので、外装や花弁などを製作するグループメンバーに同じようにArduino機器構成をクローンして渡してあげましょう。
プログラムとしては、まだまだ完璧ではないので、ブラッシュアップする余地があります。
・光の強さがどのくらいだと、サーボがどのくらい回転するのか?
・サーボがプルプルせず安定した位置で待機できるか?
・花が開く速さやタイミングは?
上記のような課題を残り時間と相談しながら実装してゆきます。