USB-IO2.0 Lチカ

# 「連続出力」コマンドで Lチカ


[USB-IO2.0](https://km2net.com/shop/index.shtml) の [連続出力](https://km2net.com/usb-fsio/command.shtml)コマンドを使って Lチカさせてみた。

[R内蔵LED](https://akizukidenshi.com/catalog/g/g112518/) の アノード を ポート1 の ピン1 に、カソード を GND に接続。

<img width="300" alt="IMG_3456.png" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/283293/6ffc16f9-d17c-8408-5383-5d698f476896.png" />

システム設定で、ポート1 の ピン1 を出力ポートに設定しておくこと。



# 連続出力コマンド

フォーマットは次のとおり。

<img width="500" alt="conti_out.png" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/283293/c64d9057-aa44-2564-582e-01d157c85044.png" />

><i>「連続出力」コマンドは [USB-IO2.0(AKI)](https://akizukidenshi.com/catalog/g/g105131/)では使えない</i>

バイト1から4バイトごとのブロックで、
`出力ポート`、`出力値`、`833.3μs単位の待ち時間`、`8.3μs単位の待ち時間` を指定し、最大15ブロックまで指定できる。


```python
data = [0x22, #連続出力コマンド
    0x01,0x02,0xFF,0x00, #1  On
    0x01,0x00,0xFF,0x00, #2   Off
    0x01,0x02,0xFF,0x00, #3  On
    0x01,0x00,0xFF,0x00, #4   Off
    0x01,0x02,0xFF,0x00, #5  On
    0x01,0x00,0xFF,0x00, #6   Off
    0x01,0x02,0xFF,0x00, #7  On
    0x01,0x00,0xFF,0x00, #8   Off
    0x01,0x02,0xFF,0x00, #9  On
    0x01,0x00,0xFF,0x00, #10  Off
    0x01,0x02,0xFF,0x00, #11 On
    0x01,0x00,0xFF,0x00, #12  Off
    0x01,0x02,0xFF,0x00, #13 On
    0x01,0x00,0xFF,0x00, #14  Off
    0x00,0x00,0x00,0x00, #15 -
    0x00,0x00,0x00]
```

↑ このコマンドで、点滅周期 約0.4秒（833.3μs × 255 × 2）で7回点滅する。




# コード全体

```python:「連続出力」コマンドで Lチカ
import hid

VENDOR_ID = 0x1352   # Km2Net
PRODUCT_ID = 0x0120  # USB-IO2.0

CMD_CONTI_OUTPUT = 0x22 # 連続出力コマンド
MAX_CMD_LENGTH = 64

h = hid.device()
h.open(VENDOR_ID, PRODUCT_ID)

data = [CMD_CONTI_OUTPUT,
    0x01,0x02,0xFF,0x00, #1  On
    0x01,0x00,0xFF,0x00, #2   Off
    0x01,0x02,0xFF,0x00, #3  On
    0x01,0x00,0xFF,0x00, #4   Off
    0x01,0x02,0xFF,0x00, #5  On
    0x01,0x00,0xFF,0x00, #6   Off
    0x01,0x02,0xFF,0x00, #7  On
    0x01,0x00,0xFF,0x00, #8   Off
    0x01,0x02,0xFF,0x00, #9  On
    0x01,0x00,0xFF,0x00, #10  Off
    0x01,0x02,0xFF,0x00, #11 On
    0x01,0x00,0xFF,0x00, #12  Off
    0x01,0x02,0xFF,0x00, #13 On
    0x01,0x00,0xFF,0x00, #14  Off
    0x00,0x00,0x00,0x00, #15 -
    0x00,0x00,0x00]
h.write(data)

print(h.read(MAX_CMD_LENGTH))

h.close()
```

<iframe height="300" src="https://www.youtube.com/embed/7EdusLOjMi8?loop=1&playlist=7EdusLOjMi8" title="USB-IO2.0 Lチカ" frameborder="0" allow="accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture; web-share" referrerpolicy="strict-origin-when-cross-origin" allowfullscreen></iframe>



# 環境

M1 Mac
macOS 14.5

[hidapi](https://github.com/gbishop/cython-hidapi)　0.14.0
[Cython](https://cython.org/)　3.0.10


## hidapiインストール方法

- コマンドのみ

```terminal
$ pip install Cython

$ git clone https://github.com/gbishop/cython-hidapi.git
$ cd cython-hidapi

$ python setup-mac.py build
$ python setup-mac.py install
```

- インストール確認

```python:$ python
Python 3.11.9 (main, Apr  2 2024, 08:25:04) [Clang 15.0.0 (clang-1500.3.9.4)] on darwin
Type "help", "copyright", "credits" or "license" for more information.
>>> import hid
>>> hid.__version__
'0.14.0'
```

## 関連記事

https://qiita.com/non0/items/1b6e02e8f8b3f1d36bfb

https://qiita.com/sowd0726/items/80cd26217e724a7a0206

https://qiita.com/mikecat_mixc/items/78f1d186d1f75af8244a