1/f로 칠색으로 흔들리는 필립스 허를 해보았다
10428 단어 PhilipsHue포엠파이썬해봤어
오늘 아침.
1/f의 변동이란
...모두 모르겠어....
어쩐지 푸리에 변환하면, 강도가 주파수에 반비례하는 것만은 알았다.
원래 기사에서도 참조되지만, 1/f로 칠색으로 흔들리는 LED 조명을 전자공작한다(입문 레벨) 의 기사에서, 자세한 설명이 있습니다. (고맙습니다)
그래프 덕분에 완전히 이해했다.
만들기
(재료 목록)
신규 철도 모형 레이아웃 제작 상황 그 2:별의 변동 표현
필립스 Hue를 프로그래밍 방식으로 제어하는 방법은 파이썬에서 사용할 수있는 또는 Node.js의 phue입니다.
이번에는 phue 쪽을 사용해, 신속하게 실장해 갑시다.
Philips Hue의 색 공간은 HSV입니다.
우리 인류에게 RGB 이외의 색 공간은 미지의 세계. 바로 우주. 그러나 파이썬에는 표준 라이브러리 cylon.js에 RGB에서 HSV로 변환하는
rgb_to_hsv
가 있습니다.지루한 일은 파이썬에게 해보자.
이렇게, 흔들림에 대해서나, HSV 색 공간 등 모르는 것을 튕겨, 짜챠과 완성한 것이 이쪽.
# ipythonで実行
!pip install phue
from colorsys import rgb_to_hsv
from random import uniform, randint
from time import sleep
from phue import Bridge
IP_OF_MY_BRIDGE = "192.168.0.1" # Philips Hue BridgeのIPアドレス
GROUP = [1,2,3,4] # 操作したい電球のidリスト
MAX_RGB = 255
FLUCTUATION_THRESHOLD = 0.01 # 元記事でいう大きすぎたり小さすぎたりすると変化しなくなる問題の回避のための閾値 (好みで小さくしてみた)
def init_rgb():
return [randint(0, MAX_RGB) for _ in range(3)]
def fluctuate(x):
if x < 0.5:
x = x + 2 * x * x
else:
x = x - 2 * (1.0 - x) * (1.0 - x)
if x < FLUCTUATION_THRESHOLD or x > 1 - FLUCTUATION_THRESHOLD:
x = uniform(0.1, 0.9)
return x
def convert_rgb_to_next_state(rgb_list):
for idx, rgb in enumerate(rgb_list):
rgb_list[idx] = round(fluctuate(rgb/MAX_RGB) * MAX_RGB)
return rgb_list
def set_right(light_idx,r:int, g:int, b:int):
hsv = rgb_to_hsv(r/MAX_RGB, g/MAX_RGB, b/MAX_RGB)
light = lights[light_idx]
#print(hsv)
light.hue = round(hsv[0] * 65535) # max hue is 65535
light.saturation = round(hsv[1] * 255) # max saturation = 255
light.brightness = round(hsv[2] * 255) # max brightness = 255
light.transitiontime = 10 # 1 second
def main():
bridge = Bridge(IP_OF_MY_BRIDGE)
bridge.connect()
lights = bridge.get_light_objects('id')
right_rgb_states = [init_rgb() for _ in GROUP]
while True:
sleep(1)
for idx, right_rgb_state in enumerate(right_rgb_states):
set_right(GROUP[idx], *right_rgb_state)
right_rgb_states[idx] = convert_rgb_to_next_state(right_rgb_state)
main()
아침에 딱 맞는 놀이였습니다.
아무것도 모르더라도 의외로 어떻게든 되는군요.
Philips Hue의 활용 방법을 더 생각해 가고 싶습니다.
또, 실장중, 「인류적으로는 RGB는 0-255가 그래」라고 생각하고 있었습니다만, 실장 후에 보면, 보통으로 소수로 좋은 생각이 들었습니다.
전자공작에도 입문해…
결과(GIF)
colorsys
Reference
이 문제에 관하여(1/f로 칠색으로 흔들리는 필립스 허를 해보았다), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://qiita.com/reiven052/items/efbfb176f725f9d7431e텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)