Casharka 78aad: Muuji masaafada VL53L0X ee LCD-ga | Koorsada Arduino Tallaabo Tallaabo
Tilmaantan waxay muujinaysaa sida loo dhiso cabbir masaafo laser ah oo sax ah iyadoo la isticmaalayo sensor-ka VL53L0X time-of-flight iyo shaashad LCD 16x2 ah oo leh module I2C ah. Mashruucani wuxuu ku habboon yahay kuwa wax sameeya ee raba inay ku daraan cabbir masaafo sax ah oo aan taabasho lahayn waxyaalaha ay abuuraan. VL53L0X wuxuu isticmaalaa laser si uu u cabbiro masaafada, taasoo ka dhigaysa mid ku habboon codsiyada ay sensor-ka ultrasonic ku adkaan karaan, sida cabbirka heerka buuxinta haanta ama ogaanshaha booska saxda ah ee shay ku yaal suunka gudbinta.Waa kuwan dhowr qaab oo wax ku ool ah oo aad u isticmaali karto mashruucan:
- Quudiyaha xayawaanka ee otomaatiga ah: Cabbir heerka cuntada ee weelka si aad u kiciso dib-u-buuxin ama u dirto ogeysiis.
- Qashin-qubka caqliga leh: Ogaanshaha sida qashinka ugu buuxo oo kuu diga marka loo baahdo in la faaruqiyo.
- Qalabka dhererka DIY: Abuur qalab cabbir sax ah oo loogu talagalay walxaha yaryar ama si loo raad raaco koritaanka ilmaha.
- Kaaliyaha baabuurta la dhigto: Dhis nidaam sensor ah si uu uga caawiyo baabuurta in si sax ah loo dhigto guri ama meel cidhiidhi ah.
- Robotics: Ku isticmaal robot si aad u ogaato caqabadaha ama u cabbirto masaafada gidaarka si aad u socoto.
Qalabka Loo Baahan Yahay
- Arduino Board (tusaale, Uno)
- Sensor-ka Masaafada Laser-ka VL53L0X
- Shaashad LCD 1602 oo leh Module I2C
- Fiilooyinka Jumper
Hagaha Xiriirinta
Xiriirinta mashruucan waa mid toos ah, mahadnaq borotokoolka I2C, kaasoo u oggolaanaya LCD-ga iyo sensor-ka labaduba inay ku xiriiraan laba fiilo oo isku mid ah. Sensor-ka VL53L0X wuxuu u baahan yahay koronto 5V ah, kaasoo si toos ah looga soo qaado pin-ka 5V ee Arduino. Si loo hubiyo in sensor-ku leeyahay ilo koronto oo deggan, pin dheeri ah ayaa loo isticmaalaa sida VCC labaad. (fiidiyowga 00:27)
Waa kuwan jaantuska xiriirinta:

