2016-10-05

Raspberry Pi でLED点滅いろいろ

Raspberry Pi プログラミングの第一歩、Lチカサンプル集です。

GPIO14のとなりにGNDがあって便利なので、これを使います。ブレッドボード上などで配線するならGPIO14以外でも構いません。その場合は、以降のサンプルプログラムで指定しているピン番号を適宜書き換えてください。

シェルコマンドで

GPIOを有効にする

echo 14 >/sys/class/gpio/export

GPIOを出力モードにする

echo out >/sys/class/gpio/gpio14/direction

GPIO出力をHIGHにする(点灯)

echo 1 >/sys/class/gpio/gpio14/value

GPIO出力をLOWにする(消灯)

echo 0 >/sys/class/gpio/gpio14/value

GPIOを無効にする

echo 14 >/sys/class/gpio/unexport

連続して点滅するシェルスクリプト

上記手順をシェルスクリプトにして連続点滅するようにしました。このスクリプトは無限ループし、Ctrl+Cを押して停止するしかないので、最後のunexportは実行されません。

#!/bin/sh
echo 14 >/sys/class/gpio/export
sleep 0.1
echo out >/sys/class/gpio/gpio14/direction
while :
do
echo 1 >/sys/class/gpio/gpio14/value
sleep 0.5
echo 0 >/sys/class/gpio/gpio14/value
sleep 0.5
done echo 14 >/sys/class/gpio/unexport

Pythonで

同じことをPythonでやります。いちおう最後に cleanup と書いてありますが、無限ループしますので、この行は実行されません。ちゃんと正常終了するプログラムを作る場合は、行儀良く後始末の cleanup をしておいた方がいいでしょう。

import RPi.GPIO as GPIO
import time

GPIO.setmode(GPIO.BCM)
GPIO.setup(14, GPIO.OUT)

while 1:
  GPIO.output(14, GPIO.HIGH)
  time.sleep(0.5)
  GPIO.output(14, GPIO.LOW)
  time.sleep(0.5)

GPIO.cleanup()

wiringPiで

初めにwiringPiのソースコードをダウンロードしてインストールする必要があります。

sudo apt-get install git
git clone git://git.drogon.net/wiringPi
cd wiringPi/
./build
出力モードに設定してから、1を書き込むと点灯、0を書き込むと消灯します。
gpio -g mode 14 out
gpio -g write 14 1
gpio -g write 14 0  

C言語で

bcm2835ライブラリがおすすめです。

http://www.airspayce.com/mikem/bcm2835/

準備

wget http://www.airspayce.com/mikem/bcm2835/bcm2835-1.50.tar.gz
tar zxvf bcm2835-1.50.tar.gz

blink.c

#include <bcm2835.h>

#define PIN 14

int main()
{
    if (!bcm2835_init()) return 1;

    bcm2835_gpio_fsel(PIN, BCM2835_GPIO_FSEL_OUTP);

    while (1) {
        bcm2835_gpio_write(PIN, HIGH);
        bcm2835_delay(500);
        bcm2835_gpio_write(PIN, LOW);
        bcm2835_delay(500);
    }
    bcm2835_close();
    return 0;
}

コンパイル

gcc -Ibcm2835-1.50/src blink.c bcm2835-1.50/src/bcm2835.c

実行

./a.out