編集履歴一覧に戻る
eepooのアイコン画像

eepoo が 2021年03月06日19時54分40秒 に編集

初版

タイトルの変更

+

シリアルモニター

タグの変更

+

シリアルモニター

+

Serial

+

monitor

+

Arduino_Pro_Mini

+

Arduino

メイン画像の変更

メイン画像が設定されました

記事種類の変更

+

製作品

本文の変更

+

マイコンのシリアル出力をそのまま受け取って表示するハードウェアがあると便利かも、、 と思って作ってみました。 ![外観](https://camo.elchika.com/366140c37de4b4b64e98a6ece93de3b6e982e8a1/687474703a2f2f73746f726167652e676f6f676c65617069732e636f6d2f656c6368696b612f76312f757365722f34383434643937372d666533372d343734362d613535612d6566383862393438646166612f39346632616665662d313933632d343563622d396331642d663537396561303861616361/) ![トップカバーを外した状態](https://camo.elchika.com/4d0b075ca20f7e46a1f293dcff10e0f98d7b8f0e/687474703a2f2f73746f726167652e676f6f676c65617069732e636f6d2f656c6368696b612f76312f757365722f34383434643937372d666533372d343734362d613535612d6566383862393438646166612f34326162393565342d663634342d346234392d393261382d316566353233316264363163/) ![OLED ディスプレイを外した状態](https://camo.elchika.com/e501c877eb0f64fd8d5c5febaa69b1633a914454/687474703a2f2f73746f726167652e676f6f676c65617069732e636f6d2f656c6368696b612f76312f757365722f34383434643937372d666533372d343734362d613535612d6566383862393438646166612f37366533323834622d326265642d343061322d393134652d343863306265366639306137/) 藤色の部品はボトムカバー。pro miniは締結用の穴などないので、ボトムカバーに対しては厚めの両面テープで止めています。 使ったマイコンは Pro mini 168 5V 買ったときには168と328があるとは知らず、適当に買ったら、168で Adafruitのライブラリを使うとメモリが足りず動かなかったので、軽量なライブラリを探し、SSD1306Ascii にしました。 ■パーツリスト pro mini 168 5V ピンソケット SSD1306( OLED 128x64 モノクロ I2C display) タクトスイッチx2 (キャップは適当に) タクトスイッチ用基板(ユニバーサル基板を加工) 筐体 3D CADで設計し 3D printerで出力 ■結線 pro mini SSD1306 A4     SDA A5     SCL VCC      VCC GND    GND タクトスイッチはそれぞれ片方を GNDに 片方を D2,D3に接続。 ピンソケットはDTR,TX,RXなどの方に 6pin のピンソケットを立てる。 ソースは以下の通り ```シリアルモニター bool halt = false; #define HALTPIN 2 #define BRCHANGE 3 unsigned long nextButton = 0; #define CMASK 200 #define LED 13 #define VER 1.0 unsigned long currBR = 9600;//9600を115200をトグル #include <Wire.h> #include "SSD1306Ascii.h" #include "SSD1306AsciiWire.h" #define I2C_ADDRESS 0x3C SSD1306AsciiWire oled; void setup() { Serial.begin(currBR); Wire.begin(); Wire.setClock(400000L); oled.begin(&Adafruit128x64, I2C_ADDRESS); oled.setFont(System5x7); oled.setScrollMode(SCROLL_MODE_AUTO); pinMode(HALTPIN, INPUT_PULLUP); pinMode(BRCHANGE, INPUT_PULLUP); pinMode(LED, OUTPUT); digitalWrite(LED, HIGH); oled.print("Serial Monitor ver:"); oled.println(VER); } void loop() { if (Serial.available() > 0) { // 受信したデータが存在する char aByte = Serial.read(); // 受信データを読み込む if (!halt) { oled.print(aByte); } } if (digitalRead(HALTPIN) == LOW) { if (millis() > nextButton) { halt = ! halt; if (!halt) { digitalWrite(LED, HIGH); } else { digitalWrite(LED, LOW); } nextButton = millis() + CMASK; } } if (digitalRead(BRCHANGE) == LOW) { if (millis() > nextButton) { switch (currBR) { case 9600: currBR = 115200; break; case 115200: currBR = 9600; break; } Serial.end(); oled.print("***** "); oled.println(currBR); Serial.begin(currBR); nextButton = millis() + CMASK; } } } ``` 見てわかる通り、D3に繋いだ方のタクトスイッチを押すことでシリアル通信のスピードを変更します。今回は 9600と115200をトグルするだけにしましたが、容易に増やせますね、、 D2に繋いだボタンを押すと表示更新を止めます。 見たいところで止められる機能というわけです。 わかりやすいところにLEDを引き出しておくべきでしたが、まぁ、スペースもないことで、pro miniの オンボードLEDの光が隙間から見えるので、これでモニター中かストップ中か判別することにします。 接続は GND,VCCと対象のマイコンのTXをこちらのRXに繋ぐだけです。 対象のマイコンが Serialに書き出したものをせっせと表示します。 このライブラリはスクロールモードというのがあって、すごく簡単にスクロールしてくれるので楽でした。 ![実物の稼働状態はこんな感じです。](https://camo.elchika.com/8dfedafdce3554d1fd1a7c1b25093208f81601e5/687474703a2f2f73746f726167652e676f6f676c65617069732e636f6d2f656c6368696b612f76312f757365722f34383434643937372d666533372d343734362d613535612d6566383862393438646166612f66663931633662362d616532612d346465312d383131662d373435393030323231363965/) 3Dプリントの仕上がりが雑で恥ずかしいです。 送信側は Serial.println(millis()); delay(1000); という感じです。 ちなみに、 FTDIボードをこんな風にさしてFWのバージョンアップを行えます。 ![キャプションを入力できます](https://camo.elchika.com/3dff4b9c9a5d57aa5e755026451059c836708489/687474703a2f2f73746f726167652e676f6f676c65617069732e636f6d2f656c6368696b612f76312f757365722f34383434643937372d666533372d343734362d613535612d6566383862393438646166612f39386138393530622d636436302d346233342d383339302d356233363139353136336366/) 最初FTDIボードを裏返しに差し込んで、書き込めないなぁ~ と悩みました。 裏返しに差し込んでも壊れないということがわかりました。