RPi で LED を光らせてみる (その2)


さて、前の記事では ShellScript でデバイスファイルを使いましたが、今度は wiringpi というライブラリでやってみます。wiringPi は Arduino ライクに IO ポートにアクセスできるライブラリみたいです。
詳しくは こちらを参照して下さい。

スポンサーリンク

wiringPi の取得とインストール

まずは git のインストールから。
$sudo aptitude install git-core
wiringPi をとってきます。
$git clone git://git.drogon.net/wiringPi
インストールします。
$cd wiringPi
$./build

前回と同様、GPIO23 に LED を接続します。

gpio コマンドのテストです。
まずはGPIOポートを out に設定。
#gpio -g mode 23 out
では LED を点灯します。
#gpio -g write 23 1
消灯します。
#gpio -g write 23 0

-g オプションは BCM GPIO の名前で指定するようですが、実は信号名はGPIO4だったりします。また、wiringPi ではこの Pin を 4 として扱います。wiringPi が Pin をどのように扱うかはここを見るとわかります。
ということで、-g オプション無しで gpio コマンドを再テスト。
#gpio mode 4 out
#gpio write 4 1
#gpio write 4 0

wiringPi のライブラリを使う

Arduinoライクにローレベルとイチャイチャできるようです。
$vi led_test.c

#include <wiringPi.h>
#include <stdio.h>
#include <stdlib.h>
 
#define GPIO04 4
 
int main()
{
    int i;
    if (wiringPiSetup() == -1) {
        exit(1);
    }
    pinMode(GPIO04, OUTPUT);
    for(i = 0; i < 10; i++) {
        digitalWrite(GPIO04, 1);
        delay(1000);
        digitalWrite(GPIO04, 0);
        delay(1000);
    }
    return 0;
}

$gcc -c led_test.c
$gcc -o led_test led_test.o -L/usr/local/lib -lwiringPi
…面倒なので後でMakefileを書いておこう。
#./led_test
LED が 1秒毎に10回点滅すれば成功です。

スポンサーリンク

フォローする