ラズパイメモ
ラズパイでNeopixelを光らせる方法2023
はじめに
注)GPIO18を使用する際は /boot/config.txt の"dtparam=audio=on" を "dtparam=audio=off" に変更し再起動すること.
STEP 1: ラズパイ上にNeopixelの実行環境(「rpi_ws281x adafruit-circuitpython-neopixel」と「adafruit-blinka」)をインストールする。Python3にインストールすること(下記の通りにやればOKです)。
ターミナルから下記を実行する。
code:ターミナル
sudo pip3 install rpi_ws281x adafruit-circuitpython-neopixel
sudo python3 -m pip install --force-reinstall adafruit-blinka
STEP 2:
注1)デフォルトだとThonnyからはsu権限で実行できません。ターミナルから下記のコマンドで実行してください。
code:ターミナル
# pyのファイルがあるディレクリマまで移動して
sudo python3 ◯◯.py # "◯◯"の部分は適切なファイル名に変更してください
コード
code:py
# SPDX-FileCopyrightText: 2021 ladyada for Adafruit Industries
# SPDX-License-Identifier: MIT
import time
import board
import neopixel
# On CircuitPlayground Express, and boards with built in status NeoPixel -> board.NEOPIXEL
# Otherwise choose an open pin connected to the Data In of the NeoPixel strip, i.e. board.D1
pixel_pin = board.NEOPIXEL
# On a Raspberry pi, use this instead, not all pins are supported
# pixel_pin = board.D18
# The number of NeoPixels
num_pixels = 10
# The order of the pixel colors - RGB or GRB. Some NeoPixels have red and green reversed!
# For RGBW NeoPixels, simply change the ORDER to RGBW or GRBW.
ORDER = neopixel.GRB
pixels = neopixel.NeoPixel(
pixel_pin, num_pixels, brightness=0.2, auto_write=False, pixel_order=ORDER
)
def wheel(pos):
# Input a value 0 to 255 to get a color value.
# The colours are a transition r - g - b - back to r.
if pos < 0 or pos > 255:
r = g = b = 0
elif pos < 85:
r = int(pos * 3)
g = int(255 - pos * 3)
b = 0
elif pos < 170:
pos -= 85
r = int(255 - pos * 3)
g = 0
b = int(pos * 3)
else:
pos -= 170
r = 0
g = int(pos * 3)
b = int(255 - pos * 3)
return (r, g, b) if ORDER in (neopixel.RGB, neopixel.GRB) else (r, g, b, 0)
def rainbow_cycle(wait):
for j in range(255):
for i in range(num_pixels):
pixel_index = (i * 256 // num_pixels) + j
pixelsi = wheel(pixel_index & 255) pixels.show()
time.sleep(wait)
while True:
# Comment this line out if you have RGBW/GRBW NeoPixels
pixels.fill((255, 0, 0))
# Uncomment this line if you have RGBW/GRBW NeoPixels
# pixels.fill((255, 0, 0, 0))
pixels.show()
time.sleep(1)
# Comment this line out if you have RGBW/GRBW NeoPixels
pixels.fill((0, 255, 0))
# Uncomment this line if you have RGBW/GRBW NeoPixels
# pixels.fill((0, 255, 0, 0))
pixels.show()
time.sleep(1)
# Comment this line out if you have RGBW/GRBW NeoPixels
pixels.fill((0, 0, 255))
# Uncomment this line if you have RGBW/GRBW NeoPixels
# pixels.fill((0, 0, 255, 0))
pixels.show()
time.sleep(1)
rainbow_cycle(0.001) # rainbow cycle with 1ms delay per step
注2)エラー ModuleNotFoundError:No module named 'board' が出てきた場合
root権限で実行していないのが問題の可能性大です。まずはStep2の注)1のとおり対応すること
それでもできない場合は
一度、boardをアンインストールしてから、
ターミナルから下記を実行する。
code:ターミナル
pip3 uninstall board
sudo python3 -m pip install --force-reinstall adafruit-blinka
code:ターミナル
sudo pip3 install rpi_ws281x adafruit-circuitpython-neopixel
sudo python3 -m pip install --force-reinstall adafruit-blinka
GPIOで人感センサー
code:py
import RPi.GPIO as GPIO
import time
GPIO.setmode(GPIO.BCM)
GPIO.setup(GPIO_PIN,GPIO.IN)
while True:
if(GPIO.input(GPIO_PIN) == GPIO.HIGH):
print("何かいます!")
time.sleep( 1 )
else:
print("なにもなし")
time.sleep( 1 )
Neopixel
NeoPixels must be connected to GPIO10, GPIO12, GPIO18 or GPIO21
code:py
sudo pip3 install adafruit-circuitpython-neopixel
ImportError: No module named _rpi_ws281x が出た場合
sudo pip install rpi_ws281x
code:py
code:py
sudo apt-get install scons
code:py
cd rpi_ws281x
sudo scons
code:py
sudo ./test