ПРИМЕЧАНИЕ. У некоторых RGB-светодиодов зеленая и синяя ножки расположены наоборот.
Подключите красную ножку к контакту Arduino 11, GND к Arduino GND, зеленую к контакту Arduino 10 и синюю к контакту Arduino 9.
RGB-СВЕТОДИОД С ОБЩИМ КАТОДОМ
|
ARDUINO
|
Red
|
Pin 11
|
GND
|
GND
|
Green
|
Pin 10
|
Blue
|
Pin 9
|
Загрузите приведенный ниже код.
Рисунок 4-4: Принципиальная схема для подсветки настроения
Скетч
В скетче сначала устанавливаются контакты 9, 10 и 11 Arduino в качестве выходных данных. Этот скетч изменяет значение яркости (мощности) каждого источника света на светодиоде RGB по очереди, невероятно быстро включая и выключая их — чем дольше горит светодиод, тем ярче он выглядит. Для этого Arduino использует технику, называемую широтно-импульсной модуляцией (PWM). Arduino создает импульс, очень быстро включая и выключая питание. Длительность включения или выключения питания (известная как ширина импульса) в цикле определяет среднюю мощность, и, изменяя эту ширину импульса, Arduino может имитировать напряжения между полным включением (5 вольт) и выключением (0 вольт). Если сигнал от Arduino включен в течение половины времени и выключен в течение половины, средняя выходная мощность составит 2,5 вольта, на полпути между 0 и 5. Если сигнал включен на 80 процентов и выключен на 20 процентов, напряжение составляет 4 вольта и так далее.
Мы определяем значение RGB в диапазоне от 0 до 255 с шагом 5 вольт, чтобы создать эффект затухания. Проще говоря, каждый цвет светодиода последовательно загорается от 0 до 5 вольт, а затем гаснет, когда достигает максимального значения 255. Arduino может обрабатывать значения от 0 до 1023 (всего 1024 значения), но поскольку это такое большое число, мы делим его на 4 и используем 255 в качестве максимального значения светодиода, чтобы изменение цвета было более заметным.
int redPin = 11; // pin connected to red leg of the RGB LED
int greenPin = 10; // pin connected to green leg of the RGB LED
int bluePin = 9; // pin connected to blue leg of the RGB LED
void setup() {
setRgb(0,0,0); // Set all colors at 0
}
void loop() {
int Rgb[3]; // 3 RGB pins
Rgb[0] = 0; // A value for each
Rgb[1] = 0;
Rgb[2] = 0;
for (int decrease = 0; decrease < 3; decrease += 1) { // colors increase and decrease in value
int increase = decrease == 2 ? 0 : decrease + 1;
for(int i = 0; i < 255; i += 1) { // Fade the colors
Rgb[decrease] -= 1;
Rgb[increase] += 1;
setRgb(Rgb[0], Rgb[1], Rgb[2]);
delay(20);
}
}
}
void setRgb( int red, int green, int blue) {
analogWrite(redPin, red);
analogWrite(greenPin, green);
analogWrite(bluePin, blue);
}
Отладка
Код компилируется, но светодиод RGB не загорается, как ожидалось:
- Если светодиод RGB не горит вообще, убедитесь, что вы подсоединили провод GND от Arduino к правильной ветви светодиода RGB — длинной катодной ветви — и что к Arduino подключено питание.
- Если у вас есть RGB-светодиод с общим анодом, то вам следует подключить длинную ножку к +5 В на Arduino. Проверьте технический паспорт вашей детали, чтобы узнать, какой тип RGB-светодиода у вас есть.
- Если цвета отображаются не так, как ожидалось, возможно, у вашего RGB-светодиода другая конфигурация контактов; проверьте свой технический паспорт или попробуйте поменять местами соединения с зелеными и синими ножками.
Достарыңызбен бөлісу: |