вот наброски, но дальше я не понимаю
Код: Выделить всё
#include <TimerOne.h>
#include <StepDirDriver.h>
#include "IRremote.h"
int receiver = 6;
IRrecv irrecv(receiver);
decode_results results;
StepDirDriver myMotor(10, 11, 12); // создаем объект типа StepDirDriver, задаем выводы для сигналов
unsigned int timeCounter; // счетчик времени
byte md; // режим: 0 - вращение против ч.с., 1 - пауза, 2 - вращение против ч.с., 3 - пауза
void setup() {
Serial.begin(9600);
irrecv.enableIRIn();
Serial.println("Enabled IRin");
Timer1.initialize(250); // инициализация таймера 1, период 250 мкс
Timer1.attachInterrupt(timerInterrupt, 160); // задаем обработчик прерываний
myMotor.setMode(0, false); // шаговый режим, без фиксации при остановке
myMotor.setDivider(10); // делитель частоты 10 (1 оборот в сек)
md = 0; // начальный режим
myMotor.step(300); // начальный запуск
}
void loop() {
if (irrecv.decode(&results))
{ Serial.println(results.value, HEX);
{
switch(results.value)
{
case 0xBF9B64:
if (md == 0) {
// 2 оборота по часовой стрелке
if (myMotor.readSteps() == 0)
md = 1;
timeCounter = 0;
}
}
}
}
}
//-------------------------------------- обработчик прерывания 0,25 мс
void timerInterrupt() {
myMotor.control(); // управвление двигателем
timeCounter++; // счетчик времени
}