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

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

 
 
Опции темы Поиск в этой теме Опции просмотра
Старый 21.07.2015, 07:22   #11
Arhat109
Senior Member
 
Регистрация: 14.06.2015
Адрес: СССР
Сообщений: 122
Вес репутации: 0
Arhat109 is an unknown quantity at this point
По умолчанию Re: Ускоряем и улучшаем скетчи. Ещё одна библиотека.

А вот так будет выглядеть классический блинк в автоматном стиле:
Код:
// ============================== описание КА "blink" =================================== //
// Собственно содержимое Arhat.lib::TSC_Blink/TSC_Blink.ino
 
/*
 * Светодиод - как конечный автомат имеет состояния:
 *     LED_OFF (выключен, ожидание включения)
 *     LED_ON  (включен, ожидание выключения)
 *
 * Событием, изменяющим состояние является счечик времении.
 */
 
#define _ARHAT_ 1
#include "arhat.h"
 
#define pinLed            13 // ножка платы со встроенным светодиодом
#define WAIT_ON         1000 // длительность состояния "ожидание выключения" мсек.
#define WAIT_OFF        1000 // длительность состояния "ожидание включения" мсек.
 
// Таблица переходов нашего конечного автомата (нумерация с 0!):
TSC_Step        ledTable[2] = {
   { 1, to_on, WAIT_ON}         // "выключен": включить, перейти к состоянию "включен" с задержкой
  ,{ 0, to_off, WAIT_OFF}       // "включен": всё наоборот, выключаем, переходим к пред. состоянию.
};
 
// Методы, исполняемые при изменении состояния КА:
void to_on() { digitalWrite(pinLed, HIGH); }     // .. включаем светодиод
void to_off(){ digitalWrite(pinLed, LOW); }      // .. выключаем светодиод
 
TSC_Control     ledControl;     // тут будем хранить текущие данные этого КА
 
// используем это для начальной настройки конечного автомата (далее КА)
void setup()
{              
  pinMode(pinLed, OUTPUT);                        // ножку светодиода настраиваем как "это выход"
  tsc_init(&ledControl, ledTable, 0, WAIT_OFF);  // добавляем КА и задаем его начальное состояние
}
 
// просто вызываем выполнение текущего шага КА, если получится.
void loop()
{
  tsc_step( &ledControl );
}
... Фактически всё "программирование" свелось к созданию таблицы состояний и переходов.
Arhat109 вне форума   Ответить с цитированием
 

Метки
arduino mega 2560, скетч, ардуино


Здесь присутствуют: 1 (пользователей: 0 , гостей: 1)
 

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

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

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


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


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