Search Code

Ẹkọ 78: Fi ijinna lati VL53L0X han lori LCD | Ẹkọ Arduino Lílo Lílo Lílo

Ẹkọ 78: Fi ijinna lati VL53L0X han lori LCD | Ẹkọ Arduino Lílo Lílo Lílo

Ìtọ́sọ́nà yìí ṣàfihàn bí a ṣe le kọ́ mita ìwọ̀n jìnnà láṣeré pẹ̀lú ẹ̀rọ VL53L0X time-of-flight àti àfihàn LCD 16x2 pẹ̀lú module I2C. Iṣẹ́-ọwọ́ yìí pípé fún àwọn tí ń ṣe ẹ̀rọ tí wọ́n fẹ́ fi ìwọ̀n jìnnà tí kò ní ìfọwọ́kan kún àwọn ohun tí wọ́n ń ṣe. VL53L0X ń lo láṣer láti wọn jìnnà, tí ó sì dára fún àwọn ibi tí ultrasonic sensors lè ní ìṣòro, bíi wíwọn ipele oúnjẹ inú àgbàlá tàbí ṣíṣàwárí ipò pípé ohun kan lórí conveyor belt.

Àwọn ọ̀nà díẹ̀ tí o lè lo iṣẹ́-ọwọ́ yìí:

  • Àmúṣọ̀n Oúnjẹ Ọ̀sìn: Wọn ipele oúnjẹ inú àpótí láti mú kí ó tún kún tàbí fi ìròyìn ránṣẹ́.
  • Àpòtí Ìdọ̀tí Ọlọ́gbọ́n: Mọ̀ bí àpòtí ti kún tó kí o sì fi ìkìlọ̀ ránṣẹ́ nígbà tí ó bá yẹ kí a dá a nù.
  • Ẹ̀rọ Ìwọ̀n Gíga Ti Ara: Ṣẹ̀dá ohun èlò ìwọ̀n pípé fún àwọn ohun kékeré tàbí láti tọ̀pasẹ̀ ìdàgbà ọmọ.
  • Olùrànlọ́wọ́ Ìpakọ̀: Kọ́ ètò sensor láti ràn lọ́wọ́ ní pípa ọkọ̀ sí ibi pípé nínú gareji tàbí ààyè tó ró.
  • Robotics: Lo ó nínú robot láti mọ̀ àwọn ohun tó dúró níwájú tàbí láti wọn jìnnà sí ògiri fún ìṣàkóso ìrìn.
VL53L0x_pin_round_module

Àwọn Ohun Èlò Tí A Nílò

  • Arduino Board (bíi Uno)
  • VL53L0X Laser Distance Sensor
  • LCD 1602 Display pẹ̀lú I2C Module
  • Jumper Wires

Ìtọ́sọ́nà Ìsopọ̀

Ìsopọ̀ fún iṣẹ́-ọwọ́ yìí rọrùn, ọpẹ́ sí ìlànà I2C, tí ó jẹ́ kí LCD àti sensor bá ara wọn sọ̀rọ̀ lórí okùn méjì kan náà. VL53L0X sensor nílò agbára 5V, tí a ń gbà tààrà láti 5V pin ti Arduino. Láti rí i dájú pé sensor ní orísun agbára tó dúró ṣinṣin, a ń lo pin àfikún kan gẹ́gẹ́ bí VCC kejì. (nínú fídíò ní 00:27)

VL53L0X_LCD1602_wiring-3
VL53L0X_LCD1602_wiring-2
VL53L0X_LCD1602_wiring-1
VL53L0X_LCD1602_wiring-4

Èyí ni àwòrán ìsopọ̀:

Arduino wiring for VL53L0X and LCD1602 I2C (4 wires LCD)

Àwọn ìsopọ̀ nìwọ̀nyí:

  • VL53L0X VCC -> Arduino 5V àti Pin 13 (A ṣeto Pin 13 gẹ́gẹ́ bí ìjàde oní nọ́ńbà láti pèsè ìdúróṣinṣin agbára àfikún).
  • VL53L0X GND -> Arduino GND.
  • VL53L0X SCL -> Arduino SCL (A5).
  • VL53L0X SDA -> Arduino SDA (A4).
  • LCD I2C VCC -> Arduino 5V.
  • LCD I2C GND -> Arduino GND.
  • LCD I2C SCL -> Arduino SCL (A5).
  • LCD I2C SDA -> Arduino SDA (A4).

Bí o bá ń lo irúfẹ́ Arduino mìíràn, àwọn pin I2C lè wà ní ibòmíràn. Àwọn pin SDA àti SCL ni a sábà máa ń kọ sí ara bọọdù. (nínú fídíò ní 02:42)

Àlàyé Kóòdù

