Arduino Nanoとロータリーエンコーダーで作る高精度測定ホイール
必要な部品と用品
| Arduino Nano R3 | ×1 |
| 16×2キャラクタLCD(白文字/青背景) | ×1 |
| ロータリーエンコーダー(プッシュボタン付き) | ×1 |
| ポテンショメーター 10kΩ | ×1 |
| 抵抗 220Ω | ×1 |
必要な工具
- はんだごて
使用アプリ
- Arduino IDE
プロジェクト概要
測定ホイールは建設現場で使われる距離測定ツールです。ホイールの回転角から移動距離を求めます(s = rθ)。

動作原理:
- ロータリーエンコーダーで回転ステップ数を計測
- 1回転あたりのステップ数N(エンコーダー仕様により8〜48ステップ)
- ホイール半径R
- 1回転の移動距離 = 2πR
- 1ステップの移動距離 = 2πR/N
これらをコード内の定数NとRに設定し、移動距離をcm単位でLCDに表示します。ホイールは3Dプリント製、アルミニウムロッドに取り付けています。
スケッチ(コード)
/* Measuring Wheel
* by Mirko Pavleski
* https://www.youtube.com/channel/UCHLzc76TZel_vCTy0Znvqyw
*/
#include <LiquidCrystal.h>
LiquidCrystal lcd(5, 6, 7, 8, 9, 10);
int pin1 = 2;
int pin2 = 3;
int Pos = 0;
int State;
int LastState;
const float pi = 3.14;
const float R = 3.25; // ホイール半径 cm
const int N = 40; // 1回転あたりのステップ数
float distance = 0;
void setup() {
pinMode(pin1, INPUT_PULLUP);
pinMode(pin2, INPUT_PULLUP);
lcd.begin(16, 2);
lcd.print("MEASURING WHEEL");
LastState = digitalRead(pin1);
}
void loop() {
State = digitalRead(pin1);
if (State != LastState) {
if (digitalRead(pin2) != State) Pos++;
else Pos--;
}
distance = ((2 * pi * R) / N) * Pos;
lcd.setCursor(0, 1);
lcd.print(distance);
lcd.setCursor(5, 1);
lcd.print("cm ");
LastState = State;
}
回路図
製造プロセス
- Arduinoで作るレトロNumitron管時計:シンプル、信頼性高く、省エネ
- Arduino NanoとMPU-6050で作るリアルタイムジャイロスコープゲーム
- Arduinoでシンプルな障害物センサーを自作 – IR LEDとフォトダイオード入門
- ArduinoとNokia 5110ディスプレイで自作電圧計:ステップバイステップガイド
- MobBob:Arduino製ロボットをAndroidスマホでシームレスに制御
- Arduino、Yaler、IFTTTでWeb対応IoTゲージを構築する
- Arduino Nanoで作る高周波対応周波数カウンター – 6.5MHzまで測定可能
- シャープGP2Y1010AU0Fセンサーで作る高精度空気質モニター
- Arduino Nanoで作る携帯型ガイガーカウンター
- Arduino UNOとEthernetシールドで太陽放射を測定する自作ピラノメーター
- DS1302 RTCとArduino UNOで作る信頼性の高い目覚まし時計