ソレノイドを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でソレノイドの制御、ぜひ挑戦してください!

あわせて読みたい

コメントを残す

メールアドレスが公開されることはありません。