 
				
				
				
			WringPiのインストールも終わり実際WiringPiを使ってGPIOの制御も行いました。今回はC言語で実装してみたいと思います。
なんでC言語?
WiringPiのC言語ライブラリを使えば簡単にGPIOポートが制御できるからです。後ほどご紹介しますが、水耕栽培だとPWMと呼ばれる制御が非常に重要です。光の明るさを変える制御で最適な光をデザインできます。WiringPiを使えばこの制御を簡単にできるんですね💡
WiringPiでシンプルなプログラムを作ろう。
WiringPiで作ってみるプログラム
WiringPiを使った最初のStepということになるのでシンプルなプログラムにしましょう。LEDの点灯を繰り返すだけのプログラムにします。

サンプルプログラム
サンプルプログラムは30行程度です。少ない行数ですので頑張って書きましょう💡
| 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 | // Sample program to turn on/off LED connected to GPIO2. #include <wiringPi.h> #define PORT_LED 2 #define LOOP     5 #define WAITMS   1000 #define LED_ON   1 #define LED_OFF  0 int init(void){   if(wiringPiSetupGpio() == -1) return -1;   pinMode(PORT_LED, OUTPUT);   return 0; } int main(void) {   int i;   if (init() != 0 ) return -1;   for(i=0; i<LOOP; i++){     //Turn on LED     digitalWrite(PORT_LED, 1);     delay(WAITMS);     //Turn off LED     digitalWrite(PORT_LED, 0);     delay(WAITMS);   }   return 0; } | 
色んな関数が出てきましたね。ラズペリーパイのLED制御で使うGPIOの制御ライブラリについてご紹介します。
wiringPiSetupGpio
Raspberry PiにはBroadcomという会社のSoC(System On Chip)が載っており、GPIOを制御します。この関数を呼ぶとそれぞれのGPIOポートを番号で呼ぶことができるようになります。
pinMode
I/OのInput / Outputの設定をします。OUTPUTの場合はOUTPUTを指定します。PWMの場合はPWM_OUTPUTです。InputはINPUTです。
digitalWrite
指定したGPIOに値を設定します。1を設定した場合には3.3Vが供給される設定になり、0を指定した場合には電圧を供給しないことになります。
コンパイルします。
C言語はコードだけでは動かないのでコンパイルしてあげる必要があります。Raspbianに標準で入っているgccを使いました。
| 1 | $gcc -o wiringPi-Gpio2OnOff.o wiringPi-Gpio2OnOff.c -lwiringPi | 
と入力してください。これでwiringPi-Gpio2OnOff.oというファイルができるはずです。
-lwiringPiと指定することでwiringPiのライブラリを使うことができるので忘れないようにしましょう。
実際に動かしてみる。
プログラムができたので動かしてみます。su権限が必要なのでsudoを付けます。
| 1 | $sudo ./wiringPi-Gpio2OnOff.o | 
動きましたか??
まとめ
c言語を使ったラズペリーパイの制御方法についてご紹介しました。ここが理解できると色んなことができるようになります。
記事を読んでいただいてありがとうございます。この記事がいいなと思ったら下記のSNSボタンのクリックをお願いします。励みになります😁






とても興味深く読ませてもらいました。自分も挑戦してみようかと考えているところです。
ところで、サンプルプログラム2行目の#includeの後が欠落しているようで、このまま実行するとコンパイルエラーが出てしまい、そっくり真似してみようとする方は躓いてしまうと思います。
これからも更新期待しています。
まっくん さん
こんにちは!記事がお役に立てれば幸いです(〃’ω’)
ご指摘の点修正いたしました。ありがとうございます。
興味がある内容があったら教えてくださいね♪ 挑戦してみます!(*´罒`*)
修正の際に、23行目の
for(i=0; i<LOOP; i++){
が
for(i=0; i<LOOP; i++){
に変わってしまっているようです。
まっくん さん
修正しました。HTMLモードになってしまったようですね。。