Цикл, работающий параллельйно всей программе, помогите!

Тема в разделе "Arduino & Shields", создана пользователем Nigga, 16 мар 2016.

Метки:
  1. Nigga

    Nigga Нуб

    Некое устройство будет управляться с помощью блютуз с телефона. По такоему признаку, нажал кнопку - отправилась команда, держишь кнопку- это команда отправляется постоянно.
    Нужно сделать так, что бы пи получении какой-либо команды, пускай будет "P", у меня начинали крутиться сервы. При получении другой команды, переставали. Мне главное сделать так, что вот послал команду, сервы начали крутиться постоянно, но не мешали основной программе. Это возможно сделать? Помогите, а то туплю серьезно..
     
  2. Megakoteyka

    Megakoteyka Оракул Модератор

    Сервы постоянного вращения или угловые?
     
  3. CryNET

    CryNET Гик

    Посмотрите пример BlinkWithoutDelay...
    По сути в тело void loop() необходимо положить несколько главных функций, которые постоянно проверялись и исполнялись контроллером, типо:

    Код (C++):
    void loop(){
       func1();
       func2();
       func3();
    }
     
    P.S. Как таковой "многопоточности" нету (как в том же ПК), её можно только симулировать...
     
  4. Onkel

    Onkel Гуру

    ну поскольку работу сервы можно обеспечить одним- единственным прерыванием по таймеру, то можно считать ее работу параллельной. У меня так 8 серв на одном таймере крутятся - каждые 4 мС в таймер пишется соотв. значение из массива 8 unsigned char, выставляется соотв. пин в 1, через это значение прерывание по таймеру обнуляет и получается импульс на серву, итого 8 тактов на одну серву.
     
  5. CryNET

    CryNET Гик

    Извините, можете показать простой пример?