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

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

 
 
Опции темы Поиск в этой теме Опции просмотра
Старый 15.04.2015, 08:29   #1
Prana
Junior Member
 
Регистрация: 17.03.2015
Сообщений: 27
Вес репутации: 0
Prana is an unknown quantity at this point
По умолчанию Модуль "Light Switch"

Модуль для удаленного управления освещением или другими нагрузками

Позволяет реализовать следующие варианты:
1. Выключатель
2. Кнопка без фиксации
3. Триггер (спусковой курок)
4. Диммер

Не забудьте установить драйвер для ардуины

Конфигурировать пины можно в веб интерфейсе модуля, для этого Вам не придется перепрошивать Arduino
Вам достаточно один раз прошить ниже приведенный скетч и подключать нагрузки на любые пины.
Конфигурируете уже все эти пины в самом модуле
Выбор пинов возможен в диапазоне от D0 до D99

Модуль сохраняет настройки, при этом заново генерируется фаил index.cgi, учитывайте, если планируете ручные изменения файла.
Обратная связь пока не реализована, это будет сделано в следующей версии. Данная версия не устанавливает БД, она "легкая".

Для диммера пока только используется пины с поддержкой ШИМ
Для Arduino Nano, UNO и другие на контроллере Atmega88/168/328, пины D3, D5, D6, D9, D10 и D11
Для Arduino Mega, пины начиная с D2 по D13

Код для Arduino
PHP код:
void setup()   
{   
  
Serial.begin(57600);    
}  

void loop()  
{  
    if (
Serial.available()>7)  
    {    
       
uint8_t inByte Serial.read(); 
        if(
inByte == 'D'
        {   
          
inByte Serial.read(); 
          
SortIdev(inByte); 
        }     
    } 


void SortIdev(uint8_t idev

   
  
uint8_t pinDec = (Serial.read()-48)*10;  
  
uint8_t pinUnit = (Serial.read()-48);  
  
uint8_t pin pinDec pinUnit;   
  
uint8_t separator Serial.read();    
   
 if(
separator == '='
 { 
   
uint8_t statHund = (Serial.read()-48)*100
   
uint8_t statDec = (Serial.read()-48)*10
   
uint8_t statUnit Serial.read()-48;  
   
uint8_t stat statHund statDec statUnit;  
    
  switch (
idev)  
  { 
    case 
'S'//выключатель 
      
pinMode(pinOUTPUT);  
      
digitalWrite(pinstat);    
     break; 

    case 
'D'//Dimmer 
      
pinMode(pinOUTPUT);  
      
analogWrite(pinstat);  
     break;    
      
    case 
'B'//кнопка 
      
pinMode(pinOUTPUT);
      if(
stat<2)
       {
         
digitalWrite(pinstat);
       } else 
        if(
stat==2)
         {  
           for (
int i=010i++)
           {
           
digitalWrite(pin1);
           
delay(50);
           
digitalWrite(pin0);
           
delay(50);
           }  
         } 
     break;         
   } 
 }  

Название: light.jpg
Просмотров: 4707

Размер: 35.2 Кб

поведение выключателя: каждое нажатие включает, либо выключает пин, что отображается в интерфейсе
поведение кнопки: включается при нажатии, выключается при отпускании. Если нажимать кнопку на планшете или смартфоне, то "удержания" нажатой кнопки не происходит, нагрузка просто "мигнет"
поведение триггера: при нажатии на пин отправляется 002, обработка зависит от скетча
поведение диммера: значение меняется от 0 до 255, на странице же значение отображается в процентах (0-100%)

важные особенности-ограничения реализации:
1. Таймер задержки работает на стороне браузера, поэтому нельзя уходить со страницы, если нажали кнопку. Одновременно можно запускать только один таймер, несколько - будут глючить.
2. Считывания состояния портов нет.

Последний раз редактировалось Prana; 21.04.2015 в 07:28.
Prana вне форума   Ответить с цитированием
 


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

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

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

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


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


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