mieki256's diary



2016/07/18(月) [n年前の日記]

#1 [raspberrypi] Raspberry Pi3でスイッチを読み取り

Lチカはできたから、今度はスイッチの読み取りを実験。

led_and_sw_bb.png

led_and_sw_c.png

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()

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 として保存。
#!/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を点滅 - 忘れる前に書き残す が参考になった。

以上です。

過去ログ表示

Prev - 2016/07 - Next
1 2
3 4 5 6 7 8 9
10 11 12 13 14 15 16
17 18 19 20 21 22 23
24 25 26 27 28 29 30
31

カテゴリで表示

検索機能は Namazu for hns で提供されています。(詳細指定/ヘルプ


注意: 現在使用の日記自動生成システムは Version 2.19.6 です。
公開されている日記自動生成システムは Version 2.19.5 です。

Powered by hns-2.19.6, HyperNikkiSystem Project