бррр... тогда я не понял..
куда именно надо ставить один мост? можно схему.. или напишите между какими детальками..
бррр... тогда я не понял..
куда именно надо ставить один мост? можно схему.. или напишите между какими детальками..
Мои проекты - Катер для рыбалки
Вообщем пипец... нету ти датчика тока ни PC814.. заказал, но будет не раньше чем на след. неделе...
Я так понял строчка:
должна обязательно быть в void setup() ?Код:attachInterrupt(0, FrontUp, RISING);
Тогда как ее отключать?
А именно, если диммер не нужен, а простое переключение лампочек, то возникает проблема. При установке на каком-то выходе уровня HIGH (к которому подключена нагрузка), то лампочка чуть мерцает и при установке LOW не выключается... Если же с 4N35 убрать ~220В, то все как нужно переключает.
P.S. To Chip, что на счет датчика тока? Есть какие-то наброски.. думаю расгребтись с этой мигалкой и попробовать что-нить на нем собрать.
Выключить прерывание можно вот так detachInterrupt(0);
Тебе привезли датчик тока?
Вот во вторник пообещали точно будет
Да, выключает, спасибо.Выключить прерывание можно вот так detachInterrupt(0);
Вопрос как включить?
attachInterrupt(0, FrontUp, RISING); - не работает. А вернее этот кусок кода:
Код:void loop() { detachInterrupt(0); delay(1000); digitalWrite(10, HIGH); delay(1000); digitalWrite(10, LOW); attachInterrupt(0, FrontUp, RISING); aaadim(); } void aaadim() { if(dimmer < 255) dimmer++; else dimmer=0; // пример уменьшения яркости лампы dim=33*dimmer; delay(50); }
Т.э. лампа на секундку вкл., затем выкл., затем через сек. вкл. и т.д.,т.э. на функцию aaadim() не переходит. Почему?
Последний раз редактировалось knyaz2020; 11.12.2011 в 14:56.
И не перейдет, потому как в настройке прерывания прописана функция FrontUp
А вообще лучше весь код посмотреть из этого куска ничего не видно
Последний раз редактировалось Chip; 11.12.2011 в 15:27.
Код можно сказать тот же что в первом посте:
Вообщем это первая проблема...Код:#include <avr/delay.h> int AC_pin = 10; // выход для симистора volatile uint16_t dim; uint8_t dimmer=0;// уровень димирования (0-255) 0 = max, 255 = min void setup() { pinMode(AC_pin, OUTPUT); attachInterrupt(0, FrontUp, RISING); //прерывание по изменению уровня с низкого на высокий } // Функция обработки прерывания на подъем void FrontUp() { detachInterrupt(0); _delay_us(dim+1000); // отсекаем лишнее digitalWrite(AC_pin, HIGH); // включить симистор _delay_us(20); // короткая пауза, чтобы обеспечить включение симистора digitalWrite(AC_pin, LOW); // выключение симистора(он выключится когда полупериод достигнет нуля) attachInterrupt(0, FrontDown, FALLING); } // Функция обработки прерывания на спад void FrontDown() { detachInterrupt(0); _delay_us(dim); // отсекаем лишнее digitalWrite(AC_pin, HIGH); // включить симистор _delay_us(20); // короткая пауза, чтобы обеспечить включение симистора digitalWrite(AC_pin, LOW); // выключение симистора(он выключится attachInterrupt(0, FrontUp, RISING); } void loop() { detachInterrupt(0); delay(1000); digitalWrite(10, HIGH); delay(1000); digitalWrite(10, LOW); attachInterrupt(0, FrontUp, RISING); aaadim(); } void aaadim() { if(dimmer < 255) dimmer++; else dimmer=0; // пример уменьшения яркости лампы dim=33*dimmer; delay(50); }
Но вот еще не могу догнать, как таким методом сделать бегущий огонь... например с трех каналов?
Напишите плз. кусок проги...
Если без плавного включения, то просто
PHP код:
digitalWrite(Lamp0, HIGH); // включить симистор
_delay_us(200); // пауза
digitalWrite(Lamp0, LOW); // выключение симистора
digitalWrite(Lamp1, HIGH); // включить симистор
_delay_us(200); // пауза
digitalWrite(Lamp1, LOW); // выключение симистора
digitalWrite(Lamp2, HIGH); // включить симистор
_delay_us(200); // пауза
digitalWrite(Lamp2, LOW); // выключение симистора
Последний раз редактировалось Chip; 15.12.2011 в 03:02.
Вот как раз интересует с плавным включением... все для этого изначально и делалось
Эту тему просматривают: 4 (пользователей: 0 , гостей: 4)