A ṣe kóòdù náà láti rọrùn láti ṣètò. Àwọn apá tí olùṣàmúlò lè yí padà wà ní òkè pàtàkì sketch. (nínú fídíò ní 04:18)

Ìkọ́kọ́, a ṣàlàyé nọ́ńbà kan fún pin agbára àfikún. A ń lo èyí láti pèsè 5V tó mọ́ fún sensor.

const int vcc2 = 13; // Pin VCC àfikún fún sensor VL53L0X

Lẹ́yìn náà, a ṣẹ̀dá àpẹẹrẹ kan ti ìkàwé LCD àti ṣàlàyé àdírẹ́ẹ̀sì I2C rẹ̀. O lè rí àdírẹ́ẹ̀sì yìí nípa ṣíṣe I2C scanner sketch, gẹ́gẹ́ bí a ṣe fi hàn nínú fídíò. (nínú fídíò ní 03:26)

LiquidCrystal_I2C lcd(0x3F, 16, 2); // Ṣeto àdírẹ́ẹ̀sì LCD sí 0x3F fún àfihàn 16 ọ̀rọ̀ àti 2 ìlà

Níkẹyìn, ó wà onírúiyípò kan tí ó ń ṣàkóso ẹ̀yà ìwọ̀n. O lè yí iye yìí padà láti fi hàn jìnnà ní millimeters tàbí centimeters.

const int type = 1; // Ṣeto sí 1 fún millimeter, 2 fún centimeter

Nínú iṣẹ́ setup(), a ṣètò pin VCC àfikún gẹ́gẹ́ bí ìjàde àti ṣeto sí HIGH láti pèsè agbára fún sensor. Lẹ́yìn náà, a bẹ̀rẹ̀ LCD.

Ìṣe pàtàkì nínú iṣẹ́ loop() ń ka jìnnà láti ọ̀dọ̀ sensor, pa LCD mọ́, àti tẹ̀ iye náà jáde pẹ̀lú ẹ̀yà. Nígbà tí type bá ṣeto sí 2, a yí jìnnà padà láti millimeters sí iye float ní centimeters fún ìwọ̀n tó ní ìpéye púpọ̀. (nínú fídíò ní 06:47)

Ìṣàfihàn Iṣẹ́-ọwọ́ Láàyè

Nínú ìṣàfihàn, a dán sensor wò lòdì sí òṣùwọ̀n láti rí i dájú pé ó tọ̀nà. Fídíò fi hàn pé sensor ń pèsè ìwọ̀n tó ní ìpéye púpọ̀, pẹ̀lú ìyàtọ̀ díẹ̀ nínú millimeters. (nínú fídíò ní 08:32)

Ó ṣe pàtàkì láti kíyèsi pé sensor ní ìwọ̀n tó pọ̀ jùlọ ní nǹkan bí 1.2 mita ní ìṣe ìwọ̀n tó ń lọ lọ́wọ́. Nígbà tí ohun tí a ń wọn bá kọjá ìwọ̀n yẹn, àfihàn yóò fi iye 8190 hàn. (nínú fídíò ní 09:53)

Àkíyèsí pàtàkì mìíràn ni pé sẹ́ǹsà náà lè fúnni ní àwọn ìwọ̀n tí kò péye lórí àwọn ojú tí ń tàn yàngàn. Fífi sí ohun tí ń tàn lè fa àwọn àṣìṣe ńláǹlà, nígbà tí fífi sí ojú tí kò tàn yóò fúnni ní àwọn èsì tí ó péye. (nínú fídíò ní 10:42)

Kóòdù náà tún bá àwọn oríṣi VL53L0X module mìíràn àti àwọn LCD tí ó tóbi, bíi 2004 model, mu láìsí àyípadà kankan sí ìsopọ̀. (nínú fídíò ní 11:30)

Àwọn Abala Fídíò

  • [00:05] Ìfihàn sí VL53L0X àti LCD iṣẹ́-ìdánilẹ́kọ̀ọ́
  • [00:27] Àwòrán ìsopọ̀ fún VL53L0X àti LCD
  • [02:51] Ìsopọ̀ aláyàwòrán lórí Arduino board gidi
  • [03:26] Ṣíṣe àwárí àwọn àdírẹ́sì I2C
  • [04:18] Àlàyé kóòdù àti ìtòlẹ́tà
  • [08:32] Ìfihàn ààyè gidi ti wíwọ̀n ìjìn
  • [09:53] Ìdánwò ìwọ̀n àti àwọn àìlópin sẹ́ǹsà
  • [10:42] Ìpéye lórí àwọn ojú oríṣiríṣi
  • [11:30] Ìdánwò pẹ̀lú sẹ́ǹsà module mìíràn àti LCD tí ó tóbi

Aworan

