Форум обсуждения систем  

Вернуться   Форум обсуждения систем "Умный дом", проектов Ардуино, OpenWRT и других DIY устройств > Форум умного дома > Сделай сам

 
 
Опции темы Поиск в этой теме Опции просмотра
Старый 07.09.2012, 23:30   #1
Admin
Administrator
 
Аватар для Admin
 
Регистрация: 12.04.2010
Адрес: Москва
Сообщений: 9,616
Вес репутации: 9820
Admin has a brilliant futureAdmin has a brilliant futureAdmin has a brilliant futureAdmin has a brilliant futureAdmin has a brilliant futureAdmin has a brilliant futureAdmin has a brilliant futureAdmin has a brilliant futureAdmin has a brilliant futureAdmin has a brilliant futureAdmin has a brilliant future
По умолчанию Многозадачность в Arduino

Распакуйте библиотеку leOS и скопируйте ее в папку libraries
Краткое описание библиотеки:

Что бы добавить задачу, нужно вызвать метод:
myOS.addTask (yourFunction, interval);
Минимальный интервал вызова задачи 1мс

Чтобы приостановить задачу, просто вызовите следующий метод:
myOS.pauseTask (yourFunction);

Вы можете перезапустить задачу:
myOS.restartTask (yourFunction);

Чтобы удалить задачу, вызовите следующий метод:
myOS.removeTask (yourFunction);

Чтобы изменить интервал времени выполняемой задачи, просто вызовите modifyTask метод с новым временным интервалом:
myOS.modifyTask(yourFunction, newInterval);

Интересной особенностью является возможность запуска одноразовой задачи, которая будет выполнена только один раз:
myOS.addTask(yourFunction, interval, ONETIME);

Пример кода многозадачности в котором четыре светодиода мигают с разной частотой.
PHP код:
#include "leOS.h" 
leOS myOS;  //создать экземпляр класса

#define LED0 11 //светодиоды
#define LED1 12
#define LED2 13
#define LED3 14

byte led0Status 0;
byte led1Status 0;
byte led2Status 0;
byte led3Status 0;

void setup()
{
    
myOS.begin();         //инициализация
    
pinMode(LED0OUTPUT);
    
pinMode(LED1OUTPUT);
    
pinMode(LED2OUTPUT);
    
pinMode(LED3OUTPUT);
    
    
myOS.addTask(flashLed1250);//добавить задачу с интервалом выполнения через 250мс
    
myOS.addTask(flashLed2500);//добавить задачу с интервалом выполнения через 500мс 
    
myOS.addTask(flashLed3750);//добавить задачу с интервалом выполнения через 750мс
}

void loop() 
{
    
digitalWrite(LED0led0Status);
    
led0Status = ~led0Status;    
    
delay(1000);
}

void flashLed1() 
{
    
led1Status=~led1Status;
    
digitalWrite(LED1led1Status);
}

void flashLed2() 
{
    
led2Status=~led2Status;
    
digitalWrite(LED2led2Status);
}

void flashLed3() 
{
    
led3Status=~led3Status;
    
digitalWrite(LED3led3Status);

P.S.
Появилась вторая версия LeOS
Скачать
Вложения
Тип файла: rar leOS.rar (6.7 Кб, 2134 просмотров)
Тип файла: zip leOS2_2.3.1.zip (1.91 Мб, 734 просмотров)
Admin вне форума   Ответить с цитированием
 


Здесь присутствуют: 1 (пользователей: 0 , гостей: 1)
 
Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск
Опции просмотра

Ваши права в разделе
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения

BB коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.

Быстрый переход


Текущее время: 18:20. Часовой пояс GMT +3.


Powered by vBulletin® Version 3.8.5
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd. Перевод: zCarot
Яндекс.Метрика