Raspberry Piで 一緒に「Lチカ」しましょう (後編)

◆ Live配信スケジュール ◆
サイオステクノロジーでは、Microsoft MVPの武井による「わかりみの深いシリーズ」など、定期的なLive配信を行っています。
⇒ 詳細スケジュールはこちらから
⇒ 見逃してしまった方はYoutubeチャンネルをご覧ください
【4/18開催】VSCode Dev Containersで楽々開発環境構築祭り〜Python/Reactなどなど〜
Visual Studio Codeの拡張機能であるDev Containersを使ってReactとかPythonとかSpring Bootとかの開発環境をラクチンで構築する方法を紹介するイベントです。
https://tech-lab.connpass.com/event/311864/

 前回(Raspberry Piで 一緒に「Lチカ」しましょう(中編))は、ラズベリーパイのコマンドプロンプト上でLEDを点灯、消灯しました。LEDを手動で制御できたのは嬉しいのですがもうほんの少し実用的なものを作ってみます。

今回は簡単なPythonプログラムで簡易時計を作成し、LEDで時刻を示したいと思います。
(ただし、時刻を読み取る技術が必要です)

できあがりの動画はこちらになります。

本動画では22:18を表しています。

長い点滅が時/分の10の位、短い点滅が時/分の1の位を示しています。

つまり

長い点滅2回: 20時 + 短い点滅2回:  2時 = 22時

~続いて~

長い点滅1回: 10分  +  短い点滅8回:  8分 = 18分

という表示方法です。

ソースコード

それでは、ソースコードを見てみましょう。ソースコードをテキストに保存し、python3で実行してみましょう(python2.xで実行するとエラーになります)。

1.日付を取得するためにdatetimeおよびtimeライブラリのインポート

from datetime import datetime
import time

 

2.GPIOを扱うためのGPIOライブラリのインポート★1

import RPi.GPIO as GPIO

 

3.GPIOのモードを設定★2

GPIO.setmode(GPIO.BCM)
GPIO.setup(17, GPIO.OUT)
now = datetime.now()     #現在の時刻を変数"now"に代入
n_hour = now.hour       #変数"now"から「時」だけを抽出し"n_hour"に代入
n_min = now.minute         #変数"now"から「分」だけを抽出し"n_min"に代入

 

4.現在時刻を標準出力に出力する

print("現在時刻 ",n_hour,":",n_min)

 

5.「時」の2桁目を”hour10″に、1桁目を”hour1″に代入

hour10 = int(n_hour/10)
hour1 = int(n_hour%10)

 

6.「分」の2桁目を”min10″に、1桁目を”min1″に代入

min10 = int(n_min/10)
min1 = int(n_min%10)

 

7.それぞれ、何秒ずつ点灯させるか時間設定 タプルのリストを”TimeDuration”と設定する

TimesDuration = [(hour10,1),
                (hour1,0.2),
                (min10,1),
                (min1,0.2)]

 

8.間を取るために3秒間待つ

time.sleep(3)
for times, dur in TimesDuration:
    for i in range(1, times+1):
        print(times, dur, i)
        GPIO.output(17, True) #GPIO 17番をON★3
        print("●", end="")
        time.sleep(dur)
        GPIO.output(17, False)#GPIO 17番をOFF★4
        print("○", end="")
    print("")
    time.sleep(2)
GPIO.cleanup() #GPIOの設定を初期化★5

 

解説

続きはこちらから・・・

 

本記事は、日本サード・パーティ株式会社(JTP)にて、執筆しています。

JTPは約30年に渡り、様々なベンダーのサポートを行う企業です。 設計、構築、開発、運用、ヘルプデスク、トレーニングなど、ITのライフサイクルを通して技術サービスを提供しています。

中でも、JTP の IT教育サービスでは、クラウド、Hadoop関連技術など、OSS の最新技術 トレーニングを数多く実施しています。

JTPでは、経験豊富なエンジニア、講師陣により、多くの技術記事を公開しております。

▼JTPの情報メディア「JTP Technology Port」はこちらから!

https://www.jtp.co.jp/techport/

アバター画像
プロフェッショナルサービスチームの中の人。
ご覧いただきありがとうございます! この投稿はお役に立ちましたか?

役に立った 役に立たなかった

0人がこの投稿は役に立ったと言っています。


ご覧いただきありがとうございます。
ブログの最新情報はSNSでも発信しております。
ぜひTwitterのフォロー&Facebookページにいいねをお願い致します!



>> 雑誌等の執筆依頼を受付しております。
   ご希望の方はお気軽にお問い合わせください!

Be the first to comment

Leave a Reply

Your email address will not be published.


*


質問はこちら 閉じる