02.01.2017, 17:49
|
#11
|
Administrator
Регистрация: 12.04.2010
Адрес: Москва
Сообщений: 9,616
Вес репутации: 9821
|
Re: Многоканальный Dimmer, работающий в фоновом режиме
Цитата:
Сообщение от Ilya
Здравствуйте.
Пытаюсь завести диммер из шапки с Arduino UNO.
Взял код из первого поста с малейшими изменениями, которые отражены в комментариях:
PHP код:
#include <CyberLib.h> volatile uint8_t tic, Dimmer1, Dimmer2, Dimmer3; uint8_t data;
void setup() { D5_Out; D6_Out; D13_Out; // Заменил D4 на D13 для отслеживания изменений на диоде L D5_Low; D6_Low; D13_Low; // т.к. D4 на uno не поддерживает pwm D2_In; attachInterrupt(0, detect_up, LOW); StartTimer1(halfcycle, 40); 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(0, detect_down, HIGH); UART_SendByte('U'); // Отладочный дамп для отслеживания срабатывания прерывания }
void detect_down() { StopTimer1(); D5_Low; D6_Low; D13_Low; // Заменил D4 на D13 tic=0; attachInterrupt(0, detect_up, LOW); 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, который, как видно из кода, всегда должен быть погашен, лампа всё так же горит
Помогите, пожалуйста, понять, что же я мог сделать не так?
|
Уберите свои изменения
и все будет работать
|
|
|