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

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

 
 
Опции темы Поиск в этой теме Опции просмотра
Старый 05.12.2013, 00:07   #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
По умолчанию CyberWrt модуль "Dimmer"

Для примера работы с ползунками в CyberWrt выложили модуль "Dimmer"
Для работы с Arduino Nano потребуется установить модуль "Драйвер FTDI"
и прошить ардуинку кодом приведенном ниже
В примере реализовано 10-и ступенчатое управление, но ничто не мешает
подправить код и сделать регулировку от 0 до 255

Название: dimm.png
Просмотров: 8618

Размер: 2.3 Кб
PHP код:
#include <CyberLib.h> //Библиотека от Cyber-Place.ru
volatile uint8_t ticDimmer1=255;
uint8_t data;

void setup() 

  
D4_OutD3_Out;//Настраиваем порты на выход
  
D4_LowD3_High;//установить на выходах низкий уровень сигнала
  
D2_In//настраиваем порт на вход для отслеживания прохождения сигнала через ноль  
  
attachInterrupt(0detect_upLOW);  // настроить срабатывание прерывания interrupt0 на pin 2 на низкий уровень
  
StartTimer1(halfcycle40); //время для одного разряда ШИМ
  
StopTimer1(); //остановить таймер
  
UART_Init(57600); //инициализация порта
}
//********************обработчики прерываний*******************************
void halfcycle()  //прерывания таймера

  
tic++;  //счетчик  
  
if(Dimmer1 tic D4_High//управляем выходом
}

void  detect_up()  // обработка внешнего прерывания. Сработает по переднему фронту
{  
 
tic=0;             //обнулить счетчик
 
ResumeTimer1();   //запустить таймер
 
attachInterrupt(0detect_downHIGH);  //перепрограммировать прерывание на другой обработчик
}  

void  detect_down()  // обработка внешнего прерывания. Сработает по заднему фронту
{   
 
StopTimer1(); //остановить таймер
 
D4_Low;       //логический ноль на выходы
 
tic=0;       //обнулить счетчик
 
attachInterrupt(0detect_upLOW); //перепрограммировать прерывание на другой обработчик

//*************************************************************************
void loop() 
{
Start
  
if (UART_ReadByte(data))
 {
   if(
data>47 && data<59)
    {
      
data=225-(data-48)*25;
      
Dimmer1=data;
    }
 } 
End
На видео можно посмотреть как работает модуль "Dimmer"
Управление осуществляется из браузера с планшета

Admin вне форума   Ответить с цитированием
 


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

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

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

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

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


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


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