RaspberryPiのGPIOをXojoでコントロール

RaspberryPiのGPIOは他の言語などでも比較的簡単に扱えるがXojoならコンソールアプリと同じくGUIアプリからもI同じようにGPIOを操作する事ができる。
GPIOをテストする為にLEDとスイッチを各4個づつ搭載した簡単な基板を手配線で作成してみた。

IMG_3955

LED1~LED4 GPIO5,6,13,19
SW1~SW4 GPIO20,21,22,23
に配線

GPIOでGPIOを操作するにはいくつか準備が必要である

1.wiringPiを導入する

http://wiringpi.com/download-and-install/
2.GPIOを操作する為にサンプルプロジェクトからモジュール類をコピる。

である。
あとは実際のコーディングである。
今回作成するテストアプリケーションは、GUIアプリとして動作しLEDはボタンで点灯・消灯。スイッチを押すと対応するRectangleのコンポーネントの色が変わるという単純なものだ。

2019-06-16-233813_1024x768_scrot

 

簡単なコードの紹介。
フォームロード時にGPIOの初期化&LEDを全消灯する。
PushButtonを押すことで各LEDを点灯・消灯する。
スイッチの読み込みは簡易的にタイマー割り込みで定期監視する。スイッチが押下(ノーマルHIGH,スイッチONでLOW)でRectangleのボーダーカラーを赤色にする。
スイッチが押されてない時は黒色にする。

 

1.LEDとSWの定義

‘ GPIO5,6,13,19を出力ポートとして使用
Const LED1 = 5
Const LED2 = 6
Const LED3 = 13
Const LED4 = 19

’GPIO20,21,22,23を入力ポートとして使用
Const SW1 = 20
Const SW2 = 21
Const SW3 = 22
Const SW4 = 23

2.初期設定

SetupGPIO

‘LEDのポートを出力設定に
PinMode(LED1,OUTPUT)
PinMode(LED2,OUTPUT)
PinMode(LED3,OUTPUT)
PinMode(LED4,OUTPUT)

‘Switchのポートを入力設定に
PinMode(SW1,INPUT)
PinMode(SW2,INPUT)
PinMode(SW3,INPUT)
PinMode(SW4,INPUT)

‘LED、全消灯
DigitalWrite(led1,OFF)
DigitalWrite(led2,OFF)
DigitalWrite(led3,OFF)
DigitalWrite(led4,OFF)

 

3.LEDの点灯消灯の処理
PushButtonのクリックでOn/Offする(トグル動作)

Sub Action()
if pb_led1.Caption=”ON” then
DigitalWrite(LED1,OFF)
pb_led1.Caption=”OFF”
else
DigitalWrite(LED1,ON)
pb_led1.Caption=”ON”
end if
End Sub

4.スイッチの読み込み
500mSecタイマーでポート監視。

if DigitalRead(SW1)=ON then
rect_sw1.FillColor=Color.Black
else
RECT_SW1.FillColor=color.Red
end if

コメントを残す

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

このサイトはスパムを低減するために Akismet を使っています。コメントデータの処理方法の詳細はこちらをご覧ください