Wa Koodu

Wíwọ̀n ìjìnnà pẹ̀lú Laser VL53L0X 6-Pin Module àti TM1637 Display fún Arduino

Wíwọ̀n ìjìnnà pẹ̀lú Laser VL53L0X 6-Pin Module àti TM1637 Display fún Arduino


Nínú ẹ̀kọ́ yìí, a óò kọ́ bí a ṣe ń wọn ìjìnnà pẹ̀lú ẹ̀rọ ìwọ̀n ìjìnnà láṣẹ VL53L0X àti láti fi àbájáde rẹ̀ hàn lórí ẹ̀rọ ìfihàn oní nọ́ńbà méje TM1637. Iṣẹ́ yìí darapọ̀ àwọn ẹ̀rọ méjèèjì láti ṣẹ̀dá ohun èlò ìwọ̀n ìjìnnà tí ó rọrùn ṣùgbọ́n tí ó gbéṣẹ́. VL53L0X ń lo ìmọ̀-ẹ̀rọ láṣẹ láti pèsè àwọn ìwọ̀n ìjìnnà tí ó péye, nígbà tí ìfihàn TM1637 fi àwọn ìwọ̀n wọ̀nyí hàn ní ọ̀nà tí ó rọrùn fún olùṣàmúlò.

VL53L0X 200cm range sensor
TM1637 4 digit display module

A óò ṣàlàyé àwọn ẹ̀rọ tí a nílò, àwọn ìtọ́nisọ́nà ìsopọ̀, àti kóòdù tí ó pọn dandan láti mú gbogbo nǹkan ṣiṣẹ́. Ní ìparí ẹ̀kọ́ yìí, ìwọ óò ní ohun èlò ìwọ̀n ìjìnnà tí ó ń ṣiṣẹ́ tí a lè lò nínú ọ̀pọ̀lọpọ̀ àwọn iṣẹ́. Fún ìtọ́sọ́nà ojú-ran, rí i dájú pé o wo fídíò náà (nínú fídíò ní 00:00).

Àlàyé Àwọn Ẹ̀rọ

Àwọn ẹ̀rọ pàtàkì fún iṣẹ́ yìí ni ẹ̀rọ ìwọ̀n ìjìnnà láṣẹ VL53L0X àti ẹ̀rọ ìfihàn TM1637. VL53L0X jẹ́ ẹ̀rọ tí ó ń wọn àkókò ìrìn-àjò tí ó ń wọn ìjìnnà sí ohun kan nípa gbígbé ìtànná láṣẹ jáde àti ṣíṣe ìṣirò àkókò tí ìtànná náà gbà láti padà. Ó ń ṣiṣẹ́ lórí ìwọ̀n foltáìjì 2.6V sí 3.5V ṣùgbọ́n ó tún lè ṣiṣẹ́ pẹ̀lú 5V nípasẹ̀ ẹ̀rọ amúṣe foltáìjì tí a ṣepọ̀.

TM1637 jẹ́ ẹ̀rọ amúṣe ìfihàn tí ó ń darí ẹ̀rọ ìfihàn oní nọ́ńbà méje. Ó ń bára ṣe nípasẹ̀ ọ̀nà ìsopọ̀ 2-wáyì tí ó rọrùn (CLK àti DIO), tí ó mú kí ó rọrùn láti sopọ̀ mọ́ Arduino. Ìfihàn náà lè fi àwọn iye nọ́ńbà hàn àti pé ó pípé fún fífi àwọn ìwọ̀n ìjìnnà láti ẹ̀rọ VL53L0X hàn.

Àwọn Àlàyé Láti Ìwé Ìtọ́kasọ́

OlùṣeSTMicroelectronics
Nọ́ńbà apáVL53L0X
Foltáìjì Logic/IO2.6 V - 3.5 V
Foltáìjì ìpèsè2.6 V - 5 V
Ìwọ̀n ìgbóná iṣẹ́-20 °C sí 70 °C
Ìwọ̀n ìjìnnà tí ó lè wọn30 mm sí 2000 mm
Ìgbohùnsá I2C400 kHz
Ìṣètò àkókò ìdúró500 ms
Àkójọpọ̀6-pin module

  • Rí i dájú pé ìpèsè agbára tí ó tọ́ wà (5V jẹ́ dídárayá).
  • So pín XSHUT pọ̀ láti yẹra fún ìjùjọ̀ pẹ̀lú resistor ìfà.
  • Lo I2C fún ìbáraṣepọ̀; so SDA àti SCL pọ̀ ní ọ̀nà tí ó tọ́.
  • Ṣe àkóso àwọn àkókò ìdúró nínú kóòdù láti yẹra fún ìwà àìròtẹ́lẹ̀.
  • Ṣe àfiyèsí ìwọ̀n ìgbóná iṣẹ́ fún ìwọ̀n tí ó péye.

