ラズパイ WiringPi LED明暗


20160510_raspi_led

LED点滅 に続いて、ラズパイで WiringPi を使ってLEDを徐々に明くしたり暗くしたりします。

WiringPi では、ハードウェア PWM が使えます。
ラズパイ2では、2チャネルあり、1つは P32 (GPIO12) か P12 (GPIO18)、もう1つは P33 (GPIO13) か P35 (GPIO19) です。

P12(GPIO18) と P6(GND) の間に、LEDと1KΩの抵抗を直列に入れます。
20160510_raspi_led_gpio17

wiringpi_led_fade.py

import wiringpi
import time
PIN = 18 
INTERVAL = 0.05
MIN_BRIGHTNESS = 0
MAX_BRIGHTNESS = 1023
bright = 0
amount = 16
wiringpi.wiringPiSetupGpio()
wiringpi.pinMode(PIN, wiringpi.PWM_OUTPUT)
try:
	# endless loop
	while True:
		print bright
		wiringpi.pwmWrite(PIN, bright)
		bright = bright + amount;
		if bright <= MIN_BRIGHTNESS:
			bright = MIN_BRIGHTNESS
			amount = -amount
		elif bright >= MAX_BRIGHTNESS:
			bright = MAX_BRIGHTNESS
			amount = -amount
		time.sleep(INTERVAL)
except KeyboardInterrupt:
	# exit the loop, if key interrupt
	pass

参考
Core Functions – Wiring Pi
・void pinMode (int pin, int mode)
pin に対して、mode として、INPUT、 OUTPUT、 PWM_OUTPUT、または GPIO_CLOCK のいずれかを設定します。
PWM_OUTPUT は、WiringPi 1ピン (BCM_GPIO 18) のみサポートされています。
GPIO_CLOCK は、WiringPi 7ピン (BCM_GPIO 4) のみサポートされています。

・void pwmWrite (int pin, int value) ;
指定されたピンのPWMレジスタに値を書き込みます。
ラズパイ1はオンボードPWMピンを1つ持っています。
Wiring Pi 1ピン (BMC_GPIO 18、物理ピン12) です。
value の範囲は0〜1024です。
他のPWMデバイスは、他のPWM範囲を有することができます。

Raspberry Piで学ぶ電子工作
wiringPiを用いたハードウェアPWM信号によるサーボモーターの制御
Raspberry Pi Model B ではハードウェアPWM信号はGPIO 18からの1つのみしか出力できなかったのですが、Raspberry Pi Model B+以降(Raspberry Pi 2 Model B含む)では、ハードウェアPWM信号を2つ出力できます。
1つ目のPWM0はGPIO 18かGPIO 12のどちらかから、2つ目のPWM1はGPIO 13かGPIO 19のどちらかから出力できます。


コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です