![]() |
![]() |
#1 |
Administrator
Регистрация: 12.04.2010
Адрес: Москва
Сообщений: 9,618
Вес репутации: 9824 ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() |
![]()
Распакуйте библиотеку 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 код:
Появилась вторая версия LeOS Скачать |
![]() |
![]() |
![]() |
#2 |
Senior Member
Регистрация: 20.01.2013
Адрес: Уфа
Сообщений: 444
Вес репутации: 800 ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() |
![]()
Возник вот такой вопрос, если во время выполнения периодической задачи вызвать её одноразовое исполнение - периодическая задача остановится? Вот как на примере
PHP код:
|
![]() |
![]() |
![]() |
#3 |
Administrator
Регистрация: 12.04.2010
Адрес: Москва
Сообщений: 9,618
Вес репутации: 9824 ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() |
![]()
Вызывать можно из любого места кода вот так:
current_meter(); Пример PHP код:
|
![]() |
![]() |
![]() |
#4 |
Senior Member
Регистрация: 20.01.2013
Адрес: Уфа
Сообщений: 444
Вес репутации: 800 ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() |
![]()
Продолжаю терзать подпрограммы
PHP код:
|
![]() |
![]() |
![]() |
#5 |
Junior Member
Регистрация: 01.04.2013
Сообщений: 7
Вес репутации: 0 ![]() |
![]()
А скажите пожалуйста переменные одного задания доступны в другом?
|
![]() |
![]() |
![]() |
#6 |
Administrator
Регистрация: 12.04.2010
Адрес: Москва
Сообщений: 9,618
Вес репутации: 9824 ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() |
![]()
Если они объявлены глобально, то конечно же доступны
|
![]() |
![]() |
![]() |
#7 |
Junior Member
Регистрация: 01.04.2013
Сообщений: 7
Вес репутации: 0 ![]() |
![]()
В сериал соединении ничего не пишет.
Если в основной цикл данный код вставляешь все работает. А через многозадачность нет ((( Экран сериал соединения пустой. Код:
#include <OneWire.h> #include <DallasTemperature.h> #include <Wire.h> #include "DS1307.h" #include <EEPROM.h> #include <leOS.h> leOS myOS; DS1307 clock; #define ONE_WIRE_BUS 10 OneWire oneWire(ONE_WIRE_BUS); DallasTemperature sensors(&oneWire); void setup() { Serial.begin(9600); myOS.begin(); myOS.addTask(dallas, 5000); sensors.begin(); clock.begin(); } void loop() { delay (100); } void dallas() { sensors.requestTemperatures(); int T1 = sensors.getTempCByIndex(0); int T2 = sensors.getTempCByIndex(1); int T3 = sensors.getTempCByIndex(2); clock.getTime(); Serial.print(clock.dayOfMonth, DEC); Serial.print("."); Serial.print(clock.month, DEC); Serial.print("."); Serial.print(clock.year+2000, DEC); Serial.print(";"); Serial.print(clock.hour, DEC); Serial.print(":"); Serial.print(clock.minute, DEC); Serial.print(":"); Serial.print(clock.second, DEC); Serial.print(";"); Serial.print("T1="); Serial.print(T1); Serial.print(";"); Serial.print("T2="); Serial.print(T2); Serial.print(";"); Serial.print("T3="); Serial.print(T3); Serial.println(";"); } |
![]() |
![]() |
![]() |
#8 |
Senior Member
Регистрация: 20.01.2013
Адрес: Уфа
Сообщений: 444
Вес репутации: 800 ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() |
![]()
Появился второй вариант библиотеки http://www.leonardomiliani.com/2012/...duino/?lang=en. Основное отличие - теперь библиотека не использует Timer 2 и имеет меньше проблем совместимости. Теперь используется сторожевоц таймер и добавлена функция по перезагрузке микроконтороллера
|
![]() |
![]() |
![]() |
Здесь присутствуют: 1 (пользователей: 0 , гостей: 1) | |
|
|