VL53L0X 200cm range sensor-black
VL53L0X 200cm range sensor-black
VL53L0X 200cm range sensor-blue
VL53L0X 200cm range sensor-blue
LCD1602-I2C display module with 4 wires
LCD1602-I2C display module with 4 wires
Arduino wiring for VL53L0X and LCD1602 I2C (4 wires LCD)
Arduino wiring for VL53L0X and LCD1602 I2C (4 wires LCD)
VL53L0x_pin_module
VL53L0x_pin_module
VL53L0x_pin_round_module
VL53L0x_pin_round_module
VL53L0X_LCD1602_wiring-4
VL53L0X_LCD1602_wiring-4
VL53L0X_LCD1602_wiring-1
VL53L0X_LCD1602_wiring-1
VL53L0X_LCD1602_wiring-2
VL53L0X_LCD1602_wiring-2
VL53L0X_LCD1602_wiring-3
VL53L0X_LCD1602_wiring-3
641-Lesson 78: Using a VL53L0X Laser Distance Sensor with an LCD1602 or LCD2004 Display and Arduino
Ede: C++
/*
* Lesson 76-1: Using One single VL6180 Laser Distance Sensor with Arduino 
 * Adafruit code modified for this tutorial
 * by Ahmad Shamshiri at 22:22 on 
 * March 10-11, 2021 in Ajax, ON, Canada
 Please watch video instruction of this code: https://youtu.be/_H9D0czQpSI
 
View code for using two or more VL6180X sensors: https://robojax.com/course1/lecture76

  This video is part of Arduino Step by Step Course which starts here: https://youtu.be/-6qSrDUA5a8

 

If you found this tutorial helpful, please support me so I can continue creating 
content like this. 

or make a donation using PayPal http://robojax.com/L/?id=64
  
 * This code is "AS IS" without warranty or liability. Free to be used as long as you keep this note intact. * 
 * This code has been downloaded from Robojax.com
    This program is free software: you can redistribute it and/or modify
    it under the terms of the GNU General Public License as published by
    the Free Software Foundation, either version 3 of the License, or
    (at your option) any later version.

    This program is distributed in the hope that it will be useful,
    but WITHOUT ANY WARRANTY; without even the implied warranty of
    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
    GNU General Public License for more details.

    You should have received a copy of the GNU General Public License
    along with this program.  If not, see <https://www.gnu.org/licenses/>. 
 */
#include <Wire.h>
#include "Adafruit_VL6180X.h"

Adafruit_VL6180X vl = Adafruit_VL6180X();

void setup() {
  Serial.begin(115200);

  // wait for serial port to open on native usb devices
  while (!Serial) {
    delay(1);
  }
  
  Serial.println("Adafruit VL6180x test!");
  if (! vl.begin()) {
    Serial.println("Failed to find sensor");
    while (1);
  }
  Serial.println("Sensor found!");
}

void loop() {

  uint8_t range = vl.readRange();
  uint8_t status = vl.readRangeStatus();

  if (status == VL6180X_ERROR_NONE) {
    Serial.print("Range: "); Serial.print(range);
    Serial.println("mm");
  }
//  if(range <=76)
//  {
//    //do something
//  }

  // Some error occurred, print it out!
  
  if  ((status >= VL6180X_ERROR_SYSERR_1) && (status <= VL6180X_ERROR_SYSERR_5)) {
    Serial.println("System error");
  }
  else if (status == VL6180X_ERROR_ECEFAIL) {
    Serial.println("ECE failure");
  }
  else if (status == VL6180X_ERROR_NOCONVERGE) {
    Serial.println("No convergence");
  }
  else if (status == VL6180X_ERROR_RANGEIGNORE) {
    Serial.println("Ignoring range");
  }
  else if (status == VL6180X_ERROR_SNR) {
    Serial.println("Signal/Noise error");
  }
  else if (status == VL6180X_ERROR_RAWUFLOW) {
    Serial.println("Raw reading underflow");
  }
  else if (status == VL6180X_ERROR_RAWOFLOW) {
    Serial.println("Raw reading overflow");
  }
  else if (status == VL6180X_ERROR_RANGEUFLOW) {
    Serial.println("Range reading underflow");
  }
  else if (status == VL6180X_ERROR_RANGEOFLOW) {
    Serial.println("Range reading overflow");
  }
  delay(50);
}

Ohun ti o le nilo

Orisun & itọkasi

Fáìlìs📁

Fayile Fritzing

  • Adafruit VL6180X Time of Flight Distance Sensor
    Fritzing part for the Adafruit VL6180X Time of Flight distance sensor. This sensor measures absolute distance up to 100mm and ambient light, communicating via I2C. Includes the sensor breakout board and pin connections for use in Fritzing projects.
    Adafruit VL6180X Time of Flight Distance Sensor-1.fzpz 0.02 MB