*

QtでRaspberryPi/GUI開発(5):pigpioを使ってみた

公開日: : C++, C言語, pigpio, Qt, RaspberryPi, 開発

どもです。
RaspberryPiを購入して、LEDも手に入れたのでコレをチカらせてみようと思います。

1.RaspberryPiでLEDをチカらせるために
RapsberryPiでLEDをチカらせるためには、いくつか方法があります。
中でも代表的なものとして、「pigpio」というライブラリがあります。
今回は、このライブラリを使用してみます。

2.pigpio
まず、pigpioのインストールですが、今回は必要ありませんでした。
というのは、下記の環境では予めインストールされていたからです。
なので、インストールされていたものをそのまま使用します。

(実行環境)
H/W:RaspberryPi3
OS:Raspbian 9.4(stretch)

3.早速チカらせてみよう
まずは、単純にLEDをチカらせて見ます。
そのためのコード、およびビルドのコマンドを示します。

ビルド:

で、上記アプリケーションを実行した様子は、下記の通りです。

このアプリケーションでは、GPIOの6、13、19、26のピンをOUTPUTとして設定し(gpioSetMode)、それぞれを順番に点灯(gpioWrite(PIN, 1))/消灯(gpioWrite(PIN, 0))させています。

4.ボタン割込みをしてみよう
次に、ボタン押下した際にLEDのON/OFFが切り替わるようにしてみました。
実際のコードを示します。

IRQHandler()が、ボタンが押された際に呼び出される関数になります。
ボタンが押された際にこの関数が呼び出されるように、gpioSetISRFunc()で設定しています。
gpioSetISRFunc()の第1引数では、割り込みのトリガとなる電位の変化を読み取るGPIOピンの番号、第2引数は電位の変化の方向(LOW→HIGH/HIGH→LOW)、第3引数はタイムアウト、第4引数は割込みハンドラを指定します。
コレにより、GPIOピンの電位がLOWからHIGHに変化した際に、IRQHandler()が呼び出されるように設定しています。
割込みハンドラ(IRQHandler())は、第1引数の”gpio”には割込みを発生させたピン番号(GPIOの番号)が、第2引数のlevelには、high(1)/low(2)が指定されます。
第3引数は、起動後の時間(マイクロ秒)がセットされています。
なお、割込みハンドラは、実際に割り込みが発生しなくても呼び出されることがあります。
それは、「タイムアウト」が発生したタイミングです。
このタイムアウトは、gpioSetISRFunc()の第3引数で指定します。
この「タイムアウト」に「0」を指定することでタイムアウトが発生しなくなり、本当に割り込みが発生した場合にのみ、割込みハンドラが呼び出されるようにできます。

上記のアプリケーションの実行の際のピン配置を、下図に示します。
pin_layout_interrupt
また、実行した様子の動画を公開します。

以上、今回のエントリーでは、pigpioを使ったLEDの点灯の基本(と考えている)内容を書いてみました。
またしても、タッチスクリーンに触れることがありませんでした。
次こそは…っ!

ではっ!

関連記事

Rasp_DHT11

温度(湿度)センサを使ってみた(2)-RaspberryPi/pigpioでDHT11

どもです。 前回は、DHT11をAdrudinoにつないで温度/湿度を測定してみました。 そこで

記事を読む

no image

Objective-CからC++コードを呼び出す

どもどもです。 今回は、突然ながらMacに関係する投稿です。 ソフト関係のことを勉強していて

記事を読む

RasPi_Qt

QtでRaspberryPi/GUI開発(11)-SPI通信をしてみた(その3)

どもです。 えー。 「Qtで…」とか書いておきながら、今回もやっぱりQtは出てきません。 そろ

記事を読む

no image

RaspberryPiのOS:RaspbianをNOOBSでセットアップしてみた

どもです。 今回の内容は、「今更!?」ですがNOOBSでRaspbianをセットアップしたとい

記事を読む

no image

C言語でEV3開発(10)-opOUTPUT_CLEAR_COUNTコマンド

どもです。 前回のエントリーのラストで、「モーターを動かすコマンド」と書きましたが、今回紹介するコ

記事を読む

source_trail_eye_catch

Sourcetrailを試してみました(2)-Eclipseと連携

どもです。 前回のエントリで、ソースコードを解析するオープンソース「Sourcetrail」を紹介

記事を読む

iot_raspberrypi_gateway_001_eye_catch

IoT開発(10)
RaspberryPiをIoTゲートウェイにする(IV)
Appサーバーのセットアップ

この記事は、下記の記事の続きです。 IoT開発(6) RaspberryPiをIoTゲートウェ

記事を読む

c_sharp_eye_catch

外部からMariaDbにアクセスする(2)-C#からMariaDbにアクセスする。

どもです。 前回のエントリで、外部からMariaDbにアクセスするための、データベース側の設定

記事を読む

eclipse_cdt_top_100

C言語でEV3開発(3)

どもです。 今回のエントリーの内容は、前回まででセットアップした環境で、実際にEV3上で動く実行フ

記事を読む

no image

C言語でEV3開発(21)-モーター出力の制御

どもです。 前回は、超音波センサから前方障害物との距離を取得し、それを元に安全状態を判断する、とい

記事を読む

Message

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です

CAPTCHA


次のHTML タグと属性が使えます: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code class="" title="" data-url=""> <del datetime=""> <em> <i> <q cite=""> <strike> <strong> <pre class="" title="" data-url=""> <span class="" title="" data-url="">

arduino_relay_switch_002_ae_g5v_drv_eye_catch
Arduinoでリレースイッチ(2)-AE-G5V-DRV

どもです。 前回の記事では、「フォトカプラリレー」を使用したLチ

tlp222af_001_eye_catch
Arduinoでリレースイッチ(1)-TLP222AF

どもです。 つい先日、やっとのことでリレースイッチを手に入れるこ

c_sharp_eye_catch
外部からMariaDbにアクセスする(2)-C#からMariaDbにアクセスする。

どもです。 前回のエントリで、外部からMariaDbにアクセスす

c_sharp_eye_catch
外部からMariaDbにアクセスする(1)-データベースの設定

どもです。 今回は、Linux上のMariaDbにWindows

think_about_utest
middle_unit
最小…よりも(ほんの)少し大きいテストフレームワーク

どもです。 今回は、単体テストのフレームワークについて書きます。

→もっと見る

PAGE TOP ↑