Àwọn Ìtọ́nisọ́nà Ìsopọ̀

Arduino wiring for VL53L0X with TM1637 4 digit dispaly
Arduino wiring for VL53L0X with TM1637 4 digit dispaly

Láti so VL53L0X àti ìfihàn TM1637 pọ̀, bẹ̀rẹ̀ nípa sísopọ̀ pín VCC ti VL53L0X sí pín 5V lórí Arduino àti pín GND sí pín ilẹ̀ lórí Arduino. Nígbà tí ó yá, so pín SDA ti VL53L0X sí pín A4 lórí Arduino, èyí tí a sábà máa ń lò fún ìbáraṣepọ̀ dátà I2C. Pín SCL yẹ kí ó sopọ̀ sí pín A5 lórí Arduino, tí a ń lò fún àmì aago.

Fún ìfihàn TM1637, so pín CLK sí pín oní nọ́ńbà 2 lórí Arduino àti pín DIO sí pín oní nọ́ńbà 3. Ní ìparí, so pín XSHUT ti VL53L0X sí pín oní nọ́ńbà 12 lórí Arduino. Rí i dájú pé àwọn pín tí a kò lò, bíi GPIO1 lórí VL53L0X, ni a fi sílẹ̀ láìsopọ̀. Ìṣètò yìí yóò jẹ́ kí Arduino bára ṣe dáradára pẹ̀lú àwọn ẹ̀rọ méjèèjì.

Àwọn Àpẹẹrẹ Kóòdù & Àlàyé

Kóòdù náà ń bẹ̀rẹ̀ ẹ̀rọ ìwọ̀n àti ìfihàn, ń ṣètò ìbáraṣepọ̀ I2C, àti ń ka àwọn ìwọ̀n ìjìnnà nígbà gbogbo. Nísàlẹ̀ ni àpẹẹrẹ kan tí ó fi ìṣẹ́ ìṣètò hàn níbi tí a ti ṣètò àwọn pín àti tí a ti bẹ̀rẹ̀ ẹ̀rọ ìwọ̀n:

void setup() {
  pinMode(12, INPUT_PULLUP); // ṣètò pín 12 fún ìfidánílẹ̀
  digitalWrite(12, HIGH); // ṣètò pín 12 sí gíga (5V)
  Serial.begin(9600);
  Wire.begin(); // ìbáraṣepọ̀ I2C ti bẹ̀rẹ̀
  sensor.init(); // ẹ̀rọ ìwọ̀n ìjìnnà ti bẹ̀rẹ̀
  sensor.setTimeout(500); // àkókò ìdúró ti ṣètò
  sensor.startContinuous(); // irú ìwọ̀n tí a ṣètò
}

Nínú ìṣẹ́ ìṣètò yìí, pín fún XSHUT ni a ṣètò gẹ́gẹ́ bí ìfidánílẹ̀ pẹ̀lú resistor ìfà, àti ẹ̀rọ ìwọ̀n náà ti bẹ̀rẹ̀ fún ìwọ̀n ìjìnnà tí ń lọ lọ́wọ́. Ẹ̀rọ ìṣàkóso serial náà tún ti ṣètò láti fi àwọn ìwọ̀n ìjìnnà hàn.

Nígbà tí ó yá, ìṣẹ́ àkọ́kọ́ ń ka ìjìnnà àti ń mú ìfihàn náà ṣe àtúnṣe. Èyí ni àpẹẹrẹ kan láti inú ìṣẹ́ àkọ́kọ́:

void loop() {
  int distance = sensor.readRangeContinuousMillimeters(); // ka ìjìnnà ní mm
  display.setSegments(clearLED); // yọ iye tí ó wà tẹ́lẹ̀ kúrò lórí ìfihàn LED
  display.showNumberDec(distance, false, 4, 0); // fi ìjìnnà hàn
  Serial.print("Distance: ");
  Serial.print(distance); // tẹ ìjìnnà sílẹ̀ lórí ẹ̀rọ ìṣàkóso serial
}

Ìṣẹ́ àkọ́kọ́ yìí ń ka ìjìnnà láti ẹ̀rọ ìwọ̀n nígbà gbogbo àti ń mú ìfihàn TM1637 ṣe àtúnṣe pẹ̀lú ìwọ̀n tuntun. Ó tún ń tẹ ìjìnnà sílẹ̀ lórí ẹ̀rọ ìṣàkóso serial fún ìwádìí. Bí o bá fẹ́ wo kóòdù kíkún, yóò gbé sílẹ̀ nísàlẹ̀ àpilẹ̀kọ yìí.

