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);
}
но последовательный монитор показывает только нули. что делать?
@Peouse Dutta, 👍-2
1 ответ
Лучший ответ:
▲ 3
millis() - current
всегда будет 0
, потому что current
всегда устанавливается в значение millis()
прямо перед тем, как вы его сравните. Поэтому он никогда не будет равен wait
(0 не 1000), поэтому count
никогда не увеличивается.
,
@Majenko
Смотрите также:
- Как использовать SPI на Arduino?
- Как решить проблему «avrdude: stk500_recv(): programmer is not responding»?
- Как создать несколько запущенных потоков?
- Как подключиться к Arduino с помощью WiFi?
- avrdude ser_open() can't set com-state
- Как узнать частоту дискретизации?
- Что такое Serial.begin(9600)?
- Я закирпичил свой Arduino Uno? Проблемы с загрузкой скетчей на плату
то что я могу сделать, чтобы улучшить ситуацию?, @Peouse Dutta
Программируйте его с правильной логикой. Подумайте о том, что вы пытаетесь запрограммировать логически., @Majenko
Есть одна проблема. Строка
Serial.println(count);
работает нормально только внутри оператораIf
, но когда строкаSerial.println(count);
размещается вне оператораif
, она отображает только нули. Почему так происходит?, @Peouse DuttaЯ сказал вам, почему, в своем ответе. Вы вычитаете "сейчас" из "сейчас" и ожидаете, что это будет что-то иное, чем 0. "x - x = 0" и никогда не может быть ничем другим, иначе математика сломается и вселенная закончится. Вам нужно сравнить "сейчас" с **"тогда"**., @Majenko