Проблемы с Arduino RGB LED

#arduino

#arduino

Вопрос:

Только что получил Arduino, и у меня возникли некоторые проблемы с освещением.

Я полагаю, что использую светодиод с общим анодом, поэтому у меня есть три цветных вывода, проходящих через резистор 270 Ом на 10, 11 и 12 на arduino. Последний подключен непосредственно к VSS.

Очень похоже на это:http://www.instructables.com/id/RGB-LED-Tutorial-using-an-Arduino-RGBL/step2/Testing /

Теперь он работает противоположно тому, что я бы предсказал. Когда я пишу analogWrite( red, 0 ) , светодиод горит красным, а 255 полностью выключает его.

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

Кто-нибудь может объяснить, что именно происходит?

Комментарии:

1. Хм… Вывод 12 не является выводом PWM на моем Arduino. Так что analogWrite для этого вывода будет работать не так, как ожидалось.

Ответ №1:

Ваш светодиод является общим анодом, поэтому он работает прямо противоположно общему катоду. Попробуйте это:

 int PWM_value = xxx;
analogWrite(red, 255 - PWM_value);
  

Ответ №2:

КАК указывает А. Х., вывод 12 не является выводом PWM. Попробуйте изменить свой код, чтобы использовать контакты 9,10,11 вместо 10,11,12, и попробуйте еще раз.

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

 int rPin = 9;     
int gPin = 10;     
int bPin = 11;     
int analogPin = 0;   // potentiometer connected to analog pin 0
int val = 0;         // variable to store the read value

void setup()
{
  pinMode(rPin, OUTPUT);   // sets the pin as output
  pinMode(gPin, OUTPUT);   // sets the pin as output
  pinMode(bPin, OUTPUT);   // sets the pin as output
}

void loop()
{
  val = analogRead(analogPin);   // read the input pin
  analogWrite(rPin, val / 4);  // analogRead values go from 0 to 1023, analogWrite values from 0 to 255
  analogWrite(gPin, val / 4);  // analogRead values go from 0 to 1023, analogWrite values from 0 to 255
  analogWrite(bPin, val / 4);  // analogRead values go from 0 to 1023, analogWrite values from 0 to 255
}
  

Обратите внимание, что для изменения значений светодиодов вам нужен датчик, подключенный к аналоговому выводу 0.