ソレコン、あっという間に第5回目となりました!!!!
ご応募ありがとうございました!
今回もユニークな作品ばかりです。どうやったらこんなにアイディアが沸くのか・・・
そして形にする行動力と技術力!素晴らしいです(♡ >ω< ♡)![]()
ぜひ、第5回ソレコン応募作品すべてご覧いただきたいです!![]()
動画は全て2分以内なのであっという間ですよ~
過去すべてのコンテストの作品はコチラからどうぞ!
にほんブログ村 |
にほんブログ村 |
にほんブログ村 |
ソレコン、あっという間に第5回目となりました!!!!
ご応募ありがとうございました!
今回もユニークな作品ばかりです。どうやったらこんなにアイディアが沸くのか・・・
そして形にする行動力と技術力!素晴らしいです(♡ >ω< ♡)![]()
ぜひ、第5回ソレコン応募作品すべてご覧いただきたいです!![]()
動画は全て2分以内なのであっという間ですよ~
過去すべてのコンテストの作品はコチラからどうぞ!
にほんブログ村 |
にほんブログ村 |
にほんブログ村 |
■ソレノイドをArduinoで制御しよう!編
■付録編
付録③
付録②にスイッチを追加する
スイッチ:
付属しているスイッチは、タクトスイッチといいます。![]()
タクトスイッチ裏面中央の溝を基準として▲グループと×︎グループに分け、上の写真を簡略化して図にします。
右の図がタクトスイッチを上から見た図、左の図が下から見た図です。
通常、スイッチを押していない時でも▲同士、×同士はつながっていますが、スイッチを押すと、図の▲チームと×チームがつながるので、電流が流れてLEDが点灯します。
(工夫すれば長押し判定もできます。)
回路:
プログラム:
スイッチは、ArduinoとLEDの間のワンクッション置いているだけなので、プログラムは付録②の内容と同じです。
|
プログラム |
説明 |
|
int LED = 8;
void setup() { pinMode(LED,OUTPUT); } void loop() { //loop関数 digitalWrite(LED,HIGH); } |
ピン定義
【setup関数】 LEDピンを出力として設定
【loop関数】 LEDピンにHIGHを出力 |
付録④
付録②にセンサーを追加する
センサーの扱い方
センサー:
付属しているセンサーはCdSセンサーです。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が点灯するようにしています。![]()
![]()
![]()
付録⑤
付属品以外のソレノイドを使う場合
付属品以外のソレノイドを使用する場合については、使用しているトランジスタや抵抗も変更する必要があります。下の回路図が、トランジスタを使用した時の回路図です。![]()
トランジスタは、電気の流れの制御や、電流を増幅させる作用があります。使用するトランジスタのデータシートより、hfe(電流増幅率)の最小値、VBE(ベース-エミッタ電圧)を確認してください。![]()
Arduinoの出力は5[V]で、ソレノイドの電圧を6[V]と固定します。ソレノイドは、品番によって抵抗値が異なるので、ソレノイドの抵抗をRsとします。ソレノイド、トランジスタに合わせて必要な抵抗の値を求めます。
皆さん、Arduinoでソレノイドをどんどん動かしてみてください!![]()
作成者:九州工業大学 小野又 、米中
■ソレノイドをArduinoで制御しよう!編
■付録編
付録①
動作環境
Arduinoの動作、プログラム環境を整えましょう。![]()
動作環境:
付属のUSBケーブルでArduinoとパソコンと繋げば動作環境も整います。
プログラム:
下記のURLからArduino IDEをダウンロードしてください。ご利用中のOSに合わせてダウンロードしましょう。
https://www.arduino.cc/en/Main/Software
インストールしたら、プログラム環境はこれで完了。![]()
プログラムからArduinoで制御するまでの工程
① 回路
目的の動作ができるように回路を組み立てます。
② プログラム
Arduinoを動かすためのプログラムを作成します。言語はC言語です。
③ コンパイル⇔エラー訂正
コンパイルした時、文法の誤りなどを犯すと下の黒枠にエラーが表示されます。エラーを訂正して再度コンパイルを行いましょう。
下の図は、エラーが出た時のスクリーンショットです。黒枠には、「セミコロン“;”が抜けています。」とエラーの内容を教えてくれます。![]()
エラーが出なければコンパイル完了します。
左上の矢印を押すと、プログラムはArduinoに書き込まれます。
コンパイルは、プログラム自体の矛盾をエラー表示するため、回路との整合性は確かめられないことに注意が必要です。①〜③で、コンパイルエラーはないけど思った動作をしない場合は、回路や回路とプログラムの整合性を見直してください。![]()
![]()
![]()
付録②
LEDをArduinoで制御する
LED:
LEDは、写真のように足が二本ついています。長い方(アノード)をプラス、短い方(カソード)をマイナスとして接続しましょう。反対に接続しても点灯しません。![]()

回路:
ArduinoのGNDとブレットボードのマイナス、Arduinoの「DIGITAL」ピンをプラスとして、LED、抵抗と繋ぎます。抵抗はLEDに電流が流れすぎないようにするために挿入しています。
ブレットボードは、プラス・マイナスは縦につながっていて、それ以外は横につながっています。上の写真では、黄緑線が繋がっていることになります。![]()
プログラム:
|
プログラム |
説明 |
|
int LED = 8;
void setup() { pinMode(LED,OUTPUT); } void loop() { digitalWrite(LED,HIGH); delay(1000); digitalWrite(LED,LOW); delay(1000); } |
ピン定義
【setup関数】 LEDピンを出力として設定
【loop関数】 LEDピンにHIGHを出力 1000ミリ秒待つ LEDピンにLOWを出力 1000ミリ秒待つ |
まずピン定義を行います
。
「LED」という名前のピンは、Arduino上の8番ピンであることを示しますが、ピン定義が無くてもプログラムを作成することは可能です![]()
「int」については、はじめのうちは気にしない方が良いと思うで、魔法のキーワードと思っておいてください。![]()
![]()
void setup()は、初期設定の内容を記載しています。![]()
初期設定では、変数(必要な値を一時保管する領域)や、ピンモードの初期化を行います。pinMode()は先ほど定義したピンが、入力or出力であることを示します。ここでは、LEDピンを出力に設定しています。
ピン定義をしない場合について、例えば、Arduino上のDIGITAL10番ピンを入力とするときは、「pinMode(10, INPUT)」と記載すれば良いです。ピン定義で、「pin10 = 10」としている場合は、「pinMode(pin10, INPUT)」としましょう。![]()
void loop()について、loop関数の内容は上から下まで実行、繰り返されます。
digitalWrite関数では、指定したピンにHIGH(=5[V])または、LOW(=0[V])を出力します。
delay関数について説明します。delay(5000)ならば、5000ミリ秒(5秒)間、動作を停止するという関数です。
以上より、今回の動作では、LEDピンに1000ミリ秒(=1秒)間HIGHを出力、その後1000ミリ秒(=1秒)間LOWを出力する、つまり1秒間LED点灯させたのち、1秒間消灯させています。![]()
![]()
![]()
今回はここまで!
次回も是非見てくださいね(*^▽^*)