Помогите со скетчем в ардуино!

Добрый день граждане-товарищи сочувствующие и мимо проходящие. Пытаюсь сделать свет в курятнике, типа рассвет закат. Собрал платку на симисторе. Скетч из тырнета приладил. Само медленное угасание и зажигание проблем не вызывает.  А вот управление ни в голове ни в ардуино не видится. Т.Е. Мне надо чтобы при замыкании кнопки он начал цикл рассвет и продолжал гореть пока кнопка не разомкнется и начался цикл закат и до смены . Помогите хоть советом как реализовать . Сейчас после ресета он постоянно выполняет цикл тот или этот в зависимости от состояния кнопки в момент ресета. Понятно что без рейтинга ибо очень надо. Птицы, говорят мрут от резкого включения освещения. Также не понял как вставить код не вставляя код в пост поэтому.... Простите извините минусите.

Скетч вот:


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);

}

}

Arduino & Pi

1.4K постов20.6K подписчик

Добавить пост

Правила сообщества

В нашем сообществе запрещается:

• Добавлять посты не относящиеся к тематике сообщества, либо не несущие какой-либо полезной нагрузки (флуд)

• Задавать очевидные вопросы в виде постов, не воспользовавшись перед этим поиском

• Выкладывать код прямо в посте - используйте для этого сервисы ideone.com, gist.github.com или схожие ресурсы (pastebin запрещен)

• Рассуждать на темы политики

• Нарушать установленные правила Пикабу