Добрый день граждане-товарищи сочувствующие и мимо проходящие. Пытаюсь сделать свет в курятнике, типа рассвет закат. Собрал платку на симисторе. Скетч из тырнета приладил. Само медленное угасание и зажигание проблем не вызывает. А вот управление ни в голове ни в ардуино не видится. Т.Е. Мне надо чтобы при замыкании кнопки он начал цикл рассвет и продолжал гореть пока кнопка не разомкнется и начался цикл закат и до смены . Помогите хоть советом как реализовать . Сейчас после ресета он постоянно выполняет цикл тот или этот в зависимости от состояния кнопки в момент ресета. Понятно что без рейтинга ибо очень надо. Птицы, говорят мрут от резкого включения освещения. Также не понял как вставить код не вставляя код в пост поэтому.... Простите извините минусите.
Скетч вот:
int AC_LOAD = 3; // Выход для управления семистором
int ButPin = 9;
volatile int dimming = 128; // Уровень яркости (0-128) 0 = ON, 128 = OFF
void setup()
{
pinMode(AC_LOAD, OUTPUT); // Пин на выход
attachInterrupt(0, zero_crosss_int, RISING); // Установить прерывание при переходе сетевого напряжжения через "0"
}
void zero_crosss_int() // функцию, вызываемая при пересечении нуля, для регулировки яркостью
{
// Рассчет угла включения :: 50Hz-> 10ms (1/2 цикла)
// (10000us - 10us) / 128 = 75 (приблизительно)
int dimtime = (75*dimming);
delayMicroseconds(dimtime); // Период включенного состояния
digitalWrite(AC_LOAD, HIGH); // Включаем симистор
delayMicroseconds(20); // triac On propogation delay
digitalWrite(AC_LOAD, LOW); // Выключаем симистор
}
void loop()
{
if(digitalRead(ButPin) == HIGH)
{
dimming = 120;
delay(500);
dimming = 117;
delay(500);
dimming = 115;
delay(500);
dimming = 113;
delay(500);
dimming = 110;
delay(500);
dimming = 107;
delay(500);
dimming = 106;
delay(500);
dimming = 104;
delay(500);
dimming = 102;
delay(500);
dimming = 100;
delay(500);
dimming = 98;
delay(500);
dimming = 96;
delay(500);
dimming = 94;
delay(500);
dimming = 92;
delay(500);
dimming = 90;
delay(500);
dimming = 88;
delay(500);
dimming = 86;
delay(500);
dimming = 84;
delay(500);
dimming = 82;
delay(500);
dimming = 80;
delay(500);
dimming = 78;
delay(500);
dimming = 76;
delay(500);
dimming = 74;
delay(500);
dimming = 72;
delay(500);
dimming = 70;
delay(500);
dimming = 68;
delay(500);
dimming = 66;
delay(500);
dimming = 64;
delay(500);
dimming = 62;
delay(500);
dimming = 60;
delay(500);
dimming = 58;
delay(500);
dimming = 56;
delay(500);
dimming = 54;
delay(500);
dimming = 52;
delay(500);
dimming = 50;
delay(500);
dimming = 48;
delay(500);
dimming = 46;
delay(500);
dimming = 44;
delay(500);
dimming = 42;
delay(500);
dimming = 40;
delay(500);
dimming = 38;
delay(500);
dimming = 36;
delay(500);
dimming = 34;
delay(500);
dimming = 32;
delay(500);
dimming = 30;
delay(500);
dimming = 28;
delay(500);
dimming = 26;
delay(500);
}
else
{
dimming = 26;
delay(500);
dimming = 28;
delay(500);
dimming = 30;
delay(500);
dimming = 32;
delay(500);
dimming = 34;
delay(500);
dimming = 36;
delay(500);
dimming = 38;
delay(500);
dimming = 40;
delay(500);
dimming = 42;
delay(500);
dimming = 46;
delay(500);
dimming = 48;
delay(500);
dimming = 50;
delay(500);
dimming = 52;
delay(500);
dimming = 54;
delay(500);
dimming = 56;
delay(500);
dimming = 58;
delay(500);
dimming = 60;
delay(500);
dimming = 62;
delay(500);
dimming = 64;
delay(500);
dimming = 66;
delay(500);
dimming = 68;
delay(500);
dimming = 70;
delay(500);
dimming = 72;
delay(500);
dimming = 74;
delay(500);
dimming = 76;
delay(500);
dimming = 78;
delay(500);
dimming = 80;
delay(500);
dimming = 82;
delay(500);
dimming = 84;
delay(500);
dimming = 86;
delay(500);
dimming = 88;
delay(500);
dimming = 90;
delay(500);
dimming = 92;
delay(500);
dimming = 94;
delay(500);
dimming = 96;
delay(500);
dimming = 98;
delay(500);
dimming = 100;
delay(500);
dimming = 102;
delay(500);
dimming = 103;
delay(500);
dimming = 104;
delay(500);
dimming = 106;
delay(500);
dimming = 108;
delay(500);
dimming = 112;
delay(500);
dimming = 118;
delay(500);
dimming = 122;
delay(500);
dimming = 126;
delay(500);
dimming = 128;
delay(500);
}
}