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

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

 
 
Опции темы Поиск в этой теме Опции просмотра
Старый 02.01.2017, 17:49   #11
Admin
Administrator
 
Аватар для Admin
 
Регистрация: 12.04.2010
Адрес: Москва
Сообщений: 9,616
Вес репутации: 9821
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
По умолчанию Re: Многоканальный Dimmer, работающий в фоновом режиме

Цитата:
Сообщение от Ilya Посмотреть сообщение
Здравствуйте.
Пытаюсь завести диммер из шапки с Arduino UNO.

Взял код из первого поста с малейшими изменениями, которые отражены в комментариях:
PHP код:
#include <CyberLib.h>
volatile uint8_t ticDimmer1Dimmer2Dimmer3;
uint8_t data;

void setup() 

  
D5_OutD6_OutD13_Out// Заменил D4 на D13 для отслеживания изменений на диоде L
  
D5_LowD6_LowD13_Low// т.к. D4 на uno не поддерживает pwm
  
D2_In;
  
attachInterrupt(0detect_upLOW);
  
StartTimer1(halfcycle40);
  
StopTimer1();
  
UART_Init(9600);
}

void halfcycle()

  
tic++;
  if(
Dimmer1 tic D5_High;
  if(
Dimmer2 tic D6_High;
  if(
Dimmer3 tic D13_High// Заменил D4 на D13
}

void  detect_up()
{  
 
tic=0;
 
ResumeTimer1();
 
attachInterrupt(0detect_downHIGH);
 
UART_SendByte('U'); // Отладочный дамп для отслеживания срабатывания прерывания
}  

void  detect_down()
{   
 
StopTimer1();
 
D5_LowD6_LowD13_Low// Заменил D4 на D13
 
tic=0;
 
attachInterrupt(0detect_upLOW);
 
UART_SendByte('D'); // Отладочный дамп для отслеживания срабатывания прерывания
}

void loop() 
{
Start
  Dimmer2
=255// D6
  
if(UART_ReadByte(data))
  {
    
Dimmer1=data// D5
    
Dimmer3=data// D13
  
}
End
В итоге получаю следующее:
  • консоль бешено дампит UDUDUD..., то есть делаю вывод, что прерывания отрабатывают
  • посылаю из консоли указанные в шапке параметры("Г", "d", " "):
    • Г - диод L горит с минимальной яркостью, лампа светит по максимуму
    • d - диод L горит со средней яркостью, лампа светит по максимуму
    • Символ пробела - диод L горит с максимальной яркостью, лампа все так же светит по максимуму
  • при установке диммера на D6, который, как видно из кода, всегда должен быть погашен, лампа всё так же горит

Помогите, пожалуйста, понять, что же я мог сделать не так?
Уберите свои изменения
и все будет работать
Admin вне форума   Ответить с цитированием
 


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

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

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

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


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


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