注釈
こんにちは、SunFounderのRaspberry Pi & Arduino & ESP32愛好家コミュニティへようこそ!Facebook上でRaspberry Pi、Arduino、ESP32についてもっと深く掘り下げ、他の愛好家と交流しましょう。
参加する理由は?
エキスパートサポート:コミュニティやチームの助けを借りて、販売後の問題や技術的な課題を解決します。
学び&共有:ヒントやチュートリアルを交換してスキルを向上させましょう。
独占的なプレビュー:新製品の発表や先行プレビューに早期アクセスしましょう。
特別割引:最新製品の独占割引をお楽しみください。
祭りのプロモーションとギフト:ギフトや祝日のプロモーションに参加しましょう。
👉 私たちと一緒に探索し、創造する準備はできていますか?[ここ]をクリックして今すぐ参加しましょう!
ポテンショメータのスケール値
このプロジェクトは、ポテンショメータから値を読み取り、I2Cインターフェースを持つLCD 1620にその読み取り値を表示するように設計されています。また、シリアルモニタにも値がリアルタイムで送信されます。このプロジェクトのユニークな特長は、LCD上でポテンショメータの値を視覚的に表現し、その値に応じて長さが変わるバーを表示する点です。
1. 回路の組み立て
2. コード
ultimate-sensor-kit\fun_project\10-Potentiometer_scale_valueパスの下にある10-Potentiometer_scale_value.inoファイルを開くか、このコードを Arduino IDE にコピーします。
3. コードの説明
このプロジェクトは、接続されたポテンショメータから値を連続的に読み取ります。この値は小さいスケール(0-16)にマッピングされ、LCD上で数値と視覚的にも表示されます。連続した読み取りの差を確認することで、表示上に重要な変化だけが反映され、ジッターが低減されます。ジッターを低減することで、LCD画面の頻繁なリフレッシュによる望ましくない視覚効果を防ぎます。
ライブラリのインクルードと初期化:
#include <Wire.h> #include <LiquidCrystal_I2C.h> LiquidCrystal_I2C lcd(0x27, 16, 2);
ここでは、必要なライブラリ(I2C通信の
WireとLCD用のLiquidCrystal_I2C)がインクルードされています。I2Cアドレス0x27を持つLCDオブジェクトが作成され、16列と2行で定義されています。変数宣言:
int lastRead = 0; // 前回のポテンショメータの値 int currentRead = 0; // 現在のポテンショメータの値
lastReadは前回読み取ったポテンショメータの値を格納します。currentReadはポテンショメータからの現在の読み取りを格納するために使用されます。setup()関数:
void setup() { lcd.init(); // LCDの初期化 lcd.backlight(); // LCDのバックライトをオンにする Serial.begin(9600); // 9600ボーのレートでシリアル通信を開始 }
LCDが初期化され、そのバックライトが点灯し、9600ボーのレートでシリアル通信が開始されます。
メインループ:
void loop() { int currentRead = analogRead(A0); int barLength = map(currentRead, 0, 1023, 0, 16); if (abs(lastRead - currentRead) > 2) { lcd.clear(); lcd.setCursor(0, 0); lcd.print("Value:"); lcd.setCursor(7, 0); lcd.print(currentRead); Serial.println(currentRead); for (int i = 0; i < barLength; i++) { lcd.setCursor(i, 1); lcd.print(char(255)); } } lastRead = currentRead; delay(200); }
ポテンショメータの値が読み取られ、バーの長さ(0-16)にマッピングされます。
最後の読み取りと現在の読み取りとの差が
2以上ならば、LCDが更新されます。値が第一行に、マッピングされた値に基づいたバーが第二行に表示されます。
その値はまたシリアルモニタにも送信されます。
次の反復の前に、
lastReadが更新され、安定性のために200msの遅延が導入されます。