作成:栁澤研究室 Robo-BE用
この章では,LEDの点灯制御を例に,ブレッドボードの使い方,オームの法則,直列・並列接続,アナログ信号,デジタル信号,テスターの使い方などを学びます.
Robo-BEでは,LEDやモータの制御,センサによる計測を「GPIOZERO」というライブラリを使用していきます.
他にもいろいろなGPIOを制御するライブラリがありますが、おそらくGPIOZEROが最も簡単で,少ない行数で書けると思います.
GPIOZERO https://gpiozero.readthedocs.io/en/stable/
LEDをはじめ様々な電子部品を正しく使うには,適切な電圧(定格電圧)と電流(定格電流)になるように抵抗器を使うことがあります.
オームの法則を使えば,必要な抵抗がわかります.
電源電圧の部分はラズベリーパイの場合は3.3Vです.例えば,順方向電圧降下が2V,順方向電流が20mAであれば,必要な抵抗は65Ωとなります.
ただ,実際には65Ωの抵抗はないので,75Ωか,100Ωの抵抗を使うことになります.
この授業の前半ではブレッドボードを使用していきます.ブレッドボードの使い方については,自分で調べてみましょう.YouTubeなどにもわかりやすい動画がありますので,見てみてください.
まずは,LEDを1つ点灯させてみましょう.LEDは足が長いほうを抵抗を挟んでGPIOの26番のピン,短いほうをGNDに繋ぎましょう.
回路は以下の通りです.
GPIO 16番につないだLEDを1秒点灯、その後消灯する場合のプログラムは以下の通りです.
from gpiozero import LED
from time import sleep
led =LED(26)##26番のピンをLEDの点灯制御に使用する
led.on() ##LEDを点灯させる
sleep(1) ##1秒待つ
led.off() ##LEDを消す
ここまではLEDのON/OFFしか制御できませんでしたが,今度はPWM信号を使って明るさを調整してみましょう.
回路は『2.LEDを1個点灯させる場合』と同じです.
デューティ比というのは,PWM信号の1周期のうちON信号が占める割合を示す数値で,デューティ0%のときはOFF(led.off()と同じ),100%(led.on()と同じ)のときは100%の明るさで光る,50%のときは半分の明るさで光る,というように明るさを制御できます.
from gpiozero import PWMLED
from time import sleep
led = PWMLED(26)#26番にLEDを接続
led.value = 0.25#デューティ比25%で信号を出力
print("25%")
sleep(3)
led.value = 1 #デューティ比100%で信号を出力
print("100%")
sleep(3)
led.value = 0 #デューティ比0%で信号を出力
print("0%")
print("end")
2章で習った繰り返し文を使えば,指定した回数だけLEDを点滅させたり,PWM信号を使ってだんだん明るくなるようにプログラミングできます.
ロボットの制御でも同じ動作を複数回繰り返すときなどは繰り返し文を使用します.
理解を深めるために,次の2つの課題に取り組んでみてください.わからない人はもう一度2章も復習してみましょう.
ロボットを作成していて一番困るのは,何が原因かわからないがうまく動作しないときです.そんなときは,機構,回路,プログラムをそれぞれ確認していくしかありません.
テスターの使い方をマスターすれば,電子回路の不具合・問題を見つけることができます.
まずは,テスターの使い方を調べてみましょう.YouTubeなどにもわかりやすい動画がありますので,見てみてください.
使い方がわかったら,LED1個の点灯回路を作成し,ONのときの電圧を調べてください.また,使用している抵抗の抵抗値も調べてみましょう.
ここまでの知識を使って,複数個のLEDを使って点灯制御するプログラムを作ってみましょう.使うLEDの色,接続方法(直列接続,並列接続)に制限はありません.使用する抵抗は各自計算してください.
レポートには自分の作った回路,プログラムのほかにどのように点灯するか言葉による説明もしてください.
完成したら,教員かTAにチェックしてもらってください.