Как мне написать условия для серво привода.
- Войдите на сайт для отправки комментариев
Ср, 03/07/2019 - 12:39
Всех привествую. Подскажите пожалуйста как написать условие (If-Else). у меня есть
ардуино (Arduino Uno)
датчик движения (VL53L0X)
И серво привод.
С помощи гугл я смог завести модули на ардуино отдельно.
Первый показывает растояние, Второй сробатывает каждые 5 сек.
Сейчас пытаюсь написать условие, если датчик движение растояние 50 милл или меньше. что бы сработал серво привод на 5 сек. а если больше 50 не сробатывал.
свой код вставьте в сообщение, а не выкладывайте где-то на чужом ресурсе.
Перед вставкой прочтите, как это правильно сделать:
http://arduino.ru/forum/obshchii/vstavka-programmnogo-koda-v-temukommentarii
/* 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(); }реально так?
В сообщени #2 Ваш код? Ну, тогда у Вас не может быть проблем с условием, Вы нас троллите.
Ну этот код я взял в сети. там было 2 сек, я изменил до 5.
В сети код взял. Уже удалось написать условие. Благодарю всех.