millis() c начала выполняет, а потом ведет отсчет...
- Войдите на сайт для отправки комментариев
Пт, 17/01/2020 - 18:48
Всем привет!
Блин уже бошку сломал себе...
Задержки делаю типа:
if (a==1) {
if (millis()-tim>1000){tim = millis(); Serial.println("Да заработай же ты, падла!");}
}
Соответственно, печать в монитор осуществляется сразу же как только а=1, а затем уже с задержкой в 1 секунду печатает дальше.
Мне же нужно, что бы при а=1 с начала отсчитывался интервал 1с, а затем выполнялась печать.
Крутил, вертел эту функцию. В одной конструкции она работает, в другой - нет. блллл.
Подскажите что не так!
Ну, присвойте своему tim текущее значение миллиса в тот момент, когда а впервые единицей становится. Делов-то.
Вообще, непонятно. Вы девочка? Если нет, то нашли от чего голову ломать! У нормального мужика крыша может поехать только от двух вещей, и дурацких ошибок работы с миллисом среди этих вещей нет.
Это типа так сделать что ли?
if (a==1) {tim = millis(); if (millis()-tim>1000){tim = millis(); Serial.println("Да заработай же ты, падла!");} }Какой в этом смысл?
Вот мой кусок кода который работает (с начала отсчитывается пауза, а затем выполняется действие):
if (timer_10==1) { bar++; if (bar>87) {bar=0;} display.fillRect (16,21,90,15,0); display.fillRect (17,22, bar,13,1); if (millis()-tim>7000){tim = millis();IK_write=0; timer_10=0;} }Это по сути шкала загрузки на время работы которой делается пауза (7 сек), а затем закрывается окно.
Но мне нужно сделать паузу после заполнения шкалы на 100%, вывести сообщение и закрыть окно.
Вот такой кусок кода уже не работает (с начала выполняется действие - затем отсчитывается пауза):
if (timer_10==1) { bar++; int y=0; display.fillRect (16,21,90,15,0); display.fillRect (17,22, bar,13,1); if (bar>87) {bar=0;y=1;} if (y==1){display.fillRect(5,16,120,48,1); display.print ("Сохранено!"); if (millis()-tim>7000){tim = millis(); IK_write=0; timer_10=0; y=0;}} }P\S: Евгений, с аватаром поросенка, я читал тут много тем с вашим участием и наглядно осведомлен о вашем нраве поговорить ни о чем и о космосе)) Посему предлагаю не развивать сторонние от топика темы (мальчик, девочка, настоящий мужик и т. д. и т. п.). Спасибо!))
Вот в эту строку:
if (bar>87) {bar=0;y=1;}вставьте внутри блока tim=millis()
if (bar>87) {bar=0;y=1;tim=millis();}Вот в эту строку:
if (bar>87) {bar=0;y=1;}вставьте внутри блока tim=millis()
if (bar>87) {bar=0;y=1;tim=millis();}Да, это работает. Спасибо! А в чем логика? Видимо голова моя уже под конец пятницы вообще перестала думать)))
И чем эта конструкция отличается от той, что я приводил:
if (bar>87) {bar=0;y=1;} if (y==1) {tim=millis(); }Ведь по сути это одно и то же...
И чем эта конструкция отличается от той, что я приводил:
if (bar>87) {bar=0;y=1;} if (y==1) {tim=millis(); }Ведь по сути это одно и то же...
что-то я не вижу, где вы такое приводили.
Это типа так сделать что ли?
if (a==1) {tim = millis(); if (millis()-tim>1000){tim = millis(); Serial.println("Да заработай же ты, падла!");} }Какой в этом смысл?
Вот.
ну что, так и не поняли. "какой в этом смысл"?