Стробоскоп из ЛЕД на Ардуино
- Войдите на сайт для отправки комментариев
Чт, 27/12/2018 - 23:00
Сделал стробоскоп по типу как на дискотеках. Если назначаю мигать диод на 13-м пине, все работает как часики. Как только назначаю 12-й пин и припаиваю к нему транзистор - пульт работает раз через десять.
Энкодер у меня не припаян
#include <IRremote.h> #define CLK 3 // Clock Подключаем к INT1, нельзя переназначать #define DT 4 // второй вывод энкодера #define SW 5 // switch кнопка энкодера #define Min 1 // минимальное значение #define Max 20000 //максимальное значение #define led_pin 12 // подключен светодиод #define coil_pin A0 #define step_freq 1 // шаг изменения частоты плавно 0,1гц #define step_timelght 100 // шаг приращивания в мкс volatile int freq = 250; // частота в Гц умноженная на 10, для более плавной настройки volatile uint32_t paus, time_light=2000; // время свечения светодиода в мкс uint32_t oldcount; boolean DT_last; // последнее состояние энкодера int RECEIVE_PIN = 2; int val; IRrecv irrecv(RECEIVE_PIN); decode_results results; void setup() { irrecv.enableIRIn(); val = 0; pinMode(CLK,INPUT_PULLUP); // Clock Подключаем к INT1, нельзя переназначать pinMode(DT, INPUT_PULLUP); // второй вывод энкодера pinMode(SW, INPUT_PULLUP); // кнопка энкодера pinMode(led_pin, OUTPUT); // управление симистором pinMode(coil_pin, OUTPUT); attachInterrupt(1, encoderTick, CHANGE); // прерывания от Энкодера DT_last = digitalRead(CLK); // считываем положение CLK } void loop() { paus=5000000/freq; digitalWrite(coil_pin, val); digitalWrite(led_pin, val); oldcount = micros(); while( (micros() - oldcount) < time_light){} // длительность импульса выдержки digitalWrite(led_pin, 0); while( (micros() - oldcount) < paus){} // положительный полупериод digitalWrite(coil_pin, 0); oldcount = micros(); while( (micros() - oldcount) < paus){} //отрицательный полупериод if (irrecv.decode(&results)) { switch (results.value) { //вкл/выкл с ик пульта case 0x807FC837: if (val == 1){ val = 0; } else{ val = 1; } delay(50); break; } irrecv.resume(); } } //********************обработчики прерываний Энкодера******************************* void encoderTick() // Обратка прерываний от Энкодера { uint8_t DT_now = digitalRead(CLK); // считываем текущее положение CLK if (DT_now != DT_last && digitalRead(SW)) // если предыдущее и текущее положение не равны, значит был поворот { if (digitalRead(DT) != DT_now) // если DT не равен CLK, значит вращение по часовой стрелке { if( freq < Max ) freq += step_freq; // прибавить } else { // если DT равен CLK, значит вращение против часовой if( freq > Min ) freq -= step_freq; // убавить } } else if (DT_now != DT_last && !digitalRead(SW)) //если нажата кнопка и было вращение { if (digitalRead(DT) != DT_now) // если DT не равен CLK, значит вращение по часовой стрелке { if( time_light < paus ) { time_light += step_timelght; } // убавить длительность } else if( time_light > 0 ) time_light -= step_timelght; // прибавить длительность импульса выдержки/ } DT_last = DT_now; // сохранить положение CLK для следующей проверки }
zumiraks, ОПАСНАЯ ДЛЯ ЖИЗНИ СХЕМА !!!
нужно немедленно прекратить эксперименты !!!
тебе сколько лет?
да я в неё руками не лезу. Тем более она работает, просто не стабильно. Меня интресует почему при подключении нагрузки, стабильность срабатывания с пульта начинает храмать.
А лет 20.
как нарисовано, сетевая часть вообще не должна работать.
если схему где-то брал, то ссылка на оригинал желательна
20,ок, а то тут пробегают и 15-ти лет, если не меньше .
Поставь вместо транзистора оптрон. Не знаю рабочая ли оригинальная схема, но хоть током бить не будет
не спеши asam, там ток может быть очень приличный
zumiraks, сетевая схема, сама по себе, если закоротить транзистор, работает? свтодиоды горят?
схема лед лампы просто картинка с гугла.
http://cyber-place.ru/showthread.php?t=2703 - тут про стробоскоп.
ардуинка отдельно работает. схема лампы работает без перебоя. мало того, это все работает и вместе. но мне нужно чтобы при танцах, страбоскоп включился пультом с первого раза, а не с х.. знает какого. На 2-м пине у меня подключен ИК приемник.
от чего питается ардуина? и она, как и нарисована, соединена с сетевой схемой только 1 проводом в базу транзистора?
Питается ардуинка через ЮСБ. Ну и кончно же минус ардуино соеденен с эмитором транзистора
усби чего, компа, ноута? у тебя нет гальванической развязки с сетью. на любой железке корпуса может быть сетевой потенциал. смертник кароче.
Питание просто от зарядки. Попробую тогда сделать так, чтобы ардуинка включала всю схему через семистр.)
попробуй разобраться с током своих светодиодов I=200/Risens мА ,возможно хватит оптрона, как предлагал asam
да я просто сделаю по схеме оптосимистер+симистер. схема првереная, должно сработать)
ок
Смелые у нас люди, что ни говори!
да я просто сделаю по схеме оптосимистер+симистер. схема првереная, должно сработать)
Не должно. Пока через тиристор-симистор течет ток, он не закроется.((((
И вообще идея бредятиной отдает. При разрыве потребляющей цепи начинается лотерея, что сдохнет от выброса на катушке первым: транзистор, ключ в мелкосхеме или диод?
Ну нарываются у нас люди на премию Дарвина. Им говорят - ОПАСНО, а они - я аккуратно. Причем разговор не о тысячах рублей, а о десятках. В лучшем случае следующая тема будет - "У меня сгорела ардуинка, что можно сделать?". В худшем - премия Дарвина.
Ну, от такой схемки убиться, все-таки, довольно сложно. Должно или сильно не повезти или специально постараться. А так, ну шарахнет... Кого током не било?
У женщин и детей сопротивление кожи меньше, чем у мужиков. там где тебя, меня только тряхнет, их может и убить.
Схема выглядит по-детски нарисованой, так что я малось переполошился, куда там ТС нелегкая еще занесет ...