Проблема со светодиодной схемой RGB

Я написал следующий код для светодиода RGB:-

const int RED =11;
const int GREEN = 10;
const int BLUE= 9;
void setup() {
  pinMode(RED,OUTPUT);
  pinMode(GREEN,OUTPUT);
  pinMode(BLUE,OUTPUT);
}

void loop() {
  analogWrite(RED,0);
  analogWrite(GREEN,255);
  analogWrite(BLUE,0);
  delay(1000);
}

Теперь, насколько я понимаю, если я запущу приведенный выше код, то только контакт с именем GREEN, т.е. 10-й контакт даст мне ток, а не 9, 11-й контакт. Но когда я загружаю код и запускаю его, я вижу, что 9-й и 11-й пин дают мне ток, а не 10-й пин, как предполагалось. Есть ли проблема в моем коде? Я проверил, что мои схемы верны. Чтобы проверить ток, я взял перемычку, которая была подключена к одному из моих цветов, и попытался вставить другой конец в контакты (9, 10 или 11) платы Arduino. Если есть ток, лампочка будет светиться. Для приведенного выше кода лампочка светилась, когда я вставил провод в 9 и 11-й контакт.

, 👍0

Обсуждение

Можем ли мы *проверить, что ваша схема тоже правильна?, @Majenko

Как узнать, что другие контакты выдают напряжение? А какой у вас тип RGB-светодиода? Общий анод или общий катод?, @chrisl

Что вы подразумеваете под «дайте мне ток». Вы контролируете напряжение, а не ток., @Edgar Bonet

@chrisl Я взял перемычку, которая была подключена к одному из моих цветов, и попытался вставить ее другой конец в контакты. Если есть ток, лампочка будет светиться. Это обычный анод, @Bhavya Budhia


1 ответ


Лучший ответ:

1

Светодиод RGB с общим анодом можно изобразить следующим образом:

схема

Положительное напряжение должно подаваться сверху для всех светодиодов вместе. Чтобы зажечь светодиоды, вы должны поглотить ток на другом конце, что означает обеспечение уровня земли в нижней части этой схемы на соответствующих контактах. Затем ток будет течь от вашего контакта 5 В через светодиоды на контакт Arduino.

Это означает, что analogWrite(pin, 0) включит светодиод на этом выводе, а analogWrite(pin, 255) выключит светодиод. Логика здесь инвертирована, потому что выходной контакт Arduino находится на другой стороне светодиода.

Значит, ваша схема и код работают отлично, просто вы не ожидали перевернутой логики.


Примечание. Контакты Arduino могут генерировать/отбирать только определенное количество тока (20 мА непрерывно, 40 мА максимум) без повреждения. Один не слишком мощный светодиод RGB должен подойти, но как только вы захотите управлять большим количеством светодиодов, вам следует рассмотреть возможность использования схемы драйвера (например, простых транзисторов). Таким образом, выходные контакты не должны обеспечивать ток светодиодов, а только ток для управления транзистором.

,