бррр... тогда я не понял..
куда именно надо ставить один мост? можно схему.. или напишите между какими детальками..
Вид для печати
бррр... тогда я не понял..
куда именно надо ставить один мост? можно схему.. или напишите между какими детальками..
Вообщем пипец... нету ти датчика тока ни 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() не переходит. Почему?
И не перейдет, потому как в настройке прерывания прописана функция FrontUp
А вообще лучше весь код посмотреть из этого куска ничего не видно
Код можно сказать тот же что в первом посте:
Вообщем это первая проблема...Код:#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); // выключение симистора
Вот как раз интересует с плавным включением... все для этого изначально и делалось