![]()  | 
	
| 
			
			 | 
		#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) | |
		
  | 
	
		
  |