Arduboyの画面をキャプチャする
Arduboyの画面キャプチャの方法を試したところ、環境の違いで動かなかった。
community.arduboy.com
私の環境、mac、Python 3.6で動かした手順を書いておこう。
1. macとArduboyをUSBで接続し、Arduboyの電源をONする。
2. macのターミナルから次のコマンドを叩き、端末名をメモする。
ls /dev/tty.usb*
私の環境では「/dev/tty.usbmodem1421」と表示された。
# -*- coding: utf-8 -*- from PIL import Image import serial fnum = 0 while True: # ls /dev/tty.usb*で表示された端末名を書く with serial.Serial('/dev/tty.usbmodem1421', 9600) as ser: data = ser.read(int(128*64/8)) img = Image.new('RGB', (128, 64)) idx = 0 for y in range(0, 8): for x in range(0, 128): for i in range(0, 8): if data[idx] & (1 << i): img.putpixel((x, y * 8 + i), (255, 255, 255)) idx += 1 fname = '{:0>3}'.format(fnum) + '.png' fnum += 1 print('saving... ' + fname) img.save(fname)
4. Arduboyで次のコードを実行する。
#include <Arduboy2.h> Arduboy2 arduboy; void setup() { // シリアル通信の設定 Serial.begin(9600); arduboy.begin(); arduboy.setFrameRate(60); arduboy.clear(); } void loop() { if (!arduboy.nextFrame()) return; arduboy.pollButtons(); arduboy.clear(); static int cnt = 0; arduboy.print(cnt++); arduboy.drawTriangle(10, 20, 30, 10, 20, 40, WHITE); arduboy.display(); if (arduboy.justPressed(A_BUTTON)) { // Aボタンが押されたら画面キャプチャをシリアル通信で送る Serial.write(arduboy.getBuffer(), 128 * 64 / 8); } }
5. ArduboyのAボタンを押下すると画面キャプチャ画像がmacに保存される。