Ìfihàn / Ohun Tí O Lè Retí

Nígbà tí o bá parí ìṣètò náà àti tí o ti gbé kóòdù sílẹ̀, ìwọ óò rí ìjìnnà tí VL53L0X wọn tí ó hàn lórí TM1637. Bí o ṣe ń gbé ohun kan súnmọ́ tàbí jìnnà sí ẹ̀rọ ìwọ̀n náà, iye tí ó hàn yóò yípadà ní ìbámu. Bí o bá ní àwọn ìwọ̀n àìròtẹ́lẹ̀, rí i dájú pé kò sí ohun tí ó dí ẹ̀rọ ìwọ̀n náà àti pé ojú ohun náà bọ́gbọ́n mu fún ìtànná láṣẹ láti padà (nínú fídíò ní 09:30).

Àwọn àṣìṣe tí ó wọ́pọ̀ pẹ̀lú ìsopọ̀ tí ó yípadà tàbí bí a kò ṣe bẹ̀rẹ̀ ẹ̀rọ ìwọ̀n náà dáradára, tí ó lè yọrí sí àwọn àṣìṣe àkókò ìdúró. Rí i dájú pé àwọn pín tí ó tọ́ ni a so pọ̀ àti pé ẹ̀rọ ìwọ̀n náà ní agbára tí ó tó fún àwọn ìwọ̀n ìjìnnà tí ó péye.

Aworan

VL53L0X 200cm range sensor
VL53L0X 200cm range sensor
TM1637 4 digit display module
TM1637 4 digit display module
Arduino wiring for VL53L0X with TM1637 4 digit dispaly
Arduino wiring for VL53L0X with TM1637 4 digit dispaly
104-Measure distance with a Laser VL53L0X 6-pin module and a TM1637 LED display for Arduino
Ede: C++
/* This example shows how to use continuous mode to take readings.

This is Arduino code to measure distance with VL53L0X and display it on a TM1637 LED 7-segment display.

Original Laser Sensor source: https://github.com/adafruit/Adafruit_VL53L0X
Modified by Ahmad Shamshiri for RoboJax.com
Date modified: May 31, 2018 at 19:25 in Ajax, Ontario, Canada
You have to watch 1 video before using this code:
1- Watch VL53L0X video and get code https://youtu.be/1n9eJ9HaYpE
2- Watch TM1637 video and get code https://robojax.com?vid=robojax-TM1637
You can get this code from Robojax.com

Pin connection

VL53L0X Pin  Arduino Pin
VCC         5V
GND         GND
SDA         A4 or SDA if available
SCL         A5 or SCL if available
GPIO1       leave it unconnected
XSHUT       D12 (digital 12 or pin 12)
*/


#include <Wire.h>
#include <VL53L0X.h>

VL53L0X sensor;

/////// start of TM1637 Display
#include <Arduino.h>
#include <TM1637Display.h> 
#define CLK 2
#define DIO 3
#define TEST_DELAY   500
TM1637Display display(CLK, DIO);
uint8_t clearLED[] = { 0x0, 0x0, 0x0, 0x0 }; // value for clearing the LEDs
////// End of TM1637 Display 


void setup()
{
  pinMode(12,INPUT_PULLUP);// set pin 12 for input
  digitalWrite(12,HIGH);// set pin 12 high (5V)
  Serial.begin(9600);
  Wire.begin();// I2C communication initialized

  sensor.init();// distance sensor is initialized
  sensor.setTimeout(500); // time out is set

  // Start continuous back-to-back mode (take readings as
  // fast as possible).  To use continuous timed mode
  // instead, provide a desired inter-measurement period in
  // ms (e.g. sensor.startContinuous(100)).
  sensor.startContinuous();// type of measurement is set
    Serial.println("VL53L0X with MAX6675 test");
    delay(500);
    display.setBrightness(0x0f);// set brightness for display
}

void loop()
{
  int distance =sensor.readRangeContinuousMillimeters();// read the distance in mm
  display.setSegments(clearLED);// remove previous value from LED display
  display.showNumberDec(distance, false, 4, 0);// display the distance

  
 //distance = distance;
  Serial.print("Distance: ");
  Serial.print(distance);// print distance on serial monitor
  Serial.print("mm");
  if (sensor.timeoutOccurred()) { Serial.print(" TIMEOUT"); }

  Serial.println();
  delay(100);
}

Orisun & itọkasi

Ko si awọn orisun sibẹsibẹ.

Fáìlìs📁

Fọọmu data (pdf)

Fayile Fritzing

Iwe Itọsọna Olumulo

Awọn faili miiran