Таймер для робота с ИК управлением на iskra js

Тема в разделе "Моторы, сервоприводы, робототехника", создана пользователем Кирилл Разыграев, 6 июн 2017.

  1. Привет! Помогите пж нубу. Как сделать таймер для двигателей, чтоб при нажатие кнопки на пульте, робот ехал, а при отжатие останавливался
     
  2. Tomasina

    Tomasina Сушитель лампочек Модератор

    а нужен ли тут таймер?
    Заводим глобальную переменную byte state. Значение 0 - это STOP, остальные по функционалу.
    И в коде проверки кнопок задаем ей нужное значение:
    Код (C++):
    if(key == 2343635) state = 1; // вперед
    else if(key == 4565574) state = 2; // назад
    else if(key == 9643667) state = 3; // влево
    else state = 0;
    При этом режим STOP будет при отсутствии нажатий на кнопки или потере сигнала от пульта.

    А дальше уже обслуживаем мотор(ы):
    Код (C++):
    switch(state)
    {
    case 0:
       digitalWrite(Motor1Pin, LOW);
       digitalWrite(Motor2Pin, LOW);
       break;

    case 3:
       digitalWrite(Motor1Pin, HIGH);
       digitalWrite(Motor2Pin, LOW);
       break;
    }
     
  3. akl

    akl Гуру

    Кириллу вроде надо было на джаве, но раз уж тут Си, то спрошу - не знаю как там работает ИК пульт, но если взять например блю-тус, то например при удержании кнопки в телефонном приложении, через него будет приходить некая команда примерно раз в 20 миллисекунд (может есть разные приложения, но у того что использовал я было так) - что будет происходить? приходит команда - стартует двигатель, затем 20 миллисекунд никакой команды нет - двигатель глохнет? а потом через 20мс опять стартует? или как? а если связь не стабильна и часть команд потеряется, то промежуток может быть и больше чем 20мс
     
    Последнее редактирование: 6 июн 2017
  4. Мне нужно на js
     
  5. Tomasina

    Tomasina Сушитель лампочек Модератор