19

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

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

Скетч вот:


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.5K поста20.8K подписчика

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

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

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

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

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

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

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

Вы смотрите срез комментариев. Показать все
5
Автор поста оценил этот комментарий

Какой индусский код...
dimming = 26;

delay(500);

=>
(в цикл)
for i=26 to 128 step 2 do // i = 128 downto 26 step 2

begin

dimming = i;
delay(500);
end
endfor



Поставьте генератор (из схемы часов любых) и вообще по времени включайте/выключайте.
раскрыть ветку (7)
1
Автор поста оценил этот комментарий

Я похоже вообще не вдупляю. Это оптимизация кода? Но не решение. За решение могу отблагодарить (не сочтите за грубость) мне тоже кажется, что Я иногда индус. 

раскрыть ветку (3)
1
Автор поста оценил этот комментарий

Да, оптимизация. Решение - техническое. Если программно то костылить.

раскрыть ветку (2)
0
DELETED
Автор поста оценил этот комментарий
Зачем программно костылить? Берем диммер, управляем ардуинкой с модулем часов реального времени, профит...
раскрыть ветку (1)
1
Автор поста оценил этот комментарий

Так я предложил выше.

0
Автор поста оценил этот комментарий

Генератор поставить не могу. Там стоит реле времени на дин рейке. Им хозяева умеют менять время дня и ночи в зависимости от сезона

раскрыть ветку (2)
Автор поста оценил этот комментарий

И времени нет на приобретение материалов дополнительных

раскрыть ветку (1)
5
DELETED
Автор поста оценил этот комментарий
Тогда в гроб... Ни времени ни денег ни умения у страждущих...
Вы смотрите срез комментариев. Чтобы написать комментарий, перейдите к общему списку