2016/07/18(月) [n年前の日記]
#1 [raspberrypi] Raspberry Pi3でスイッチを読み取り
Lチカはできたから、今度はスイッチの読み取りを実験。
GPIO 18番にLEDを、GPIO 24番にタクトスイッチを接続。抵抗は、LED用が680Ω、スイッチ用が3.3KΩ。
lwd_sw.py として保存。
sudo python led_sw.py として実行。スイッチを押すとLEDが光った。終了は、Ctrl + C を押す。
GPIO 18番にLEDを、GPIO 24番にタクトスイッチを接続。抵抗は、LED用が680Ω、スイッチ用が3.3KΩ。
lwd_sw.py として保存。
#!/usr/bin/env python # -*- coding: utf-8 -*- import RPi.GPIO as GPIO from time import sleep LED_PIN = 18 SW_PIN = 24 GPIO.setmode(GPIO.BCM) GPIO.setup(LED_PIN, GPIO.OUT) GPIO.setup(SW_PIN, GPIO.IN) try: while True: if GPIO.input(SW_PIN) == GPIO.HIGH: GPIO.output(LED_PIN, GPIO.HIGH) else: GPIO.output(LED_PIN, GPIO.LOW) sleep(0.016) except KeyboardInterrupt: pass GPIO.cleanup()
- GPIO.setup(ピン番号, GPIO.OUT) で、出力ピンに設定。
- GPIO.setup(ピン番号, GPIO.IN) で、入力ピンに設定。
- GPIO.input(ピン番号) で、ピンの入力を調べられる。GPIO.HIGH になってるか、GPIO.LOW になってるかをチェックできる。
sudo python led_sw.py として実行。スイッチを押すとLEDが光った。終了は、Ctrl + C を押す。
◎ ついでにLEDをPWM制御。 :
PWM(pulse width modulation、パルス幅変調)を使って、LEDの明るさが変化するように光らせてみる。
PWMってのは、オンにしてる時間とオフにしてる時間の比率を変化させることで、電力量を調整する方法、という説明で合ってるのかな。どうなんだろ。 _PWMとは | 東芝 ストレージ&デバイスソリューション社 の図を見れば、なんとなく分かるだろうか…。
Raspberry Piの場合、GPIO 18番がPWM制御に使える、という記述をどこかで見かけた。たしかもう1本、使えるピンがあるという話も見かけたけど…。どこだろう…。
led_pwm.py として保存。
sudo python led_pwm.py として実行。こんな感じに。
_raspberry-gpio-python / Wiki / PWM や、 _Raspberry PiでPWM制御を使ってLEDを点滅 - 忘れる前に書き残す が参考になった。
PWMってのは、オンにしてる時間とオフにしてる時間の比率を変化させることで、電力量を調整する方法、という説明で合ってるのかな。どうなんだろ。 _PWMとは | 東芝 ストレージ&デバイスソリューション社 の図を見れば、なんとなく分かるだろうか…。
Raspberry Piの場合、GPIO 18番がPWM制御に使える、という記述をどこかで見かけた。たしかもう1本、使えるピンがあるという話も見かけたけど…。どこだろう…。
led_pwm.py として保存。
#!/usr/bin/python # -*- coding: utf-8 -*- import RPi.GPIO as GPIO import time LED_PIN = 18 GPIO.setmode(GPIO.BCM) GPIO.setup(LED_PIN, GPIO.OUT) pwm = GPIO.PWM(LED_PIN, 1000) pwm.start(0) try: for i in range(3): for dc in range(0, 101, 10): pwm.ChangeDutyCycle(dc) time.sleep(0.1) for dc in range(100, -1, -10): pwm.ChangeDutyCycle(dc) time.sleep(0.1) except KeyboardInterrupt: pass pwm.stop() GPIO.cleanup()
- pwm = GPIO.PWM(ピン番号, 周波数) で、PWMを使うピン番号と、PWMの周波数を指定できるらしい。
- pwm.start(0) で、デューティ(時間幅) を 0 にしてる。
- pwm.ChangeDutyCycle(デューティ) で、デューティを設定できる。0(%)から100(%)まで指定できる模様。
sudo python led_pwm.py として実行。こんな感じに。
_raspberry-gpio-python / Wiki / PWM や、 _Raspberry PiでPWM制御を使ってLEDを点滅 - 忘れる前に書き残す が参考になった。
[ ツッコむ ]
以上です。