Raspberry Pi Picoの動作確認 (MicroPython、CircuitPython版) (※随時更新)

# はじめに

Raspberry Pi Picoの動作確認のためMicroPython、CircuitPythonでいくつか試してみた。

## バージョン
MicroPython
rp2-pico-20210205-unstable-v1.14-8-g1f800cac3.uf2

CircuitPython
adafruit-circuitpython-raspberry_pi_pico-en_US-6.2.0-beta.1.uf2

## Lチカ
オンボードのLED(GP25)ではなく、GPIO(GP2)を使用して外付けLEDを試してみました。

![EteEM4hUUAA6i1r.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/72479/3312046a-3eab-3a25-bb84-0b38093f48af.jpeg)

ソースコードはこちら。
(MicroPython用)

https://github.com/kitazaki/raspberry_pi_pico/blob/main/sample/micropython/led01.py

## リセットボタン
Micro USBケーブルの抜き差しが不要になります。

![EtijfFeVcAUa32v.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/72479/12837740-0180-4637-6d52-6e8c5e5ce77b.jpeg)

## I2C

### SSD1306
I2C接続の単色有機ELディスプレイ(OLED)を試してみました。
![IMG_7148.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/72479/061a1b3f-003a-d682-bc69-009aeaa5d8bc.png)

ソースコードはこちら。
(MicroPython用)

https://github.com/kitazaki/raspberry_pi_pico/blob/main/sample/micropython/ssd1306.py

https://github.com/kitazaki/raspberry_pi_pico/blob/main/sample/micropython/ssd1306_test01.py

(CircuitPython用)

https://github.com/kitazaki/raspberry_pi_pico/blob/main/sample/circuitpython/ssd1306_simpletest.py

https://github.com/kitazaki/raspberry_pi_pico/blob/main/sample/circuitpython/ssd1306_framebuftest.py

https://github.com/kitazaki/raspberry_pi_pico/blob/main/sample/circuitpython/font5x8.bin

### ノラLEDバッジ (HT16K33)
HT16K33を2個使用して、8x8 LED Matrixを4個制御しているノラLEDバッジを試してみました。
![EtgabhvVIAEXmBv.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/72479/f427c4f0-c5fd-c713-6a66-c1ca67fbc152.jpeg)

ソースコードはこちら。
(MicroPython用)

https://github.com/kitazaki/raspberry_pi_pico/blob/main/sample/micropython/nora_led_badge01.py

https://github.com/kitazaki/raspberry_pi_pico/blob/main/sample/micropython/ht16k33_matrix.py

## USB MIDI
USB MIDIデバイス化を試してみました。GPIO(GP28)が押された場合にMIDI信号(NOTE ON)を送信して、macOSのGarageBandで音を鳴らしてみました。
![Et7ZWjtU0AEQMMJ.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/72479/5bb74e0f-3124-2fc5-a9a4-66f8f59477fb.jpeg)

ソースコードはこちら。
(CircuitPython用)

https://github.com/kitazaki/raspberry_pi_pico/blob/main/sample/circuitpython/midi.py

## PIO
NeoPixel(WS2812B)をPIO(Programmable I/O)を使用して光らせてみました。
![ws2812.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/72479/7a4bf535-cdba-251d-43ae-e34b87f0a85f.png)

ソースコードはこちら。
(MicroPython用)

https://github.com/kitazaki/raspberry_pi_pico/blob/main/sample/micropython/pio_ws2812.py

adafruitのneopixel.mpyライブラリを使用した例。

https://learn.adafruit.com/getting-started-with-raspberry-pi-pico-circuitpython/neopixel-leds

![neopixel.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/72479/513ade1f-5fda-e492-fec6-1e950ec05329.png)

ソースコードはこちら。
(CircuitPython用)

https://github.com/kitazaki/raspberry_pi_pico/blob/main/sample/circuitpython/neopixel_test.py

## USB HID
adafruitのUSB HIDライブラリを使用してキーボードとマウスの操作を試してみました。
Adafruit_CircuitPython_HID ライブラリをダウンロードし、CircuitPythonのライブラリに追加します。
「Adafruit_CircuitPython_HID-master\adafruit_hid」フォルダをラズパイPicoの「lib」フォルダにコピーします。

https://github.com/adafruit/Adafruit_CircuitPython_HID

(参考)

https://krr910183393.wordpress.com/2021/02/25/raspberry-pi-pico-%E3%81%A7-micropython-%E3%81%9D%E3%81%AE7-circuitpython-%E3%81%A7hid-%E3%83%9E%E3%82%A6%E3%82%B9/

### キーボード
GPIO(GP28)が押された場合に「スペース」キーを送信するサンプルです。
![IMG_9647.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/72479/42d5fa7d-9310-a001-206e-563477ece6a2.jpeg)
![keyboard.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/72479/510cee9b-73dd-5f72-5ca8-3ef8300146b1.jpeg)

ソースコードはこちら。
(CircuitPython用)

https://github.com/kitazaki/raspberry_pi_pico/blob/main/sample/circuitpython/keyboard.py

### マウス
一定間隔、一定距離でマウスを移動させるサンプルです。Mouse Jiggler、Mouse Mover、スクリーンセーバーキラーと呼ばれる場合もあります。
![mouse.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/72479/c5c7bd11-2858-d02f-9f11-a03dd1c14191.jpeg)

ソースコードはこちら。
(CircuitPython用)

https://github.com/kitazaki/raspberry_pi_pico/blob/main/sample/circuitpython/mouse.py