Код Для Освещения 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 - Неожиданный красный пиксель
- Как использовать цифровую светодиодную ленту RGB?
- Управление светодиодной лентой с помощью ИК-контроллера с помощью Arduino