Raspberry Pi 3 & Python 開発ブログ☆彡

Raspberry Pi 3の使い方、設定をわかりやすく解説。Raspberry Pi3 Model B(Element14版)、Raspbianを使用して開発中。

【スポンサーリンク】

Raspberry Pi 3 & Python 開発ブログ

こんにちは~。P.Hです。サイトを立ち上げて1年以上が経ちました。自分の備忘録として作ったサイトですが、アクセス数が10万を超えています。正直、びっくりしています。Raspberry Piユーザーの皆様の助けに少しでもなれていれば、とてもうれしく思います。記事の数、内容もだいぶまともまってきましたので、今後は記事の追加だけでなく、ブラッシュアップも行っていく予定です。

 ブログメニュー リンク先

◆Raspberry Pi 3

Raspberry Pi 3の設定や活用方法を紹介しています。Raspberry Pi 3ユーザーの助けになれば幸いです。このブログの手順通りに行えば、必ず動作するという記事をわかりやすく説明していきたいと思っています。

 〇主な記事のリンク先
    ・Python開発環境:Eclipse Pydev編 , Remote System Explorer編 , リモートデバック編
    ・Python開発環境:Visual Studio2015 リモートデバックその1 , その2    
    ・LEDを光らせる(Lチカ)
    ・UARTの使い方 基本編 , Pythonコード編
    ・Wi-Fi設定とSSHログインの設定方法 , Wi-Fi設定(トラブルシュート)
    ・VNCでリモートデスクトップ
    ・Sambaを使用してWindowsとファイル共有
    ・Webサーバーの構築方法(Apache+PHP)
    ・WiringPi-PHPの使い方 その1 , その2 , その3
    ・Socket通信の仕方 サーバー編 , クライアント編
    ・WebSocket通信の仕方 サーバー編 , クライアント編 , Webページ編
    ・データベース(MySQL)の使い方:インストール編 , MySQL Workbench編 , Pythonコード編
    ・Djangoの使い方 その1 , その2 , その3
    ・SwampDragonの使い方 その1 , その2 , その3 , その4
    ・USB挿入でプログラムを実行する方法(ラズパイシャットダウン、Pythonコード実行等)
    ・Watchdog Timer(ウォッチドッグタイマー)の使い方
    ・音声合成をする方法(Open JTalk) , 音声認識をする方法(julius)

◆Python

世界的有名なPython言語の備忘録です。Python勉強中の方や構文を忘れてしまった方は参考にしてください。

  〇主な記事のリンク先
    ・multiprocessingモジュールの使い方 , Value型、Array型変数の使い方 , Queue型変数の使い方
    ・割り込み(コールバック関数)の使い方 その1 , その2
    ・Pythonプログラム入門 基本構文 , クラスの基本 , クラスの継承
    ・スレッド , スレッド 排他制御 , importの使い方
    ・Pythonプログラム入門 基本構文 , クラスの基本 , クラスの継承
    ・TensorFlowの使い方
    ・scikit-learnの使い方

◆プログラミング技術

私の開発経験から技術情報を記載したいと思います。開発の助けになれば幸いです。

◆エンジニアの思い

長年開発をしていると思うところは多々ありますよね。コーヒーブレークとして、気軽に読んでください。

ネット上にRaspberry Piの情報はたくさんあるのですが、Raspberry Pi 3ではなく、Raspberry Pi 2の古い情報の場合があります。Raspberry Pi 2の古い情報で設定等を行ったためうまく動かず、何時間も時間を無駄にしてしまったということがありました。私と同じように時間を無駄にしないように、本ブログでは、最新のRaspberry Pi 3に限定して情報をアップしていこうと思います。

このブログの手順通りに行えば、Raspberry Pi 3環境であれば必ず動くという記事にしたいと思いますので、加筆等やわかりにくい部分があれば、気軽にご連絡ください。ブログを修正したいと思います。また、他サイトからのリンクも歓迎です。

Raspberry Pi 以外の記事として、開発者としての思いや趣味等の記事も記載して行く予定です。コーヒーブレークとして読んで頂ければと思います。

割り込みの使い方(その2)

以前、割り込みでコールバック関数を使う方法を紹介しました。今回は定期的に実行したい処理があり、さらに割り込みにも対応したいときにシンプルに書けるコードを紹介したいと思います。

 

 割り込みの実装方法

import RPi.GPIO as GPIO

GPIO.setmode(GPIO.BCM)
pin = 4
GPIO.setup(pin, GPIO.IN, GPIO.PUD_UP)

try:
while(True):
    isr = GPIO.wait_for_edge(pin, GPIO.FALLING, timeout=5000)     if isr is None:     print("5秒間割り込みなし")     else:     print("割り込みあり")

except KeyboardInterrupt:
    print("break")
    GPIO.cleanup()

 
上記のサンプルコードの説明をします。GPIO.wait_for_edgeメゾットで、pin番号、イベント、タイムアウト時間を設定します。それぞれの引数の意味は以下のようになります。

・pin → GPIO4番ピン
GPIO.FALLING → 立下りエッジのイベントが発生した時
・timeout →タイムアウト時間の設定

タイムアウトで設定した時間内に割り込みがあれば、else内の処理が実行されます。割り込みがなければ、if isr is None内の処理が実行されます。
 

動作確認

それでは、動作確認をしてみましょう。この例ではタイムアウトが5秒に設定されていますので、割り込みがなければ、5秒間隔で毎回、"5秒間割り込みなし"のメッセージが表示されます。GPIO4番ピンに立下りエッジ(High→Low)を入力すると、"割り込みあり"のメッセージが表示されます。

 

割り込みはよく使う機能ですので、使い方をマスターしておくと役に立ちます。