Hi there,
i hope i post my issue correctly here in a new thread. Equipment:
-Arduino UNO Board
-VL53LOX TOF sensor
-LCD Display 16x2
-Support Board for the LCD display
-Breadboard
My problem is that the serial monitor shows constantly timeouts through the whole emasurement when my code is corretly compiled and booted on the Arduino Board. I dont get any error status and basically everything works. But here comes the problem sometimes the distance measurement works, sometimes not. When its not working, the LCD Display shows -1mm distance constantly. The Serial Monitor shows TIMEOUT.
I used a new TOF sensor, a new Arduino Uno Board, checked everything for shacky wires, checked the correct setted Board and Port and dont get any wiser through other Posts in this forum or in the internet. I checked to use the correct libraries and worked exactly after the instruction of Robojax
Link:Display VL53L0X distance as bargraph on LCD - Robojax
My Code:
/*
*
-
This Arduino sketch display distance measured
-
using VL53L0X laser sensor as bargraph on LCD1602-I2C
-
(Simple project)
-
Advance code at http://bit.ly/rj-udemy
-
Original library was taken from Arduino Playground - LcdBarGraph Library
-
Modified by Ahmad Shamshiri on May 31, 2019 at 03:43 in Ajax, Ontario, Canada
-
Visit Robjax.com source code for YouTube Videos for other Arduino codes
-
Watch YouTube video instruction for this code: Distance a bargraph using VL53L0X Laser sensor on LCD display for Arduino - YouTube
-
Robojax Arduino Course on Udemy where you get Schematic Diagram of this sketch
-
and many other robotics related lectures and codes. Purchase the course here: http://bit.ly/rj-udemy
-
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 download 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/.
/
/
*
This is Arduino code to measure distance with VL53L0X and display it on LCD1602 with I2C module
Distance is displayed in mm (millimetre) or cm (centimetre).
Original Laser Sensor source source: GitHub - adafruit/Adafruit_VL53L0X: Arduino library for Adafruit VL53L0X
Modified by Ahmad Shamshiri for Robojax.com
Date Modified: June 28, 2018 at 19:06 in Ajax, Ontario, Canada
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 unconnected
*/
#include <Wire.h>
#include <VL53L0X.h>
VL53L0X sensor;
#define maxDistance 500
int VCC2= 13;// 2nd VCC for laser sensor
#include <LiquidCrystal_I2C.h>
byte lcdNumCols = 16; // -- number of columns in the LCD
byte lcdLine = 2; // -- number of line in the LCD
// Set the LCD address to 0x26/0x3F for a 16 chars and 2 line display
LiquidCrystal_I2C lcd(0x27, lcdNumCols, lcdLine);// use I2C Scanner to find the address: 0x27 or something like that
#include <LcdBarGraphRobojax.h>
LcdBarGraphRobojax rjx(&lcd, 16, 0, 0); // -- creating 16 character long bargraph starting at char 0 of line 0 (see video)
void setup()
{
Serial.begin(9600);
pinMode(VCC2, OUTPUT);// set pin 13 HIGH for extra 5V
digitalWrite(VCC2, HIGH);// make pin 13 HIGH so we have extra 5V
Wire.begin();
sensor.init();
sensor.setTimeout(500);
// 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();
// initialize the LCD,
lcd.init();
lcd.clear();
lcd.print("Robojax");
lcd.setCursor (0,1);
lcd.print("Bargraph VL53L0X");
lcd.backlight(); // Turn on the blacklight and print a message.
// -- do some delay: some time I've got broken visualization
delay(2000);
lcd.clear();// clear the screen from previous value
}
void loop()
{
int distance=sensor.readRangeContinuousMillimeters();
if (maxDistance<distance){
distance=0;
}
// int distance =sensor.startContinuous(100);
rjx.clearLine(1);// clear line 1 to display fresh voltage value
// -- draw bar graph from the analog value read
rjx.drawValue( distance, maxDistance);
// -- do some delay: frequent draw may cause broken visualization
//delay(100);
lcd.setCursor (0,1); // go to start of 2nd line
lcd.print("Dist.:");
lcd.setCursor (7,1); // go to start of 2nd line
lcd.print(distance);
lcd.print("mm");
if (sensor.timeoutOccurred()) { Serial.print(" TIMEOUT"); }
Serial.println();
delay(500);
}
Can someone help me
??
