Проблема в 4-х строках
- Войдите на сайт для отправки комментариев
Вс, 19/04/2015 - 13:30
Здравствуйте! Столкнулся с непонятной проблемой. Или меня заклинило или... В общем, помогите пожалуйста разобраться, почему переменная delta растет?
#include <LiquidCrystal.h>
unsigned long moved=0,delta=0,time=0;
LiquidCrystal lcd(8, 9, 4, 5, 6, 7);
void setup() {
Serial.begin(9600);
lcd.begin(16, 2);// set up the LCD's number of columns and rows
}
void loop() {
time=millis();
if (delta<(time-moved))
{
delta=time-moved;
moved=time;
}
Serial.print(delta);
Serial.print(" ");
Serial.println(time);
lcd.setCursor(0, 0); lcd.print(delta);
}
Ответ соответствует условию задачи (которого нет): потому что этому способствует условие в строке 14.
Даже если рассуждать не зная условие задачи (а это так и есть), то, например, чем реже мы выполняем строки 16-17, тем больше растет разница между time & moved. Здесь нужно либо вынести moved=time из условия, либо что то, что известно только Вам.
Решено:
time=millis(); if (delta<(time-moved)) { delta=time-moved; } moved=time;Здесь нужно либо вынести moved=time из условия, либо что то, что известно только Вам.
Но Вы уловили условие даже без него. Спасибо.
Додумал сам %) Задача была в засекании времени. Не понимал, почему на один и тот же цикл время растет. Заклинило не слабо.
В этом варианте - измерение максимальной длительности цикла.
Бывает, всех клинит, хоть профессор, хоть студент.