Код Для Освещения 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 ответ


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

1

почему они смогли выполнить setColor прежде чем позже расширить его значение

Вы правы в C, что это так. Однако Arduino IDE автоматически добавляет "прототипы функций" в верхнюю часть вашего кода. Это означает, что вам больше не нужно соблюдать "define before use" C и C++.

Я знаю, что 255 будет указывать на максимальную яркость, но почему вы должны вычесть цвет из 255?

Это для того, если ваш светодиод является "общим анодом" вместо "общего катода". С общим анодом вы пишете НИЗКИЙ, чтобы включить его, и ВЫСОКИЙ, чтобы выключить - это полная противоположность общему катоду.

Таким образом, чтобы установить яркость общего анодного светодиода, вам нужно использовать противоположное значение, а так как ШИМ идет от 0-255, противоположное 255-0: 255 выключено, а 0 полностью включено.

,