Код Для Освещения RGB Led
Я делаю это простое вводное упражнение, чтобы зажечь RGB-светодиод, но я запутался в коде в этом упражнении. Ниже приведен код:
/* Adafruit Arduino - Lesson 3. RGB LED
*/
int redPin = 11;
int greenPin = 10;
int bluePin = 9;
//uncomment this line if using a Common Anode LED //#define
COMMON_ANODE
void setup() {
pinMode(redPin, OUTPUT);
pinMode(greenPin, OUTPUT);
pinMode(bluePin, OUTPUT); }
void loop() {
setColor(255, 0, 0); // red
delay(1000);
setColor(0, 255, 0); // green
delay(1000);
setColor(0, 0, 255); // blue
delay(1000);
setColor(255, 255, 0); // yellow
delay(1000);
setColor(80, 0, 80); // purple
delay(1000);
setColor(0, 255, 255); // aqua
delay(1000); }
void setColor(int red, int green, int blue) {
#ifdef COMMON_ANODE
red = 255 - red;
green = 255 - green;
blue = 255 - blue;
#endif
analogWrite(redPin, red);
analogWrite(greenPin, green);
analogWrite(bluePin, blue); }
В этом коде, почему они были в состоянии выполнить setColor перед расширением того, что это означает позже через void setColor(int red, int green, int blue)
? Должна ли эта часть кода появиться раньше или это имеет значение? Кроме того, я не совсем понимаю, как определение цветов красный, зеленый и синий были определены в нижней части. Я знаю, что 255 будет указывать на максимальную яркость, но почему вы должны вычесть цвет из 255? Любая помощь будет очень ценна.
@, 👍0
1 ответ
Лучший ответ:
почему они смогли выполнить setColor прежде чем позже расширить его значение
Вы правы в C, что это так. Однако Arduino IDE автоматически добавляет "прототипы функций" в верхнюю часть вашего кода. Это означает, что вам больше не нужно соблюдать "define before use" C и C++.
Я знаю, что 255 будет указывать на максимальную яркость, но почему вы должны вычесть цвет из 255?
Это для того, если ваш светодиод является "общим анодом" вместо "общего катода". С общим анодом вы пишете НИЗКИЙ, чтобы включить его, и ВЫСОКИЙ, чтобы выключить - это полная противоположность общему катоду.
Таким образом, чтобы установить яркость общего анодного светодиода, вам нужно использовать противоположное значение, а так как ШИМ идет от 0-255, противоположное 255-0: 255 выключено, а 0 полностью включено.
- Улучшенное циклическое переключение цветов RGB.
- Управление цифровой адресной светодиодной лентой RGB 12 В с помощью Arduino
- Как управлять встроенными светодиодами Arduino Nano 33 BLE Sense?
- Как изменить яркость светодиодного освещения?
- Моргнуть всей светодиодной лентой
- FastLED fill_rainbow - Неожиданный красный пиксель
- Управление светодиодной лентой с помощью ИК-контроллера с помощью Arduino
- Как подключить светодиодную RGB-матрицу 8x8 к Uno?