Serial.print показывает только "0"

Это мой код для таймера. Моя цель — увеличивать count каждую секунду.

unsigned int count = 0;
int wait = 1000;

void setup()
{
  Serial.begin(9600);
}
void loop()
{
  long current = millis();
  if((millis() - current) == wait)
  {
    count++;
  }
  Serial.println(count);
}

но последовательный монитор показывает только нули. что делать?

, 👍-2


1 ответ


Лучший ответ:

3

millis() - current всегда будет 0, потому что current всегда устанавливается в значение millis() прямо перед тем, как вы его сравните. Поэтому он никогда не будет равен wait (0 не 1000), поэтому count никогда не увеличивается.

,

то что я могу сделать, чтобы улучшить ситуацию?, @Peouse Dutta

Программируйте его с правильной логикой. Подумайте о том, что вы пытаетесь запрограммировать логически., @Majenko

Есть одна проблема. Строка Serial.println(count); работает нормально только внутри оператора If, но когда строка Serial.println(count); размещается вне оператора if, она отображает только нули. Почему так происходит?, @Peouse Dutta

Я сказал вам, почему, в своем ответе. Вы вычитаете "сейчас" из "сейчас" и ожидаете, что это будет что-то иное, чем 0. "x - x = 0" и никогда не может быть ничем другим, иначе математика сломается и вселенная закончится. Вам нужно сравнить "сейчас" с **"тогда"**., @Majenko