akey
*1キーキーボード [[index]] 2020-05-28 &twcard(自作1キーのみのキーボード,1.jpg); #contents Seeeduino XIAO+CircuitPython LEDは未実装 &simg(1.jpg); [[動画>https://youtu.be/foU-gTpNFBY]] **写真 &simg(2.jpg); &simg(3.jpg); 固定はホットメルト &simg(4.jpg); &simg(6.jpg); &simg(5.jpg); **作り方 [[Seeeduino XIAO>https://jp.seeedstudio.com/Seeeduino-XIAO-Arduino-Microcontroller-SAMD21-Cortex-M0+-p-4426.html]] 自作PCB(白い基板) ケースは3Dプリンタで作成 Flashforge [[Adventurer3>https://flashforge.co.jp/adventurer3/]] Arduinoで作ろうかと思ったのですが、XIAOのArduinoはHID対応していないっぽい (keyboardのファーム焼くと、USB認識で失敗する) ★★★最新版に関しては↓参照★★★ [[xiao_circuitpython]] なのでCircuitPythonを使いました。 CircuitPythonはこちらを参考にしました。 [[Build a simple USB HID Macropad using Seeeduino Xiao & CircuitPython>https://makeandymake.github.io/2020/05/02/seeeduino-xiao-circuitpython-usb-hid-macro-keypad.html]] +CircuitPythonを落とす [[https://circuitpython.org/board/seeeduino_xiao/]] 今回は5.3.0 +CircuitPythonをXIAOのドライブに書き込む +ライブラリを落とす [[https://github.com/adafruit/Adafruit_CircuitPython_Bundle/releases]] 今回はadafruit-circuitpython-bundle-5.x-mpy-20200528.zip +zip展開してadafruit_hidの中の__init__.mpy,keyboard_layout_us.mpy,keyboard.mpy,keycode.mpyをCUIRCUITPYドライブのlibへコピーする。この時lib\afafruit_hidに入れる。libに直接入れて動かなくてはまった。 +CUIRCUITPYドライブのルートにmain.pyをコピーする。 > # Import the libraries > import time > import board > from digitalio import DigitalInOut, Direction, Pull > from adafruit_hid.keyboard import Keyboard > from adafruit_hid.keycode import Keycode > from adafruit_hid.keyboard_layout_us import KeyboardLayoutUS > import usb_hid > > # define output LED > led = DigitalInOut(board.D13) > led.direction = Direction.OUTPUT > > # flash the LED when booting > for x in range(0, 5): > led.value = False > time.sleep(0.2) > led.value = True > time.sleep(0.2) > > # configure device as keyboard > kbd = Keyboard(usb_hid.devices) > layout = KeyboardLayoutUS(kbd) > > d2 = DigitalInOut(board.D2) > d2.direction = Direction.INPUT > d2.pull = Pull.UP > > # loop forever > while True: > if not d2.value: > # mute video on bluejeans > led.value = False # led on > #kbd.send(Keycode.V) > layout.write('Hello!') > time.sleep(0.3) # debounce delay > led.value = True # led off **neopixel neopixel光らせるのにちょっと苦労しました +libに入れるファイル +半田不良 で、問題なのがlibに入れるファイルなんですが、neopixel.mpyだけ入れていたんですが、どうもimportで失敗してうごいていないっぽい。 teratermでPEPLモードで1行づつ実行してみるとエラーが出る。 ので、それを見ながら足りないファイルをlibに追加していきました。 今回PEPLでわかったのはこれ >lib/adafruit_pypixelbuf.mpy それ以外にも入れる必要あれば適宜入れていく。 半田不良は情けない話で、部品が後で入手できたので、コネクタとかよけてはんだ付けしたらいも半田でしたorz 久しぶりに、オシロのプローブあてると動く???んんん???という事やりました。 光らせるソース 元はこちらを改造[[Adafruit CircuitPython NeoPixel>https://learn.adafruit.com/adafruit-neopixel-uberguide/python-circuitpython]] > # Import the libraries > import time > import board > from digitalio import DigitalInOut, Direction, Pull > import neopixel > > # define output LED > led = DigitalInOut(board.D13) > led.direction = Direction.OUTPUT > > # flash the LED when booting > for x in range(0, 5): > led.value = False > time.sleep(0.2) > led.value = True > time.sleep(0.2) > > num_pixels = 1 > #pixels = neopixel.NeoPixel(board.D0, num_pixels, brightness=0.3, auto_write=False, pixel_order=(1, 0, 2, 3)) > pixels = neopixel.NeoPixel(board.D0, 1) > RED = (255, 0, 0) > pixels[0] = (255, 255, 0) > > 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: > return (0, 0, 0) > if pos < 85: > return (255 - pos * 3, pos * 3, 0) > if pos < 170: > pos -= 85 > return (0, 255 - pos * 3, pos * 3) > pos -= 170 > return (pos * 3, 0, 255 - pos * 3) > > def rainbow_cycle(wait): > for j in range(255): > rc_index = 256 + j > pixels[0] = wheel(rc_index & 255) > pixels.show() > time.sleep(wait) > > while True: > rainbow_cycle(0) **リンク [[1%キーボードのリンク集>https://kurihara.hatenadiary.jp/entry/2022/05/21/115539]] [[seeed studio PCB assembly>https://www.seeedstudio.com/pcb-assembly.html]] XIAO作ったところのPCBAサービス end.
2025-01-15 20:10:04 32400