помогите реализовать действие в куске кода
- Войдите на сайт для отправки комментариев
Втр, 28/10/2014 - 22:45
Всем доброго вечера! работаю сейчас над проектом, смысл заключается - есть кусок кода, который запускает 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 "); //печатаем "стоп" } } }
В основном цикле заведите два счетчика (мигаем без delay). При выработке первого счетчика проверяйте флаг isRun если 1 то выполняете действие (включаете порты). Со вторым счетчикомтоже самое.
мигаем без delay - с помошью milis()?
http://arduino.ru/tutorials/BlinkWithoutDelay
Как только включаете д кино микро контроллер начинает счет времени которое доступно по millis.
Если хотите засеч время от какого то события, то по факту события приравниваете текущее значение millis к переменной и в основном цикле проверяет е разницу между этой переменной и текущим millis если она >= нужному интервала то вызывать необходимое действие.
Спасибо за пример! Обощелся фунцией MsTimer2, очень занятная штука и минимум настройки, могу скинуть пример кода...