Note
こんにちは、SunFounderのRaspberry Pi & Arduino & ESP32愛好家コミュニティへようこそ!Facebook上でRaspberry Pi、Arduino、ESP32についてもっと深く掘り下げ、他の愛好家と交流しましょう。
参加する理由は?
- エキスパートサポート:コミュニティやチームの助けを借りて、販売後の問題や技術的な課題を解決します。
- 学び&共有:ヒントやチュートリアルを交換してスキルを向上させましょう。
- 独占的なプレビュー:新製品の発表や先行プレビューに早期アクセスしましょう。
- 特別割引:最新製品の独占割引をお楽しみください。
- 祭りのプロモーションとギフト:ギフトや祝日のプロモーションに参加しましょう。
👉 私たちと一緒に探索し、創造する準備はできていますか?[|link_sf_facebook|]をクリックして今すぐ参加しましょう!
このプロジェクトは、VL53L0X 時間飛行(ToF)マイクロLIDAR距離センサーを使用して、対象物までの距離を測定し、OLEDスクリーンに表示します。測定された距離(ミリメートル単位)はシリアルモニターにも出力されます。VL53L0Xはおおよそ50mmから1200mmの範囲を測定できます。
ultimate-sensor-kit\fun_project\09-ToF_distance_monitor
のパス内の09-ToF_distance_monitor.ino
ファイルを開くか、このコードを Arduino IDE にコピーします。Note
ライブラリのインストールには、Arduinoライブラリマネージャで 「Adafruit_VL53L0X」 を検索してインストールします。
本プロジェクトでは、VL53L0X Time of Flight(ToF)センサーを用いて、光が対象物まで到達して戻ってくるまでの時間を測定し、距離を計算します。測定した距離はミリメートル単位でOLEDディスプレイに表示されます。シリアル通信も利用して、測定値をモニタリングやデバッグのために出力します。OLEDディスプレイとVL53L0Xセンサーは、共にArduinoとI2Cプロトコルで通信します。
必要なライブラリをインクルードし、コンポーネントを初期化
Note
ライブラリのインストールには、Arduinoライブラリマネージャで 「Adafruit_VL53L0X」 を検索してインストールします。
#include <Wire.h> #include "Adafruit_VL53L0X.h" #include <SPI.h> #include <Adafruit_GFX.h> #include <Adafruit_SSD1306.h> // Initialize the OLED display module with a resolution of 128x64 Adafruit_SSD1306 display = Adafruit_SSD1306(128, 64, &Wire, -1); // Initialize the VL53L0X distance sensor Adafruit_VL53L0X lox = Adafruit_VL53L0X();
- I2C通信、距離センサー、SPIプロトコル、OLEDディスプレイを操作するための必要なライブラリがインクルードされています。
- OLEDディスプレイとVL53L0X距離センサーが初期化されています。
シリアル通信を初期化し、ディスプレイとVL53L0X距離センサーを準備
void setup() { Serial.begin(9600); // Start the OLED display with I2C address 0x3C display.begin(SSD1306_SWITCHCAPVCC, 0x3C); display.display(); delay(1000); // Begin I2C communication Wire.begin(); // Start the VL53L0X distance sensor, halt if initialization fails if (!lox.begin()) { Serial.println(F("Failed to boot VL53L0X")); while (1) ; } // Set OLED display text size and color display.setTextSize(3); display.setTextColor(WHITE); }
- 9600ボーのシリアル通信を開始。
- OLEDディスプレイをそのI2Cアドレスで初期化。
- I2C通信を開始。
- VL53L0X距離センサーが正しく初期化されたか確認。もし初期化に失敗した場合、エラーメッセージを表示してArduinoは無限ループに入ります。
- OLEDディスプレイのテキストサイズと色を設定。
主なループ():距離を測定し、結果を表示
void loop() { VL53L0X_RangingMeasurementData_t measure; lox.rangingTest(&measure, false); // pass in 'true' to get debug data printout // If there are no phase failures, display the measured distance if (measure.RangeStatus != 4) { display.clearDisplay(); display.setCursor(12, 22); display.print(measure.RangeMilliMeter); display.print("mm"); display.display(); Serial.println(); delay(50); } else { display.display(); display.clearDisplay(); return; } }
- 測定データを格納する変数を作成。
- VL53L0Xセンサーを使用して測定を実行。
- 測定が有効であるか(すなわち、フェーズ失敗がないか)を確認。
- 測定が有効な場合、OLEDディスプレイをクリアし、カーソルの位置を設定して、測定された距離を表示。
- それ以外の場合、ディスプレイをリフレッシュし、次の読み取りのためにクリアします。