Как мне написать условия для серво привода.

Liofan
Offline
Зарегистрирован: 03.07.2019
Всех привествую. Подскажите пожалуйста как написать  условие (If-Else). у меня есть 
ардуино (Arduino Uno)
датчик движения (VL53L0X)
И серво привод.
С помощи гугл я смог завести модули на ардуино отдельно.
Первый показывает растояние, Второй сробатывает каждые 5 сек.
 
Сейчас пытаюсь написать условие, если датчик движение растояние 50 милл или меньше. что бы сработал серво привод на 5 сек. а если больше 50 не сробатывал.
b707
Offline
Зарегистрирован: 26.05.2017

свой код вставьте в сообщение, а не выкладывайте где-то на чужом ресурсе.

Перед вставкой прочтите, как это правильно сделать:

http://arduino.ru/forum/obshchii/vstavka-programmnogo-koda-v-temukommentarii

 

Liofan
Offline
Зарегистрирован: 03.07.2019
/* This example shows how to get single-shot range
  measurements from the VL53L0X. The sensor can optionally be
  configured with different ranging profiles, as described in
  the VL53L0X API user manual, to get better performance for
  a certain application. This code is based on the four
  "SingleRanging" examples in the VL53L0X API.
 
  The range readings are in units of mm. */
 
#include <Wire.h>
#include <VL53L0X.h>
#include <Servo.h> //используем библиотеку для работы с сервоприводом
VL53L0X sensor;
Servo servo; //объявляем переменную servo типа Servo
 
// Uncomment this line to use long range mode. This
// increases the sensitivity of the sensor and extends its
// potential range, but increases the likelihood of getting
// an inaccurate reading because of reflections from objects
// other than the intended target. It works best in dark
// conditions.
 
//#define LONG_RANGE
 
 
// Uncomment ONE of these two lines to get
// - higher speed at the cost of lower accuracy OR
// - higher accuracy at the cost of lower speed
 
//#define HIGH_SPEED
//#define HIGH_ACCURACY
 
 
void setup()
{
  servo.attach(10); //привязываем привод к порту 10
  Serial.begin(9600);
  Wire.begin();
 
  sensor.init();
  sensor.setTimeout(500);
 
#if defined LONG_RANGE
  // lower the return signal rate limit (default is 0.25 MCPS)
  sensor.setSignalRateLimit(0.1);
  // increase laser pulse periods (defaults are 14 and 10 PCLKs)
  sensor.setVcselPulsePeriod(VL53L0X::VcselPeriodPreRange, 18);
  sensor.setVcselPulsePeriod(VL53L0X::VcselPeriodFinalRange, 14);
#endif
 
#if defined HIGH_SPEED
  // reduce timing budget to 20 ms (default is about 33 ms)
  sensor.setMeasurementTimingBudget(20000);
#elif defined HIGH_ACCURACY
  // increase timing budget to 200 ms
  sensor.setMeasurementTimingBudget(200000);
#endif
}
 
void loop()
{
  Serial.print(sensor.readRangeSingleMillimeters());
      servo.write(0); //ставим вал под 0
    delay(5000); //ждем 2 секунды
    servo.write(180); //ставим вал под 180
    delay(5000); //ждем 2 секунды
  if (sensor.timeoutOccurred()) {
 
    Serial.print(" TIMEOUT");
 
  }
 
  Serial.println();
}

 

DetSimen
DetSimen аватар
Онлайн
Зарегистрирован: 25.01.2017
delay(5000); //ждем 2 секунды

реально так?

ЕвгенийП
ЕвгенийП аватар
Offline
Зарегистрирован: 25.05.2015

Liofan пишет:

Мой код:

В сообщени #2 Ваш код? Ну, тогда у Вас не может быть проблем с условием, Вы нас троллите.

Liofan
Offline
Зарегистрирован: 03.07.2019

Ну этот код я взял в сети. там было 2 сек, я изменил до 5.

Liofan
Offline
Зарегистрирован: 03.07.2019

В сети код взял. Уже удалось написать условие. Благодарю всех.