目的:
C言語で LED ON/OFF (GPIO アクセス) を 行う。
環境/構成:
本体
:
raspberry pi 3B
OS
:
Raspberry Pi OS Lite
ライブラリ
:
wiringpi
インストールは、こちら を参照
LED 接続回路
:
下図の通り
LED に接続する抵抗は、
GPIO の最大電流は 16mA 。
LEDでの電圧降下分として 2V 程度とすると
R = V/I = (3.3-2)/(16^-3) = 81.25Ω
精度,誤差 等を考慮すると、
100 Ω 以上 が必用と思われる。
ここでは余裕を見て 1KΩ を使用。
(LED の仕様 (電圧降下や明るさ具合)の
考慮が必用。
仕様したLEDは470Ωでも結構明るかった)
プログラム:
C言語で LED の ON (GPIO 12 へ '1' ライト), OFF (GPIO 12 へ '0' ライト) を行う。
プログラムでは、
- include ファイル として、<wiringPi.h> が必用。
- 初期設定として、wiringPiSetupGpio() を実行。
- GPIO ピンのモード設定として pinMode (GPIO番号, OUTPUT) ; を実行。
- GPIOへのライトは、 digitalWrite (GPIO番号, レベル (0/1) ) ; を実行。
を行う。
wiringPiSetupGpio() は、 Broadcom の GPIOピン番号で アクセスを行う場合に使用する。
代わりに wiringPiSetup() を使用すると、wiringpi 番号 (wiringpi の ピン番号)でアクセスを行う。ここでは、GPIOピン番号でアクセスするようにする。
LED ON と LED OFF の サンプルプログラムは、以下の通り。
#include <wiringPi.h> #define led_pin 12 int main (void) { wiringPiSetupGpio() ; pinMode (led_pin, OUTPUT) ; digitalWrite (led_pin, HIGH) ; return 0 ; }
#include <wiringPi.h> #define led_pin 12 int main (void) { wiringPiSetupGpio() ; pinMode (led_pin, OUTPUT) ; digitalWrite (led_pin, LOW) ; return 0 ; }
コンパイル:
コンパイル時、lオプションで wiringPiを指定する。
gcc -o led_on led_on.c -lwiringPi
gcc -o led_off led_off.c -lwiringPi
これで、led_on と led_off の実行ファイルができる。
実行:
wiringPiSetupGpio() は、root 権限が必用な為、コンパイルした実行ファイルを実行する場合は、sudo を付ける必用がある。
但し、gpio グループに所属していれば、sudo を付けなくても実行可能。この為、GPIOアクセスを行うユーザは gpio グループに所属していた方が便利。
尚、pi ユーザは、gpio グループに所属している。
./led_on
で LED が 点灯
./led_off
で LED が消灯
する。
0 件のコメント:
コメントを投稿