Arduino Unoのシールド基板で、アナログセンサのデバッガーを作ってみた

はじめに
アナログセンサのデバッガーを、Arduinoシールドで作ってみました。analogRead値をOLEDに表示しているだけでですが、シリアルモニターで確認する手間が省けてだいぶラクになりましたのでその作り方をご紹介いたします。ここで言うデバッガーとは、プログラミングでよく使う機能と同様で、センサが壊れていないかどうかを動作チェックするツールになります。
ゴール(完成イメージ)
アナログセンサデバッガーの完成イメージがこちらの動画になります。動画では、可変抵抗や土壌センサを接続して、ArduinoのADC(ADコンバータ)の値をOLEDに表示している様子を下記のリンクからショート動画でご覧いただけます。Arduino UnoのADCの分解能は10bitですので、0〜1023までの値を取ります。
https://www.youtube.com/shorts/KdyDYoDHnXA
アナログセンサデバッガーのシールド基板制作
次の図のように、Arduino
UnoとOLEDを配線します。OLEDの電源はArduinoの5Vに繋ぎます。また、OLEDのSCLとSDA端子をArduinoのSCLとSDA端子に接続します。
もちろん可変抵抗はさまざまなアナログセンサに置き換わるため、シールド基板への半田付けは行いません。その代わり写真のように、メスのピン端子を設置しておきました。端子のそばから配線が伸びてますが気にしないでください。オレオレ規格のアナログセンサ端子をつなげるようにした線ですので。
アナログセンサデバッガーのプログラミング
U8g2ライブラリのインストール(OLED SSD1306用)
Arduino
IDEのライブラリマネージャーから「u8g2」の単語で検索し、次の写真の通りoliver氏によってリリースされているライブラリをインストールします。
このU8g2ライブラリは、SSD1306のチップが搭載されたOLEDに文字の表示を簡単にできるようにしてくれるライブラリです。I2C通信の難しい知識は必要なく、数行で文字表示ができるので大変便利です。 Githubリポジトリ にサンプル例がたくさん掲載されてますので目を通しておくと良いです。
スケッチ(ソースコード)
アナログセンサデバッガーのスケッチは次の通りです。
/**
* @file AnalogSensorDebugger.ino
* @author Toshihiko Arai
* @brief Dispaly adc value to OLED.
* @version 1.0
* @date 2022-11-08
*
* @copyright Copyright (c) https://101010.fun 2022
*
*/
#include <U8g2lib.h>
#define SENSOR_PIN A0
(U8G2_R0, /* reset=*/U8X8_PIN_NONE);
U8G2_SSD1306_128X32_UNIVISION_F_HW_I2C u8g2
void setup(void) {
(SENSOR_PIN, INPUT);
pinMode
.begin();
u8g2.clearBuffer();
u8g2.setFont(u8g2_font_8x13_tf);
u8g2.drawStr(0, 10, "Analog Sensor");
u8g2.drawStr(0, 23, "Debugger");
u8g2.sendBuffer();
u8g2(3000);
delay}
void loop(void) {
int val = analogRead(SENSOR_PIN);
char buf[10];
(buf, 10, "%d", val);
snprintf
.clearBuffer();
u8g2
.setFont(u8g2_font_8x13_tf);
u8g2.drawStr(0, 10, "ADC value:");
u8g2.drawStr(0, 23, buf);
u8g2// u8g2.setFont(u8g2_font_fub35_tf);
// u8g2.drawStr(0, 35, "199.9");
.sendBuffer();
u8g2(100);
delay}
128x32のディスプレイなので
U8G2_SSD1306_128X32_UNIVISION_F_HW_I2C
を宣言してますが、ディスプレイサイズが違う場合はそれに合わせて変更する必要がありますのでご注意ください。drawStr
関数が文字列で指定する必要があるため、int型を
snprintf
でchar型に変換してます。
関連記事
- 【Arduino】OLEDに文字表示【Seeeduino】
- 【Arduino】MAX30100で心拍数と血中酸素濃度の測定【パルスオキシメーター】
- 静電容量型の土壌湿度センサを使ってArduinoで土の水分量測定
- DS18B20の使い方|Arduino・ESP32・Raspberry Pi
- ArduinoでC++で作った自作ライブラリを使う方法