で、LED1個では寂しいから、同じコードを繰り返して、8個でLチカ。
抵抗は8素子9ピンの集合抵抗、各素子330Ω。Vfが3.0~3.4V、Ifが20mAとある青色LEDなのだが、抵抗がこれだけならせいぜい10mAくらいだ。GPIOの各ピンから流せる電流は50mAまでだそうなので、まあ、大丈夫だろう。
動かすとこんな感じ。
プログラムは、GPIOのセットアップをするシェルと、Perlのスクリプトだ。
シェルはこのようなもの。コピペで繰り返しただけ。シェル内の数字がピン番号。
#!/bin/sh echo 5 >/sys/class/gpio/export echo 6 >/sys/class/gpio/export echo 13 >/sys/class/gpio/export echo 19 >/sys/class/gpio/export echo 26 >/sys/class/gpio/export echo 21 >/sys/class/gpio/export echo 20 >/sys/class/gpio/export echo 16 >/sys/class/gpio/export echo out >/sys/class/gpio/gpio5/direction echo out >/sys/class/gpio/gpio6/direction echo out >/sys/class/gpio/gpio13/direction echo out >/sys/class/gpio/gpio19/direction echo out >/sys/class/gpio/gpio26/direction echo out >/sys/class/gpio/gpio21/direction echo out >/sys/class/gpio/gpio20/direction echo out >/sys/class/gpio/gpio16/direction
Perlも同じで、コピペで繰り返しただけ。……「配列に書けよ」とかの至極もっともなツッコミはナシの方向でお願いいたしますです(笑)。
#!/usr/bin/perl # perl2LEDx8 # perlで8個Lチカ # 27.8.16(日)1500~ # 佐藤俊夫 # use strict; use warnings; use Time::HiRes 'sleep'; open(LED1, ">/sys/class/gpio/gpio5/value"); open(LED2, ">/sys/class/gpio/gpio6/value"); open(LED3, ">/sys/class/gpio/gpio13/value"); open(LED4, ">/sys/class/gpio/gpio19/value"); open(LED5, ">/sys/class/gpio/gpio26/value"); open(LED6, ">/sys/class/gpio/gpio21/value"); open(LED7, ">/sys/class/gpio/gpio20/value"); open(LED8, ">/sys/class/gpio/gpio16/value"); LED1->autoflush(1); LED2->autoflush(1); LED3->autoflush(1); LED4->autoflush(1); LED5->autoflush(1); LED6->autoflush(1); LED7->autoflush(1); LED8->autoflush(1); while(){ print LED8 0; print LED1 1; sleep(0.2); print LED1 0; print LED2 1; sleep(0.2); print LED2 0; print LED3 1; sleep(0.2); print LED3 0; print LED4 1; sleep(0.2); print LED4 0; print LED5 1; sleep(0.2); print LED5 0; print LED6 1; sleep(0.2); print LED6 0; print LED7 1; sleep(0.2); print LED7 0; print LED8 1; sleep(0.2); }