Arduino | RGB светодиодный контроллер

У меня Arduino UNO, и я пытаюсь включить и выключить цветной (красный, зеленый или синий) свет полосы. Вот мой код, но все огни горят. Проблема в том, что, например, я мог бы хотеть показать только красный цвет, но я не могу заставить какие-либо цвета отключиться. У меня есть булавки следующим образом:

  • КРАСНЫЙ: 5
  • ЗЕЛЕНЫЙ: 6
  • СИНИЙ: 3

Моя настройка:
введите описание изображения здесь

Фото контроллера по умолчанию:
введите описание изображения здесь

Соответствующий код:

int ledPinR = 5;
int ledPinG = 6;
int ledPinB = 3;

void setup() {
pinMode(ledPinR, OUTPUT);
pinMode(ledPinG, OUTPUT);
pinMode(ledPinB, OUTPUT);
}
void loop()  {
analogWrite(ledPinR, 0);
analogWrite(ledPinG, 0);
analogWrite(ledPinB, 0);
}

1

Решение

Я думаю, что вы неправильно поняли мой последний комментарий под ответом @ Secko, так вот что я имел в виду:

int r = 5;
int g = 6;
int b = 3;

void setup() {
pinMode(r, OUTPUT);
pinMode(g, OUTPUT);
pinMode(b, OUTPUT);
}

void loop() {
analogWrite(r, 128);
delay(50);
analogWrite(r, 0);
analogWrite(g, 128);
delay(50);
analogWrite(g, 0);
analogWrite(b, 128);
delay(50);
analogWrite(b, 0);
delay(50);
}

Вы должны выключить последний цвет, который вы включили, чтобы получить красный, зеленый и синий мигающий свет. В противном случае, если вы включите зеленый после красного, полоса будет желтой на короткое время. Если вы затем включите синий, он будет белым и останется белым, поскольку никакие цвета никогда не выключаются.

Второй параметр — это напряжение, приложенное к вашим контактам. Диапазон значений от 0 до 255, где 0 равно 0 В, а 255 равно 5 В. 128 находится прямо посередине с 2,5 В.

Если ваша полоса большая (=> 3 светодиода с энергосберегающими светодиодами. В противном случае> 1), я надеюсь, что вы используете транзисторы, чтобы разгрузить ток, потребляемый от Arduino к транзистору. В противном случае вы будете взрывать Arduino очень скоро.

РЕДАКТИРОВАТЬ:
Возможно, вы уже взорвали Arduino, вытянув слишком много тока (слишком много светодиодов) из его контактов.

Вам понадобится транзистор PNP между каждым цветом и arduino, который может обрабатывать большой ток (так как вы управляете большим количеством светодиодов), что означает интегральную схему матрицы транзисторов Дарлингтона.

Нечто подобное TIP125 приходит на ум. (https://www.fairchildsemi.com/datasheets/TI/TIP125.pdf)

Максимальный ток коллектора 5А. Поместите это прямо в середине вашего VCC и полосы (VCC для коллектора, полосы для эмиттера) и подключите Arduino к базе транзистора. Вам понадобится 3, по одному на каждый цвет.

EDIT2:
Вот очень быстро сделанная схема, чтобы показать вам основы. Он должен быть полностью функциональным для светодиодной ленты 12 В с индивидуальным потреблением тока до 5 А (итого 15 А).

Вы можете добавить резисторы на базе транзистора, чтобы поглотить ток.

Тип125 / Arduino транзистор схема

EDIT3:
Поскольку вы, вероятно, новичок в электронике: транзистор PNP обеспечит соединение между коллектором и эмиттером, если база низкая. Имея в виду: analogWrite(r, 0) включит цвет на полосе и analogWrite(r, 255) выключу его. Он инвертирован с транзистором между ними.

Кроме того, и я надеюсь, что это очевидно, НЕ МАРШРУТНО 5А НА ЦВЕТ через ЩИТ ИЛИ ЧЕРЕЗ Крошечные провода. ОНИ ВСТУПАЮТ В ДЫМАХ.

1

Другие решения

Вы должны добавить pinMode () для установки.

void setup() {
pinMode(ledPinR, OUTPUT);
pinMode(ledPinG, OUTPUT);
pinMode(ledPinB, OUTPUT);
}
0

Вы должны отложить операции, прежде чем включить или выключить следующий индикатор:

РЕДАКТИРОВАТЬ: полный фейдер для вашего случая, вы можете пропустить 4 в цикле, но я позволю вам справиться с этим.

int ledPinR = 5;
int ledPinG = 6;
int ledPinB = 3;

int brightness = 0;
int fade = 5;

void setup() {
pinMode(ledPinR, OUTPUT);
pinMode(ledPinG, OUTPUT);
pinMode(ledPinB, OUTPUT);
}

void loop() {
for(int LED_PIN = 3; LED_PIN<=6; LED_PIN++) {
analogWrite(LED_PIN, brightness); //setting the brightness at LED pin
brightness += fade; //brightness increasE
if(brightness == 0 || brightness == 255){
fade = -fade;
}
delay(30); //time of delay is in miliseconds
}
}

РЕДАКТИРОВАТЬ 2: Хорошо, видел ваши настройки, я был далеко от того, что вы хотели сделать с цветами, не знаю, если я должен удалить ответ, это вводит в заблуждение сейчас. Надеюсь, задержка помогла, хотя.

0
По вопросам рекламы [email protected]