戻る

PCとUSB接続で通信

PC側でターミナルソフトを9600bpsの設定で起動してTinyArcadeと通信する。
今回はRloginというターミナルソフトを使用した。
http://nanno.dip.jp/
設定は以下の通り。私の環境ではSocketPortはCOM6だったが環境によって違うため適当に合わせる必要がある。

Rlogin1.jpg

プログラム側ではUSBDeviceを初期化してSerialUSBを9600bpsに設定。
SerialUSB.read()でPCからデータを受け取りSerialUSB.writeでPCにデータを送っている 。
ちょっと試してみた結果115200bps、912600bpsに設定しても通信できた。
大量に送って文字化けするかなど検証していない。

サンプルプログラム

#include <stdlib.h>
#include <TinyScreen.h>

static const int BUTTON_LEFT_PIN = 45;
static const int BUTTON_RIGHT_PIN = 44;

TinyScreen tiny_screen = TinyScreen(TinyScreenPlus);

void setup()
{
	// Initialize serial
	USBDevice.init();
	USBDevice.attach();
	SerialUSB.begin(9600);
	// Initialize screen
	tiny_screen.begin();
	tiny_screen.setBitDepth(TSBitDepth8);
	tiny_screen.setBrightness(8);
	tiny_screen.setFont(liberationSansNarrow_12ptFontInfo);
	tiny_screen.fontColor(TS_8b_White, TS_8b_Black);
	// Initialize button
	pinMode(BUTTON_LEFT_PIN, INPUT_PULLUP);
	pinMode(BUTTON_RIGHT_PIN, INPUT_PULLUP);
}

void loop()
{
	String cmd = "";
	while(SerialUSB.available() > 0)
	{
		cmd += static_cast<char>(SerialUSB.read());
	}
	if(!digitalRead(BUTTON_LEFT_PIN))
	{
		SerialUSB.write("push 1 button.");
	}
	if(!digitalRead(BUTTON_RIGHT_PIN))
	{
		SerialUSB.write("push 2 button.");
	}
	tiny_screen.setCursor(0,0);
	tiny_screen.print(cmd);
}

実行結果

SerialSample.jpg

PCで押した文字が表示される。画面はPC側でdを押した画面。

Rlogin2.jpg

TinyArcadeでボタン2を押した時のPC側のターミナルソフトの画面。

サンプルプログラムのダウンロード


添付ファイル: fileRlogin2.jpg 113件 [詳細] fileRlogin1.jpg 115件 [詳細] fileSerialSample.jpg 112件 [詳細] fileSerialSample.zip 103件 [詳細]

トップ   編集 凍結 差分 バックアップ 添付 複製 名前変更 リロード   新規 一覧 単語検索 最終更新   ヘルプ   最終更新のRSS
Last-modified: 2017-01-30 (月) 01:59:33 (537d)