ソレノイドをArduinoで制御しよう【付録編②】
③スイッチを追加する
④センサーを追加する
⑤ センサーに手をかざしたらLEDが点灯する動作
⑥他のソレノイドを使用する
③スイッチを追加する
【 スイッチ 】
タクトスイッチ裏面中央の溝を基準として▲グループと×︎グループに分け、上の写真を簡略化して図にします。
スイッチを押していない時でも▲同士、×同士はつながっています。スイッチを押すと図の▲チームと×チームがつながり、電流が流れてLEDが点灯します。(工夫すれば長押し判定もできます。)
【回路】
【プログラム】
スイッチは、ArduinoとLEDの間のワンクッション置いているだけなので、プログラムは付録②の内容と同じです。
プログラム | 説明 |
int LED = 8; void setup() { pinMode(LED,OUTPUT); } void loop() { //loop関数 digitalWrite(LED,HIGH); } |
ピン定義 【setup関数】 LEDピンを出力として設定 【loop関数】 LEDピンにHIGHを出力 |
④センサーを追加する
【センサー】
CdSセンサーを使用します。CdSセンサーは明るさの度合いを感知し、暗くなったら抵抗が大きくなります。ArduinoがCdSセンサーから取得した電圧値を読み取られるように設計しましょう。
【回路】
センサーから、Arduinoに入力が行われるため、Arduino上の「ANALOG IN」のピン(赤枠、A0〜A5)にセンサーを接続します。
【プログラム】
プログラム | 説明 |
void setup() { Serial.begin(9600); } void loop() { int sensorValue =analogRead(A0); Serial.println(sensorValue); delay(500); } |
【setup関数】 【loop関数】 sensoValueに読み込んだ値を代入 sensoValueの値をシリアルモニターに表示 |
analogRead()関数とは!? センサーから読み取った0〜5[V]の電圧値を0〜1023の1024段階の数字に変換して読み取ります。Serial.println()関数を使うと0〜1023の数字を別のウィンドウで見ることができます。このとき、setup()関数内でSerial.begin()関数が必要となります。Serial.begin(9600)とすると、9.6秒ごとに別ウィンドウ(シリアルモニター)でセンサーから読み取った値を1024段階の数字に変換して表示します。ちなみに、CdSセンサーは「暗くなった」と感知したら抵抗値が大きなるのでシリアルモニターに表示される値が大きくなります。
上のスクリーンショットは、シリアルモニターのウィンドウです。センサーに手をかざしたあたりから値が800になっていることがわかります。この値は、センサーと直列に繋げている抵抗の値や、その場自体の明るさで変化するので、ご自身で確認してみてください。
⑤センサーに手をかざしたらLEDが点灯する動作
センサーに手をかざしたらLEDが点灯するようにプログラムしてみましょう
【プログラム】
プログラム | 説明 |
int LED = 8; void setup() { pinMode(LED,OUTPUT); } void loop() { int value = analogRead(A5); if(value>800){ digitalWrite(LED,HIGH); } else{ digitalWrite(LED,LOW); } delay(100); } |
ピン定義 【setup関数】 LEDピンを出力として設定 【loop関数】 センサーの値を読み取ってvalueという関数に入れる →valueが800以上の時 LEDピンにHIGHを出力 →valueが800以下の時 LEDピンにLOWを出力 100ミリ秒待つ |
「暗くなったと感知したら、LEDを点灯させる」という命令を加えるために、if文を使いました。if文では、()内の条件を満たせば{}内の文が実行されます。ここでは、センサーが読み取った値を先ほどの準備から800と設定し、その値を超えたらLEDが点灯するようにしています。
⑥他のソレノイドを使用する
CBS08300120以外のソレノイドを使用する場合は、使用するトランジスタや抵抗を変更する必要があります。下の回路図が、トランジスタを使用した時の回路図です。
トランジスタは、電気の流れの制御や電流を増幅させる作用があります。使用するトランジスタのデータシートより、hfe(電流増幅率)の最小値、VBE(ベース-エミッタ電圧)を確認してください。
Arduinoの出力は5[V]、ソレノイドの電圧を6[V]と固定します。ソレノイドは品番によって抵抗値が異なるので、ソレノイドの抵抗をRsとします。ソレノイド、トランジスタに合わせて必要な抵抗の値を求めます。
Arduinoでソレノイドの制御、ぜひ挑戦してください!