【Arduino】168种传感器模块系列实验(资料代码+仿真编程+图形编程)
实验一百八十三:GY-530 VL53L0X 激光测距 ToF测距 飞行时间测距传感器模块 IIC通信协议
项目之八:使用 VL53L0X 进行范围测量并在 SSD1306 OLED 上显示(mm)
实验开源代码
- /*
- 【Arduino】168种传感器模块系列实验(资料代码+仿真编程+图形编程)
- 实验一百八十三:GY-530 VL53L0X 激光测距 ToF测距 飞行时间测距传感器模块 IIC通信协议
- 项目之八:使用 VL53L0X 进行范围测量并在 SSD1306 OLED 上显示(mm)
- 模块接线:SSD1306 OLED模块相同
- VL53L0X Arduino
- VCC 5V
- GND GND
- SCL A5
- SDA A4
- */
-
- #include <Wire.h>
- #include "Adafruit_VL53L0X.h"
- #include <SPI.h>
- #include <Adafruit_GFX.h>
- #include <Adafruit_SSD1306.h>
-
- Adafruit_SSD1306 display = Adafruit_SSD1306();
-
- Adafruit_VL53L0X lox = Adafruit_VL53L0X();
-
- #if (SSD1306_LCDHEIGHT != 32)
- #error("Height incorrect, please fix Adafruit_SSD1306.h!");
- #endif
-
- void setup() {
- Serial.begin(9600);
-
- display.begin(SSD1306_SWITCHCAPVCC, 0x3C); // initialize with the I2C addr 0x3C (for the 128x64)
- // init done
- display.display();
- delay(1000);
-
-
- Wire.begin();
-
- if (!lox.begin()) {
- Serial.println(F("Failed to boot VL53L0X"));
- while (1);
- }
-
- // text display big!
- display.setTextSize(4);
- display.setTextColor(WHITE);
- }
-
- void loop() {
- VL53L0X_RangingMeasurementData_t measure;
-
- lox.rangingTest(&measure, false); // pass in 'true' to get debug data printout!
-
- if (measure.RangeStatus != 4) { // phase failures have incorrect data
- display.clearDisplay();
- display.setCursor(0, 0);
- display.print(measure.RangeMilliMeter);
- display.print("mm");
- display.display();
- Serial.println();
- delay(50);
- } else {
- display.display();
- display.clearDisplay();
- return;
- }
- }
复制代码
|