マイコンのシリアル出力をそのまま受け取って表示するハードウェアがあると便利かも、、 と思って作ってみました。
藤色の部品はボトムカバー。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に書き出したものをせっせと表示します。
このライブラリはスクロールモードというのがあって、すごく簡単にスクロールしてくれるので楽でした。
3Dプリントの仕上がりが雑で恥ずかしいです。
送信側は
Serial.println(millis());
delay(1000);
という感じです。
ちなみに、 FTDIボードをこんな風にさしてFWのバージョンアップを行えます。
最初FTDIボードを裏返しに差し込んで、書き込めないなぁ~ と悩みました。
裏返しに差し込んでも壊れないということがわかりました。
投稿者の人気記事
-
eepoo
さんが
2021/03/06
に
編集
をしました。
(メッセージ: 初版)
ログインしてコメントを投稿する