Допустим есть 6 светодиодов. Нужно замутить, чтобы все светодиоды в хаотичном порядке загорались, не принципиально в хаотичном. И они должны плавно загораться и затухать. Не могу понять какие контроллеры впихнуть и самое главное где их купить в барнауле, ну или спаять самому. Буду признателен за помощь, кто вникает. Диоды белые планируются
Думаю, тут только на контроллере мутить, со своей прошивкой. Или брать контроллер на rgb ленту, два штуки и цеплять по три диода каждому и выбирать подходящую программу
Т.к. контроллеры на 12в, то для диодов использовать драйвер, ну или ограничительные резисторы
Нужно замутить, чтобы все светодиоды в хаотичном порядке загорались, не принципиально в хаотичном
99% блондинок так техзадание пишут 🙂 хаос - порядок - непринципиальный хаос --- чего все-таки хотим? а то взять кЕтайскую гирлянду у нее таких режимов штук 6 - 10
Отредактировано vl-a (, 8 лет 7 месяцев назад)
1. резерва нет 2. резерв только в теме
Умелое владение напильником позволяет сделать самолёт из любого паровоза ;)
vl-a, Все плавно и будет. кт816 - это биполярный, а 2n6027 это программируемый однопереходный транзистор (программируемый, потому, что изменяя уровень напряжения на управляющем электроде, можно задать точку срабатывания, при которой транзистор начинает пропускать ток.). Работает так. Когда напряжение на аноде однопереходного транзистора превышает пороговое значение, которое определяется напряжением на управляющем электроде, транзистор начинает пропускать ток и создается импульс, проходящий от анода к катоду. Выглядит так, как будто напряжение на аноде само нажимает на кнопку для замыкания контакта внутри транзистора при некоторой помощи напряжения на управляющем электроде.
-------------------------------------------------------------------------------------------------------------------------------- Пришла мне ардуинка из Китая - учусь. Вот решил разобрать твой пример используя многозадачность. 🙂
Вот мигалка с установкой времени включения и выключения светодиода. Сделано для трех светодиодов, но можно переделать и на шесть. (добавить 2 строчки внизу для каждого светодиода). Для хаотичного мигания, ставь разные значения, для каждого светодиода, когда заготеться/потухнуть. Пример "Flasher led1(11, 100, 400);" где 11 - номер пина к которому подключен светодиод, 100 - время которое светодиод включен, 400 - время которое он выключен
class Flasher
{
int ledPin; // номер пина со светодиодом
long OnTime; // время включения в миллисекундах
long OffTime; // время, когда светодиод выключен
// Текущее состояние
int ledState; // состояние ВКЛ/ВЫКЛ
unsigned long previousMillis; // последний момент смены состояния
// Конструктор создает экземпляр Flasher и инициализирует
// переменные-члены класса и состояние
public:
Flasher(int pin, long on, long off)
{
ledPin = pin;
pinMode(ledPin, OUTPUT);
OnTime = on;
OffTime = off;
ledState = LOW;
previousMillis = 0;
}
void Update()
{
// выясняем не настал ли момент сменить состояние светодиода
unsigned long currentMillis = millis(); // текущее время в миллисекундах
if((ledState == HIGH) && (currentMillis - previousMillis >= OnTime))
{
ledState = LOW; // выключаем
previousMillis = currentMillis; // запоминаем момент времени
digitalWrite(ledPin, ledState); // реализуем новое состояние
}
else if ((ledState == LOW) && (currentMillis - previousMillis >= OffTime))
{
ledState = HIGH; // выключаем
previousMillis = currentMillis ; // запоминаем момент времени
digitalWrite(ledPin, ledState); // реализуем новое состояние
}
}
};
Flasher led1(11, 100, 400);
Flasher led2(12, 350, 350);
Flasher led3(13, 300, 700);
void setup()
{
}
void loop()
{
led1.Update();
led2.Update();
led3.Update();
}
Отредактировано (, 8 лет 7 месяцев назад)
Ремонт телефонов Ремонт электросамокатов, гироскутеров. Ремонт аккумуляторных батарей для электротранспорта и бытовой техники. Точечная сварка.
vl-a, Все плавно и будет. кт816 - это биполярный, а 2n6027 это программируемый однопереходный транзистор (программируемый, потому, что изменяя уровень напряжения на управляющем электроде, можно задать точку срабатывания, при которой транзистор начинает пропускать ток.). Работает так. Когда напряжение на аноде однопереходного транзистора превышает пороговое значение, которое определяется напряжением на управляющем электроде, транзистор начинает пропускать ток и создается импульс, проходящий от анода к катоду. Выглядит так, как будто напряжение на аноде само нажимает на кнопку для замыкания контакта внутри транзистора при некоторой помощи напряжения на управляющем электроде.
-------------------------------------------------------------------------------------------------------------------------------- Пришла мне ардуинка из Китая - учусь. Вот решил разобрать твой пример используя многозадачность. 🙂
Вот мигалка с установкой времени включения и выключения светодиода. Сделано для трех светодиодов, но можно переделать и на шесть. (добавить 2 строчки внизу для каждого светодиода). Для хаотичного мигания, ставь разные значения, для каждого светодиода, когда заготеться/потухнуть. Пример "Flasher led1(11, 100, 400);" где 11 - номер пина к которому подключен светодиод, 100 - время которое светодиод включен, 400 - время которое он выключен
class Flasher
{
int ledPin; // номер пина со светодиодом
long OnTime; // время включения в миллисекундах
long OffTime; // время, когда светодиод выключен
// Текущее состояние
int ledState; // состояние ВКЛ/ВЫКЛ
unsigned long previousMillis; // последний момент смены состояния
// Конструктор создает экземпляр Flasher и инициализирует
// переменные-члены класса и состояние
public:
Flasher(int pin, long on, long off)
{
ledPin = pin;
pinMode(ledPin, OUTPUT);
OnTime = on;
OffTime = off;
ledState = LOW;
previousMillis = 0;
}
void Update()
{
// выясняем не настал ли момент сменить состояние светодиода
unsigned long currentMillis = millis(); // текущее время в миллисекундах
if((ledState == HIGH) && (currentMillis - previousMillis >= OnTime))
{
ledState = LOW; // выключаем
previousMillis = currentMillis; // запоминаем момент времени
digitalWrite(ledPin, ledState); // реализуем новое состояние
}
else if ((ledState == LOW) && (currentMillis - previousMillis >= OffTime))
{
ledState = HIGH; // выключаем
previousMillis = currentMillis ; // запоминаем момент времени
digitalWrite(ledPin, ledState); // реализуем новое состояние
}
}
};
Flasher led1(11, 100, 400);
Flasher led2(12, 350, 350);
Flasher led3(13, 300, 700);
void setup()
{
}
void loop()
{
led1.Update();
led2.Update();
led3.Update();
}
спс, а долго шел? а то тележатся, может проще заказать да побаловаться