помогите реализовать действие в куске кода

neid86@gmail.com
Offline
Зарегистрирован: 28.10.2014

Всем доброго вечера! работаю сейчас над проектом, смысл заключается - есть кусок кода, который запускает 4-х фазный шаговый двигатель, но не могу реализовать в этой же функции что бы управляла еще двумя портами Arduino Uno. Т.е. включил двигатель, и через секунду перевел два порта в режим HIGH, а через определенно время t (примеру 1 мин), перевел опять в LOW. Реализовал все уже, настройка скорости врещения двигателя и время t, но в это у меня запара получилась, помоги кто чем может, свежем взглядом со стороны. Двигатель запускаю через <AccelStepper.h>

void goTo()
{ lcd.clear();
  lcd.setCursor(0,0);
  lcd.print("Press Select");
  
  if (key == 4) { //если нажата кнопка 4
  
        isRun = 1 - isRun; //значение isRun будет равно 1, т.к. по умолчанию 0
        if (isRun == 1) {  //елси значение равно 1
          lcd.clear();
          lcd.print("+++ Running +++ "); //печатаем на жк "начало процесса"
          stepper1.runSpeed(); //запускаем двигатель
                 
        } else { //в противном случае
          lcd.print("    Stopped     ");  //печатаем "стоп" 
        }
    
      }
}

 

yul-i-an
yul-i-an аватар
Offline
Зарегистрирован: 10.12.2012

В основном цикле заведите два счетчика (мигаем без delay). При выработке первого счетчика проверяйте флаг isRun если 1 то выполняете действие (включаете порты). Со вторым счетчикомтоже самое.

neid86@gmail.com
Offline
Зарегистрирован: 28.10.2014

мигаем без delay - с помошью milis()?

yul-i-an
yul-i-an аватар
Offline
Зарегистрирован: 10.12.2012

http://arduino.ru/tutorials/BlinkWithoutDelay
Как только включаете д кино микро контроллер начинает счет времени которое доступно по millis.
Если хотите засеч время от какого то события, то по факту события приравниваете текущее значение millis к переменной и в основном цикле проверяет е разницу между этой переменной и текущим millis если она >= нужному интервала то вызывать необходимое действие.

neid86@gmail.com
Offline
Зарегистрирован: 28.10.2014

Спасибо за пример! Обощелся фунцией MsTimer2, очень занятная штука и минимум настройки, могу скинуть пример кода...