で買ったLEDを光らせる。
3色フルカラーSMD LEDモジュールで、RGBの各PINに0-255のアナログ値を書き込むことで色を表現する。
ところが、Raspberry Piにはアナログ出力がない。デジタル出力をPWM制御し疑似アナログ化するらしいが、今回はひとまず光らせることだけを目標とする。
RaspberryPiの設定
接続は単純に、
- B:17
- R:27
- G:22
- GND:GNDPIN
とした。
まず、/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