Xiriirintu waa sida soo socota:
- VL53L0X VCC -> Arduino 5V iyo Pin 13 (Pin 13 waxaa loo dejiyay sida wax soo saar dhijitaal ah si loo bixiyo xasillooni koronto dheeri ah).
- 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).
Haddii aad isticmaalayso nooc Arduino kale, pin-yada I2C waxaa laga yaabaa inay ku yaalliin meel kale. Pin-yada SDA iyo SCL waxaa inta badan si toos ah loogu qoraa gudaha board-ka. (fiidiyowga 02:42)
Sharaxaadda Koodhka
Koodhku wuxuu loo qaabeeyey si fudud loo habeeyo. Qaybaha ugu muhiimsan ee isticmaaluhu wax ka beddeli karo waxay ku yaalliin xagga sare ee sketch-ka. (fiidiyowga 04:18)
Marka hore, waxaanu ku qeexaynaa joogto ah pin-ka korontada dheeriga ah. Tan waxaa loo isticmaalaa si loo bixiyo sahay 5V nadiif ah sensor-ka.
const int vcc2 = 13; // Pin VCC dheeri ah oo loogu talagalay sensor-ka VL53L0X
Marka xigta, waxaanu abuuraynaa tusaale ka mid ah maktabadda LCD-ga oo waxaanu ku qeexaynaa ciwaankiisa I2C. Ciwaankan waxaad ka heli kartaa adigoo socodsiiya sketch-ka iskaanka I2C, sida lagu muujiyey fiidiyowga. (fiidiyowga 03:26)
LiquidCrystal_I2C lcd(0x3F, 16, 2); // Deji ciwaanka LCD-ga si 0x3F u ah shaashad 16 xaraf iyo 2 sadar ah
Ugu dambeyntii, waxaa jira doorsoome xakameeya halbeegga cabbirka. Waxaad beddeli kartaa qiimahan si aad u muujiso masaafada millimitir ama sentimitir.
const int type = 1; // Deji 1 millimitir, 2 sentimitir
Gudaha shaqada setup(), pin-ka VCC dheeriga ah waxaa loo habeeyay sida wax soo saar oo waxaa loo dejiyay HIGH si loo bixiyo koronto sensor-ka. LCD-ga ayaa markaa la bilaabay.
Muuqaalka ugu weyn ee shaqada loop() wuxuu akhriyaa masaafada sensor-ka, wuxuu nadiifiyaa LCD-ga, wuxuuna daabacaa qiimaha oo ay weheliso halbeegga. Marka type lagu dejiyo 2, masaafada waxaa laga beddelaa millimitir oo loo rogaa qiime float ah oo sentimitir ah si loo helo akhrin sax ah. (fiidiyowga 06:47)
Muuujinta Mashruuca Tooska ah
Muuujinta, sensor-ka waxaa lagu tijaabiyay iyadoo la isticmaalayo xisaab si loo xaqiijiyo saxnaantiisa. Fiidiyowgu wuxuu muujinayaa in sensor-ku bixiyo akhrin aad u sax ah, iyadoo kaliya dhawr millimitir oo leexasho ah. (fiidiyowga 08:32)
Waxaa muhiim ah in la ogaado in sensor-ku leeyahay kala duwanaansho ugu badnaan qiyaastii 1.2 mitir oo ku jira qaabka cabbirka joogtada ah. Marka bartilmaameedku ka baxo kala duwanaanshaha, shaashaddu waxay muujin doontaa qiime 8190. (fiidiyowga 09:53)
Waxa kale oo jirta indha-indheyn muhiim ah oo ah in dareenkaagu uu si khaldan u akhriyi karo dusha sare ee si fiican u iftiimaya. Inaad ku jeediso shay dhalaalaya waxay keeni kartaa khaladaad waaweyn, halka ku jeedinta dusha sare ee aan dhalaal lahayn ay keento natiijooyin sax ah. (fiidiyowga 10:42)
Koodhku wuxuu kaloo la shaqeeyaa noocyada kala duwan ee VL53L0X module-ka iyo LCD-yada waaweyn, sida nooca 2004, iyada oo aan wax isbeddel ah lagu samayn xiriirinta. (fiidiyowga 11:30)
Qaybaha Fiidiyowga
- [00:05] Hordhaca mashruuca VL53L0X iyo LCD
- [00:27] Jaantuska xiriirinta VL53L0X iyo LCD
- [02:51] Xiriirin faahfaahsan oo ku saabsan Arduino board dhab ah
- [03:26] Raadinta ciwaanada I2C
- [04:18] Sharaxaadda koodhka iyo qaabaynta
- [08:32] Tusaale toos ah oo ku saabsan cabbiraadda masaafada
- [09:53] Tijaabinta baaxadda iyo xaddidnaanta dareenka
- [10:42] Saxnaanta dusha kala duwan
- [11:30] Tijaabinta module-ka dareenka kala duwan iyo LCD-ga weyn
Sawirro
/*
* 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);
}
Waad u baahan tahay
-
AmaazonPurchase VL53L0X from Amazonamzn.to
-
eBayPurchase VL53l0x from eBayebay.us
Kheyraadka & Tixraacyada
-
DibeddaArduino Library (GitHub)github.com
-
DibeddaPurchase VL53l0x from eBayebay.us
-
DibeddaVL53L0X datasheet (PDF)st.com
Faylasha📁
Faylka Fritzing
-
Adafruit VL6180X Time of Flight Distance SensorFritzing 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.fzpz0.02 MB