if(milis) and for(i++)

fanat.arduino
Offline
Зарегистрирован: 10.11.2019
unsigned long t;
void setup() {
 Serial.begin(9600);

}

void loop() 
{
  if (millis() - t > 1000)  
  for (int i = 1; i < 7; i++)

 
{
    
    Serial.println(i);
     t = millis();  
}
}

Доброго времени суток. Столкнулся с такой проблемой, надо чтоб он выводил, числа до 7, с перерывом в одну секунду, но он выводит числа до 7, и начинает заново. Как решить ума не прилажу, подскажите пожалуйста, спасибо заранее.

b707
Offline
Зарегистрирован: 26.05.2017

процедура loop - это цикл, когда она доходит до конца - ее выполнение начинается сначала

Варианта решения проблемы две - вынести ваш код из loop например в setup (он выполняется один раз) или предусмотреть в программе переменную, которая запоминалы бы, что цикл for уже исполнен и второй раз его запускать не надо

inspiritus
Offline
Зарегистрирован: 17.12.2012

надо чтоб он выводил, числа до 7, с перерывом в одну секунду

а потом что? Стоп - или повторить или что еще ?

ЕвгенийП
ЕвгенийП аватар
Offline
Зарегистрирован: 25.05.2015

Но в коде-то написано выводить все семь подряд без всякого интервала.

Kakmyc
Offline
Зарегистрирован: 15.01.2018
unsigned long t;
int i=1;
void setup() {
 Serial.begin(9600);

}

void loop() 
{
if (millis() - t > 1000&&i<=7)  {
Serial.println(i);
i++
t = millis();  
}
}

Значит нужен не цикл for, а просто по условиям временным выполнять: Serial.println(i); i++; t=millis();

Примерно так