技術をかじる猫

適当に気になった技術や言語、思ったこと考えた事など。

Circuit Playground Express の各種機能を試す(2)

環境::

  • CircuitPlaygroundExpress : Bootloader 3.10.0
  • CircuitPython : 5.0

ライブラリで色彩/明度/彩度 を扱う

どちらかといえば CircuitPython の機能で、 ライブラリ からコピーして使う。

f:id:white-azalea:20200630194834p:plain

全部のライブラリをコピーはできないので、今回使うものだけ。
この上で

import time
import board
import neopixel
import adafruit_fancyled.adafruit_fancyled as fancy

npx = neopixel.NeoPixel(board.NEOPIXEL, 10, auto_write=False)

while True:
    for pp in range(10):
        h = (pp * (1.0/10))
        hsvcolor = fancy.CHSV(h, 1.0, 0.2)
        npx[pp] = hsvcolor.pack()
        npx.show()
        time.sleep(0.2)

すると

f:id:white-azalea:20200630194354j:plain

綺麗なグラデーションですね…

光学センサーで明るさ計測

import time
import analogio
import board

light = analogio.AnalogIn(board.LIGHT)

while True:
    print((light.value,))
    time.sleep(1.0)

としたとき部屋の蛍光灯でこんな感じです

(3168,)  # 蛍光灯の光
(3136,)
(800,)  # 手で隠した
(720,)
(720,)

タッチセンサー

タッチセンサーによって LED の色を変動させるプログラム

タッチセンサーは周辺の穴の空いた端子ですが、今回 A1, A2, A5, A6 を使います。
以下の写真にそれぞれの配置がプリントされてます。

f:id:white-azalea:20200630202607j:plain

A シリーズはすべて操作可能なのはわかってましたが、RGB いじりたいだけでしたので今回は避けました。

import time
import board
import neopixel
import touchio
from simpleio import map_range

# LED セットアップ
npx = neopixel.NeoPixel(board.NEOPIXEL, 10, auto_write=True)

# タッチセンサーを設定する
touch_A1 = touchio.TouchIn(board.A1)
touch_A2 = touchio.TouchIn(board.A2)
touch_A5 = touchio.TouchIn(board.A5)
touch_A6 = touchio.TouchIn(board.A6)

# 色のセット
r_in = 0
g_in = 0
b_in = 0

while True:
    # タッチするセンサーによって RGB を決定
    if touch_A1.value:
        r_in += 1
    if touch_A2.value:
        g_in += 1
    if touch_A5.value:
        b_in += 1
    if touch_A6.value:
        r_in -= 1
        g_in -= 1
        b_in -= 1
    
    # 0 - 255 までに抑える
    r_in = 0 if r_in < 0 else r_in
    g_in = 0 if g_in < 0 else g_in
    b_in = 0 if b_in < 0 else b_in
    r_in = 255 if r_in > 255 else r_in
    g_in = 255 if g_in > 255 else g_in
    b_in = 255 if b_in > 255 else b_in

    # LED に色を書き込む
    npx[7] = (r_in, g_in, b_in)
    time.sleep(0.2)

でちょっとやってみたのがこの 2 枚

f:id:white-azalea:20200630203107j:plainf:id:white-azalea:20200630203122j:plain

タッチ時間によって色が変化します。