Параллельные условия для ног

roma095
Offline
Зарегистрирован: 15.03.2015

Привет. Подскажите пожалуйста. Таким кодом я раз в 6 секунд запитываю 13 ногу. А как сделать, чтобы циклом 13 нога запитывалась раз в 6 секунд, двенадцатая раз в 20 секунд, итд?

 

void setup() {                

  pinMode(13, OUTPUT);    
}

void loop() {
  delay(6000);
  digitalWrite(13, HIGH);   
  delay(1000);             
  digitalWrite(13, LOW);   
               
}

 

dimax
dimax аватар
Offline
Зарегистрирован: 25.12.2013

roma095, пора вам забывать про delay(), и начинать дружить с функцией  millis() и оператором %,  с ними такие задачки -сущий пустяк.

void setup() {                
pinMode(13, OUTPUT);     
pinMode(12, OUTPUT);     
}
void loop() {
int x = millis()%6000;
digitalWrite(13, !(x-x%1000));
int y = millis()%20000;
digitalWrite(12, !(y-y%1000));
}

 

toc
Offline
Зарегистрирован: 09.02.2013
Gippopotam
Gippopotam аватар
Offline
Зарегистрирован: 12.09.2014

dimax пишет:

roma095, пора вам забывать про delay(), и начинать дружить с функцией  millis() и оператором %,  с ними такие задачки -сущий пустяк.

void setup() {                
pinMode(13, OUTPUT);     
pinMode(12, OUTPUT);     
}
void loop() {
int x = millis()%6000;
digitalWrite(13, !(x-x%1000));
int y = millis()%20000;
digitalWrite(12, !(y-y%1000));
}

 

Не будет Рома пользоваться вашим советом, если вы хотя бы логику не поясните.

roma095
Offline
Зарегистрирован: 15.03.2015

Спасибо за подсказку. Про millis почитаю