FT232Hボードにneopixelsを接続しOSC(OpenSoundControl)で制御する
2020/4/7
FT232H OSC neopixels(spi)
FT232H OSC neopixels(spi)
概要
以下のFT232Hボードにneopixelsを接続しOSC(OpenSoundControl)で制御する。
FT232H使用USB⇔GPIO+SPI+I2C変換モジュール
Adafruit FT232H Breakout
PCのpython3でCircuitPythonのAPIを使用する
接続
D1(MOSI)をneopixelsのDINに接続する。
OSCモジュールのインストールと動作確認
Module Install:
pip3 install python-osc
Test Script:
python-osc_test.py
from pythonosc import osc_message_builder
from pythonosc import osc_message
builder = osc_message_builder.OscMessageBuilder(address="/1/fader1")
builder.add_arg(0.76)
msg = builder.build()
print(msg._dgram)
#
osc_msg = osc_message.OscMessage(msg._dgram)
print(osc_msg.address)
print(osc_msg.params)
実行(動作確認):
$ python3 python-osc_test.py
#以下が出力されればOK
b'/1/fader1\x00\x00\x00,f\x00\x00?B\x8f\\'
/1/fader1
[0.7599999904632568]
OSC/neopixelデモ
Module Install:
pip3 install python-osc
「FT232Hボードにneopixelsを接続する」にある以下のスクリプトもインストール(コピー)する。
ws2812_spi0_cpy.py
(表示が速いので、Adafruit製でないほうのモジュールを使用する)
Demo Script:
OSC_neopixel_demo.py
# FT232H board
# connect D1 to DIN of neopixels
from pythonosc import osc_message
from socket import socket, AF_INET, SOCK_DGRAM
#---------------------------------------------
import math
from time import sleep
import board
#import neopixel_spi as neopixel
from ws2812_spi0_cpy import WS2812
#---------------------------------------------
NUM_PIXELS = 64
spi = board.SPI()
np = WS2812(led_count=NUM_PIXELS, intensity=1)
#------------------------------------------------
HOST = ''
PORT = 8000
s = socket(AF_INET, SOCK_DGRAM)
s.bind((HOST, PORT))
def np_show(r,g,b,l):
pixels = [(0, 0, 0) for i in range(NUM_PIXELS)]
for n in range(NUM_PIXELS):
if (n < int(l*NUM_PIXELS)):
pixels[n] = (r, g, b)
#print(pixels)
np.show(pixels)
r = 0
g = 0
b = 0
l = 1
while True:
msg, address = s.recvfrom(128)
osc_msg = osc_message.OscMessage(msg)
#print(f"message: {osc_msg.address} {osc_msg.params} from: {address}")
if osc_msg.address == '/1/fader1':
r = int(255*osc_msg.params[0])
if osc_msg.address == '/1/fader2':
g = int(255*osc_msg.params[0])
if osc_msg.address == '/1/fader3':
b = int(255*osc_msg.params[0])
if osc_msg.address == '/1/fader5':
l = osc_msg.params[0]
#print('R:{} G:{} B:{} L:{}'.format(r,g,b,l))
np_show(r,g,b,l)
sleep(0.01)
s.close()
#---------------------------------
実行:
$ export BLINKA_FT232H=1
$ python3 OSC_neopixel_demo.py
コントローラとしてTouchOSCを使用する。 fader1,fader2,fader3,fader5が、それぞれr,g,b,lに対応しているので fader1,fader2,fader3でneopixelの色を制御し、neopixelの光る長さを fader5で制御する。制御データを取りこぼしやすいので、faderは、スライドするよりも タップするように操作する。
参照情報
python-osc:
https://python-osc.readthedocs.io/en/latest/index.html
https://github.com/attwad/python-osc.git
TouchOSC | Control reference
Open Sound Control
ESP32のMicroPythonでOSC(Open Sound Control)で通信する
CircuitPython Libraries on any Computer with FT232H
FT232H使用USB⇔GPIO+SPI+I2C変換モジュール
Adafruit FT232H Breakout
CircuitPython on Linux and Raspberry Pi
CircuitPython 5.0.x - I2C
以上
| 固定リンク
「linux」カテゴリの記事
- platfomioを使ってnaitive(linux/windows)のプログラムをビルドする方法(2021.03.10)
- micro:bit Yotta開発ツール(linux版)(2021.01.09)
- PlatformIOをRaspberryPi4で動かしてみる(実験)(2020.10.20)
- headless RaspberryPiインストール方法(v2)(2020.10.20)
- wio-terminalのファームウェア・アップデートについて(linux版)(2020.10.15)
「Open Sound Control」カテゴリの記事
- Wio-Terminal/M5Atom/ESP8622/ESP32ボードを共通のスケッチで動かす(v2)(OSC編)(2020.12.26)
- Wio-Terminal/ESP8622/ESP32ボードを共通のスケッチで動かす(OSC編)(2020.07.22)
- Wio-TerminalでWiFiで使う(その4:OSC)(2020.07.13)
- Wio_Lite_RISC-VボードでWiFiを動かす(その3:OSC)(2020.06.23)
- プログラミング言語GOでOSC(Open Sound Control)を動かす(2020.04.19)
「CircuitPython」カテゴリの記事
- MicroPython/CircuitPython Performance Test(2021.02.07)
- PicoボードにMicropython/CircuitPythonをインストールする(2021.02.03)
- XIAOでMPL3115A2(気圧・高度・気温センサ)を使用する(CircuitPython版)(2020.07.02)
- XIAOでMCP9808(温度センサ)を使用する(CircuitPython版)(2020.07.02)
- XIAOにCircuitPythonをインストールする(2020.06.09)
コメント