Ви не увійшли.
К сожалению я не силен в украинском, но как понял вы пытаетесь сделать паузы с millis.
Хочу посоветовать хорошую библиотеку "SimpleTimer.h". https://playground.arduino.cc/Code/SimpleTimer
сам часто ей пользуюсь и не надо заморачиваться с millis.
Бодя, вы бы сначала разъяснили свою задачу, потом что у вас не получается как задумано.
а так сидеть и додумывать что в вашем коде происходит вряд ли кто будет.
дивлюся на код та й думку гадаю, навіщо автор скетчу лайно написав.
Що? Усім лінь?
Всім доброго вечора, пробую зробити паузи через millis () але якось не вірно, один раз зчитуються покази x і y (інфрачервоних датчиків), а другий раз вже пропускаються і відразу йде рух, якщо хто може, дуже прошу поясніть в чому проблема, спасибі
if (incomingByte == '#') //опитується символ при натисканні кнопки чи написанні символа
{//Auto
x = sensor.readRangeSingleMillimeters(); //присвоюються х
mySerial.print(x);
mySerial.println();
delay(2000);
y = sensor2.readRangeSingleMillimeters(); //присвоюються y
mySerial.print(y);
mySerial.println();
delay(2000);
if ( x > y )
{
if ((abs( x - y ) > 50) && (abs( x - y ) < 2000))
{
while ((abs ( x - y ) > 50) && ((abs ( x - y ) < 2000)))// Якщо відстань зліва більша від відстані справа
{ mySerial.println ("Зліва більша");
time = millis();
delay(1000);
if (((millis() - time) > 1000) && ((millis() - time) < 2000))
delay(1000);
if (((millis() - time) > 2000) && ((millis() - time) < 3000))
{
x = sensor.readRangeSingleMillimeters(); //присвоюються х
mySerial.print(x);
mySerial.println();
delay(1000);
}
if (((millis() - time) > 4000) && ((millis() - time) < 5000))
{
y = sensor2.readRangeSingleMillimeters(); //присвоюються y
mySerial.print(y);
mySerial.println();
delay(1000);
}
if (((millis() - time) > 5000) && ((millis() - time) < 6000))
delay(1000);
if ((sensor.timeoutOccurred()) || (sensor2.timeoutOccurred())) {
mySerial.println("Ти не пройдеш! Таймаут датчика");
resetFunc(); //вызываем reset
}
else if ((!sensor.timeoutOccurred()) || (!sensor2.timeoutOccurred())) {
/* if ((abs( x - y ) > 5000 ) && (abs( x - y ) < 7000 ) ) //якщо модуль різниці зліва і справа в межах 5000 7000
{ mySerial.println ("від 7 до 5 м");
digitalWrite(IN1, HIGH);
delay(1000);
digitalWrite(IN3, HIGH);
delay(1000);
digitalWrite(IN1, LOW);
digitalWrite(IN3, LOW);
digitalWrite(IN2, HIGH);
delay(1000);
digitalWrite(IN3, HIGH);
delay(1000);
digitalWrite(IN2, LOW);
digitalWrite(IN3, LOW);
}
if ((abs( x - y ) > 2000 ) && (abs( x - y ) < 5000 ) ) //якщо модуль різниці зліва і справа в межах 2000 5000
{mySerial.println ("від 5 до 2 м");
digitalWrite(IN1, HIGH);
delay(1000);
digitalWrite(IN3, HIGH);
delay(500);
digitalWrite(IN1, LOW);
digitalWrite(IN3, LOW);
digitalWrite(IN2, HIGH);
delay(1000);
digitalWrite(IN3, HIGH);
delay(700);
digitalWrite(IN2, LOW);
digitalWrite(IN3, LOW);
}*/
if ((( x - y ) > 50) && (( x - y ) < 2000)) //якщо модуль різниці зліва і справа в межах 50 2000
{mySerial.println ("від 50 до 2 м");
digitalWrite(IN1, HIGH); // Вліво
delay(100);
digitalWrite(IN1, LOW); // Повернуло
digitalWrite(IN3, HIGH); // Вперед
delay(500);
digitalWrite(IN3, LOW); // Під'їхало
digitalWrite(IN2, HIGH); // Вправо
delay(100);
digitalWrite(IN2, LOW); // Повернуло
digitalWrite(IN3, HIGH); // Вперед
delay(200);
digitalWrite(IN3, LOW); // Під'їхало
}
if ( abs(x - y) <= 50 ){
mySerial.println ("Середина досягнута");
break;}
}
else if (abs( x - y) > 2000){
goto label;
}
}}
}
if ( y > x )
{
if ((abs( x - y ) > 50) && (abs( x - y ) < 2000))
{
while ((abs ( x - y ) > 50) && ((abs ( x - y ) < 2000)))// Якщо відстань зліва більша від відстані справа
{ mySerial.println ("Справа більша");
time = millis();
delay(1000);
if (((millis() - time) > 1000) && ((millis() - time) < 2000))
delay(1000);
if (((millis() - time) > 2000) && ((millis() - time) < 3000))
{
x = sensor.readRangeSingleMillimeters(); //присвоюються х
mySerial.print(x);
mySerial.println();
delay(1000);
}
if (((millis() - time) > 3000) && ((millis() - time) < 4000))
{
y = sensor2.readRangeSingleMillimeters(); //присвоюються y
mySerial.print(y);
mySerial.println();
delay(1000);
}
if (((millis() - time) > 4000) && ((millis() - time) < 5000))
delay(1000);
if ((sensor.timeoutOccurred()) || (sensor2.timeoutOccurred())) {
mySerial.println("Ти не пройдеш! Таймаут датчика");
resetFunc(); //вызываем reset
}
else if ((!sensor.timeoutOccurred()) || (!sensor2.timeoutOccurred())) {
/* if ((abs( y - x) > 5000 ) && (abs(y - x) < 7000 ) )
{
digitalWrite(IN2, HIGH);
delay(1000);
digitalWrite(IN3, HIGH);
delay(1000);
digitalWrite(IN2, LOW);
digitalWrite(IN3, LOW);
digitalWrite(IN1, HIGH);
delay(1000);
digitalWrite(IN3, HIGH);
delay(1000);
digitalWrite(IN1, LOW);
digitalWrite(IN3, LOW);
}
if ((abs( y - x ) > 2000 ) && ( abs( y - x ) < 5000 ) )
{
digitalWrite(IN2, HIGH); //Вліво
delay(200);
digitalWrite(IN3, HIGH); // Вперед
delay(500);
digitalWrite(IN2, LOW); //Повернуло
digitalWrite(IN3, LOW); // Під'їхало
digitalWrite(IN1, HIGH); //Вправо
delay(200);
digitalWrite(IN3, HIGH); // Вперед
delay(700);
digitalWrite(IN1, LOW); //Повернуло
digitalWrite(IN3, LOW); // Під'їхало
}*/
if ((abs( y - x ) > 50 ) && ( abs(y - x) < 2000 ) )
{
mySerial.println ("від 50 до 2 м");
digitalWrite(IN2, HIGH); //Вправо
delay(100);
digitalWrite(IN2, LOW); //Повернуло
digitalWrite(IN3, HIGH); // Вперед
delay(400);
digitalWrite(IN3, LOW); // Під'їхало
digitalWrite(IN1, HIGH); //Вліво
delay(100);
digitalWrite(IN2, LOW); //Повернуло
digitalWrite(IN3, HIGH); // Вперед
delay(200);
digitalWrite(IN1, LOW); //Повернуло
digitalWrite(IN3, LOW); // Під'їхало
}
}
if ( abs (x - y) <= 50 ){
mySerial.println ("Середина досягнута");
break;}
}}
else if (abs( x - y) > 2000){
goto label;
}}}
те як працювала програма нижче:
1156
204
1134
623
Зліва більша
від 50 до 2 м
Зліва більша
від 50 до 2 м
Зліва більша
від 50 до 2 м
Зліва більша
від 50 до 2 м
Зліва більша
від 50 до 2 м
Зліва більша
від 50 до 2 м
Зліва більша
від 50 до 2 м
Зліва більша
від 50 до 2 м
Зліва більша
від 50 до 2 м
Зліва більша
від 50 до 2 м
Зліва більша
від 50 до 2 м
Зліва більша
від 50 до 2 м
00
01
02
03
04
addresses set