*

ライブラリでRasPiのピンにアクセス(3)-割り込み対応

公開日: : 最終更新日:2020/05/05 C++, pigpio, RaspberryPi, 開発

どもです。

少し間が空いてしまいましたが、RaspberryPiのピンをより簡便に使用するためのライブラリについて書きます。
今回のエントリでは、割り込み対応処理を実装したので、それについて書きます。

1.実装したメソッド

割り込み対策のために、以下のメソッドを更新、あるいは新規に実装しています。

また、このCGpioクラスを使用するクラス、RaspberryPiに接続されたH/Wに対応するCPartクラスには、以下のコントラクタを追加しています。

2.実装した処理

割り込み処理は、下記のシーケンスで実装/動作します。
CGPio_interrupt

割り込みが発生はCGpioに通知され、それを受けてチャタリング処理の必要の有無の判断、処理を実行します。

3.メソッドの使い方

今回、新規に追加したメソッドのうち、使い方を意識する必要があるのはCPartクラスのコンストラクタ、および(上記に記載はしていませんが)「InterruptCallback」というメソッドです。
CPartクラスでは、InterruptCallbackは中身がありません。
なので、割り込みを使用する際には、CPartを継承したクラスを新規に作成し、InterruptCallbackをオーバーライドする必要があります。
オーバーライドしたメソッドについては、割り込みを受けて行う処理を実装して下さい。

4.サンプル

「ボタンでLEDのOn/Offを切り替える」サンプルを作成したので、紹介します。

4.1.コード

サンプルコードは、以下です。

まずは、「ボタン」に対応するクラスです。

LEDについては、既存のCPartクラスを適用します。
メイン関数は、下記です。

4.2.サンプル本体の解説

サンプルの内容は、実に簡単です。

割り込みが発生すると、ライブラリが上記関数を呼び出します。
その時に、対応するGPIOピンのレベル(HIGH/LOW)が通知されてきますので、その値をLED(targetPart_)に設定します。

以上です。

3.まとめ

今回は、ライブラリに追加した割り込み処理機能について書きました。
これでまた、RaspberryPi/C++での開発が楽になったかな…と思います。

ではっ!

ex

RaspberryPiでチャタリング処理を実装する際の注意点、特にpigpioを使用した場合の注意点を過去のエントリで書いています。
Linuxを使用する場合に、共通で意識しなければならない点でもあるかと思います。
参考にしていただければと思います。

QtでRaspberryPi/GUI開発(6):pigpioを使用したチャタリング対策
QtでRaspberryPi/GUI開発(7):pigpioを使用したチャタリング対策の問題
QtでRaspberryPi/GUI開発(8):pigpioを使用したチャタリング対策の問題の対策

関連記事

no image

QtでRaspberryPi/GUI開発(3):ためしに時計を作ってみた(其の参)-StyleSheetの適用

どもです。 前回のエントリーでは、グループ化されたボタンに対するイベントハンドラについて書きました

記事を読む

cygwin_my_image

cygwinでstartコマンド

どもです。 このエントリでは、cygwinでWindows/コマンドプロンプトの「start」

記事を読む

RasPi_Qt

QtでRaspberryPi/GUI開発(8):pigpioを使用したチャタリング対策の問題の対策

どもです。 だいぶ、間が空いてしまいました。 久しぶりの更新です。 前回のエントリーで、「

記事を読む

no image

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

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

記事を読む

toppers

C言語でEV3開発(18)-モードの遷移の設計-コマンド通信処理の準備

 どもです。  今回は、前回紹介したEv3とBluetoothで通信する機能を

記事を読む

raspberry-pi

QtでRaspberryPi/GUI開発(1):ためしに時計を作ってみた

どもです。 また更新の間隔が空いてしまいました。 久しぶりの更新です。 前回のエントリーで

記事を読む

eclipse-juno-logo

C言語でEV3開発(1)

どもです。 2回目の投稿。 本格的な投稿としては、初めての投稿になります。 内容は、LEG

記事を読む

RasPi_Qt

Rasbianの新しいバージョンが出たので、クロス環境を更新してみた。(その後)

どもです。 前回、Linux/RaspberryPiでのQt(QtCreator)のクロス開発

記事を読む

MY_MFC_LOGO

MFCプログラミング(4):Enter(ESC)キーでダイアログが閉じないようにする

どもです。 今回は、キーボード入力の処理、特にEnterキー/ESCキーでダイアログが閉じられるこ

記事を読む

no image

C言語でEV3開発(14)-opOUTPUT_TIME_SPEEDコマンド

どもです。 今回のエントリーは、モーターを動かすコマンドである「opOUTPUT_TIME_SPE

記事を読む

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="">

c_sharp_eye_catch
セル内の「取り消し線で消された文字列」の削除を簡単にしてみた

どもです。 前回、C#/OpenXmlを用いて、エクセルのセル内

c_sharp_eye_catch
セル内の「取り消し線で消された文字列」を削除してみた

どもです。 今回は、C#/OpenXmlの組み合わせで、エクセル

c_sharp_eye_catch
C#でバッファの内容を表示する処理を実装してみた-
データ型に従って動的に書式を設定する

どもです。 最近、C#でバッファ/配列の値をコンソールに表示した

arduino_relay_switch_003_self_preservation_circuit_eye_catch
Arduinoでリレースイッチ(3)-自己保存回路

どもです。 前回の記事で、リレースイッチ「AE-G5V-DRV」

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

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

→もっと見る

PAGE TOP ↑