помогите реализовать действие в куске кода
- Войдите на сайт для отправки комментариев
Втр, 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, очень занятная штука и минимум настройки, могу скинуть пример кода...