読者です 読者をやめる 読者になる 読者になる

ちぎっては投げるブログ

Programming, Android, RaspberryPi, Digital Devices, Kinkuma Hamster...

Raspberry PiでLEDを光らせる

RaspberryPi Programming TIL

denpa-shinbun.com

で買ったLEDを光らせる。

3色フルカラーSMD LEDモジュールで、RGBの各PINに0-255のアナログ値を書き込むことで色を表現する。

ところが、Raspberry Piにはアナログ出力がない。デジタル出力をPWM制御し疑似アナログ化するらしいが、今回はひとまず光らせることだけを目標とする。

RaspberryPiの設定

接続は単純に、

  • B:17
  • R:27
  • G:22
  • GND:GNDPIN

とした。

f:id:mczh:20160718181457j:plain

まず、/sys/class/gpio/exportに、書き込み用のファイルを生成する。 ここでは、17,27,22のGPIOを利用するものとして、

echo 17 > /sys/class/gpio/export
echo 27 > /sys/class/gpio/export
echo 22 > /sys/class/gpio/export

とした。

続いて、Raspberry PiのGPIOを入力に使うのか出力に使うのかを設定する。 ここでは出力なので、outに設定する。

echo out > /sys/class/gpio/gpio17/direction
echo out > /sys/class/gpio/gpio27/direction
echo out > /sys/class/gpio/gpio22/direction

最後に、出力(0or1)を設定する。

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

これで、青色に光る。

スクリプト化

こんなファイル名を覚えておけるわけがないので、スクリプト化しておく。

#!/bin/sh

func_led_on ()
{
    echo 1 > /sys/class/gpio/gpio${1}/value
}

func_led_off ()
{
    echo 0 > /sys/class/gpio/gpio${1}/value
}

BLUE=17
RED=27
GREEN=22

echo "Conncet GPIO ${BLUE}:B."
echo "Connect GPIO ${RED}:R."
echo "Connect GPIO ${GREEN}:G."
echo "Connect GND."

sudo echo $BLUE > /sys/class/gpio/export
sudo echo $RED > /sys/class/gpio/export
sudo echo $GREEN > /sys/class/gpio/export

sudo echo out > /sys/class/gpio/gpio${BLUE}/direction
sudo echo out > /sys/class/gpio/gpio${RED}/direction
sudo echo out > /sys/class/gpio/gpio${GREEN}/direction

echo "done."

echo "Test Start."

func_led_on $BLUE
sleep 1
func_led_off $BLUE
func_led_on $RED
sleep 1
func_led_off $RED
func_led_on $GREEN
sleep 1
func_led_off $GREEN

echo "Test End."

再起動後も有効にする

これらのファイルは再起動すると削除されるようなので、/etc/rc.localに追記して起動に自動で実行されるようにする。

sudo emacs /etc/rc.local
/home/pi/tweetTenki/setupGpioForLed.sh