« プログラミング言語ChucKとそのIDEであるminiAudicleをインストールする方法 | トップページ | PolarのOH1(HRセンサー)の装着位置変更による精度改善について »

2020年4月 7日 (火)

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)で通信する

FT232Hボードにneopixelsを接続する

FT232H Blinka PINOUT

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

以上

|

« プログラミング言語ChucKとそのIDEであるminiAudicleをインストールする方法 | トップページ | PolarのOH1(HRセンサー)の装着位置変更による精度改善について »

linux」カテゴリの記事

Open Sound Control」カテゴリの記事

CircuitPython」カテゴリの記事

コメント

コメントを書く



(ウェブ上には掲載しません)




« プログラミング言語ChucKとそのIDEであるminiAudicleをインストールする方法 | トップページ | PolarのOH1(HRセンサー)の装着位置変更による精度改善について »