Лазерный дальномер помогите собрать

radar122
Offline
Зарегистрирован: 17.04.2017

Добрый день. Подскажите пожалуйста как собрать дальномер на : ардуино( Uno) -    модуль лазерный дальномер VL53LOX - семисегментный индикатор 595 (4 бит). В особенности интересует скетч. 

Jeka_M
Jeka_M аватар
Offline
Зарегистрирован: 06.07.2014
radar122
Offline
Зарегистрирован: 17.04.2017

Прога нужна. Ардуино- модуль- индикатор. А эти ссылки уже видал. 

Jeka_M
Jeka_M аватар
Offline
Зарегистрирован: 06.07.2014

Проги на заказ пишут в разделе Ищу исполнителя. За деньги.

Salavat
Offline
Зарегистрирован: 10.11.2016

Salavat
Offline
Зарегистрирован: 10.11.2016

Ребята правильно ли я подключил модули?

/* This example shows how to use continuous mode to take
range measurements with the VL53L0X. It is based on
vl53l0x_ContinuousRanging_Example.c from the VL53L0X API.
 
The range readings are in units of mm. */
 
#include <Wire.h>
#include <VL53L0X.h>
#include <LiquidCrystal_I2C.h>
 
VL53L0X sensor;
// Set the LCD address to 0x27 for a 16 chars and 2 line display
LiquidCrystal_I2C lcd(0x3F, 16, 2);
int pinPosition = 10;
 
void setup()
{
    setupLCD();
    setupSensor();
    setupLed();
}
 
void setupLed(){
  pinMode(pinPosition, OUTPUT);
}
 
void setupLCD()
{
    // initialize the LCD
  lcd.begin();
 
  // Turn on the blacklight and print a message.
  lcd.backlight();
  lcd.print("Hello, world!");
}
 
void setupSensor()
{
  //скорость передачи данных
  Serial.begin(9600);
  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();
}
 
//сигнализируем превышение метража
void checkDistanceAlarm(int distance){
  if(distance > 1000)
  {
    //тут код для зажигания светодиода
    digitalWrite(pinPosition, HIGH);
  }else{
    //тут код чтобы погасить светодиод  
    digitalWrite(pinPosition, LOW);
  }
}
 
void printDistance(int distance){
  lcd.clear();
  lcd.print(distance + " mm"); 
}
 
void loop()
{
/*возможно это надо удалить - непонятно что делает код*/
Serial.print(sensor.readRangeContinuousMillimeters());
 if (sensor.timeoutOccurred()) { Serial.print(" TIMEOUT"); }
 
  /*предполагаемый код*/
  int distance = sensor.readRangeContinuousMillimeters();
  printDistance(distance);
  checkDistanceAlarm(distance);
  /*------------------*/
 
  Serial.println();
}
 
 
где то ошибка. подключал, не работает. Подскажите пожалуйста. Хотя бы с подключением разобраться. Может быть сразу два модуля по I2C не тянет ардуино?!

bwn
Offline
Зарегистрирован: 25.08.2014

Загоняешь I2C-сканер (гуглим) и смотрим отображаемые адреса (количество адресов = количеству устройств).

nevkon
Offline
Зарегистрирован: 20.01.2015

Подключили не правильно. У вас аппаратный I2C на A4 и A5. Все устройства I2C лучше на них и вешать чтобы не городить программный I2C.

fly245
fly245 аватар
Offline
Зарегистрирован: 25.08.2013

Salavat пишет:

Ребята правильно ли я подключил модули?

/* This example shows how to use continuous mode to take
range measurements with the VL53L0X. It is based on
vl53l0x_ContinuousRanging_Example.c from the VL53L0X API.
 
The range readings are in units of mm. */
 
#include <Wire.h>
#include <VL53L0X.h>
#include <LiquidCrystal_I2C.h>
 
VL53L0X sensor;
// Set the LCD address to 0x27 for a 16 chars and 2 line display
LiquidCrystal_I2C lcd(0x3F, 16, 2);
int pinPosition = 10;
 
void setup()
{
    setupLCD();
    setupSensor();
    setupLed();
}
 
void setupLed(){
  pinMode(pinPosition, OUTPUT);
}
 
void setupLCD()
{
    // initialize the LCD
  lcd.begin();
 
  // Turn on the blacklight and print a message.
  lcd.backlight();
  lcd.print("Hello, world!");
}
 
void setupSensor()
{
  //скорость передачи данных
  Serial.begin(9600);
  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();
}
 
//сигнализируем превышение метража
void checkDistanceAlarm(int distance){
  if(distance > 1000)
  {
    //тут код для зажигания светодиода
    digitalWrite(pinPosition, HIGH);
  }else{
    //тут код чтобы погасить светодиод  
    digitalWrite(pinPosition, LOW);
  }
}
 
void printDistance(int distance){
  lcd.clear();
  lcd.print(distance + " mm"); 
}
 
void loop()
{
/*возможно это надо удалить - непонятно что делает код*/
Serial.print(sensor.readRangeContinuousMillimeters());
 if (sensor.timeoutOccurred()) { Serial.print(" TIMEOUT"); }
 
  /*предполагаемый код*/
  int distance = sensor.readRangeContinuousMillimeters();
  printDistance(distance);
  checkDistanceAlarm(distance);
  /*------------------*/
 
  Serial.println();
}
 
 
где то ошибка. подключал, не работает. Подскажите пожалуйста. Хотя бы с подключением разобраться. Может быть сразу два модуля по I2C не тянет ардуино?!

Вместо  lcd.begin ,переправил на lcd.init - а то ругается IDE