Raspberry Pi(通称ラズパイ)を始める方が、一番最初に恐る恐る挑戦するだろう「Lチカ」。
例に漏れず自分も挑戦することにしてみた。
さて、ラズパイこそ初心者ではあるものの、普段電子工作を生業としているので幾分気は楽、だがどうしても最初は不安。
まずは先人の記録をパクらせて参考にさせてもらい、別なアプローチでのLチカも試してみたので学習記録として残しておく。
使用言語はPython。
やりたいこと
下記先人の記録の後半にある、「LEDを点滅させる」動画のようなことをやりたい。
ラズパイでLチカをしてみる(入門編)
レッツラズパイ!〜Lチカ&Lピカをマスターしよう編〜
準備した物
グーグル先生の助けを借り、必要な物としてこれらをリストアップ。
大半の方の手元にないであろう電子工作品類(②~⑤)は1000円程度で揃えられる。
No. | 品名 | 数量 | 備考 |
---|---|---|---|
① | Raspberry Pi 3 Model B+ | 1 | |
② | ブレッドボード | 1 | 小さな物でOK |
③ | LED | 1 | 安価な砲弾型 |
④ | 330Ω抵抗 | 1 | 小さな物でOK |
⑤ | ジャンパーワイヤー | 2 | オス~メスタイプ |
⑥ | マウス | 1 | まずはUSB対応品 |
⑦ | キーボード | 1 | まずはUSB対応品 |
⑧ | HDMIケーブル | 1 | ディスプレイ出力はHDMIのみ |
⑨ | HDMI対応ディスプレイ | 1 |
ラズパイセットアップ
今回購入したのはこちら。
初心者にとっての鬼門である「SDカードへのOSインストール」が、ありがたいことにプロによって完了されている。
安心、安全をお求めの方は是非。
尚、自分はOSインストールが完了されていることに気付かず購入した。
もし、OSをインストールされていない場合は下記を参考にしていただくとわかりやすい。
Raspberry PiにOSインストールする
Raspberry Pi 3 Model B+の初回セットアップ(購入から起動まで)
接続
今回は赤枠内の、GPIO17と隣にあるGroundを使用する。
実際の接続はこのような感じ。(ラズパイの向きが上図と逆なので注意)
コード作成ツール
初心者用ツールとして、ラズパイにプリインストール(最初からインストール)されている「Thonny Python IDE」というツールでコードを作成していく。
コード記述
ググるとよく出てくるのがこのようなコード。
GPIO17ピンにLEDを接続すれば、コード実行後LEDが点灯し1秒後消灯する。
import RPi.GPIO as GPIO
import time
GPIO.setmode(GPIO.BCM)
GPIO.setup(17, GPIO.OUT)
GPIO.output(17, GPIO.HIGH)
time.sleep(1)
GPIO.cleanup()
これでLチカ完了である。
コピペしてしまえば確認まで1分もかからない。
あっさり終わってしまうのもなんなので、他の手法がないか調べてみた結果、下記を発見。
これは1秒毎にLEDが点滅してくれるもの。
from gpiozero import LED
from time import sleep
led = LED(17)
while True:
led.on()
sleep(1)
led.off()
sleep(1)
やはりこれもコピペしてしまえば確認まで1分もかからない。
消化不良なので↓ココでさらに調べてみた。
Raspberry Pi Documentation
全て英語なので慣れていないと苦痛だが、
from gpiozero import LED
led = LED(17)
led.blink()
LEDを点滅させる為に8行も記述していたのが、なんとたったの3行で済んだ。
しかも挙動は全く同じである。
ちなみに、カッコの中にパラメータを追加で記述するとLEDの点滅時間、回数を調整可能だ。
led.blink(
on_time=x.x, #ON時間
off_time=x.x, #OFF時間
n=x #点滅回数
)
作動確認
下記のようなコードにし高速でLEDをチカチカさせることに成功。
(動画は2秒程度なのでn=100の意味がない)
from gpiozero import LED
led = LED(17)
led.blink(on_time=0.1, off_time=0.1, n=100)
おわりに
Python学習の足掛かりとして初めて投稿しようと試みてみたが、やはり慣れない作業に大分時間がかかった。
この投稿で使い方は大体わかったので、引き続きPWMやThermal関連についての調査・学習内容をアウトプットしていきたい。