Светодиод будет плавно включаться, но не гаснуть

led

Яркость светодиода обычно увеличивается, но когда он достигает полной яркости, он просто остается таким - не тускнеет. Извините, если на этот вопрос уже был дан ответ, я просто не могу найти ничего об этой конкретной проблеме в Интернете. Я также пробовал несколько разных кодов из руководств, но результат тот же.

int led = 6;

void setup() {
  pinMode(led, OUTPUT);  
}
 
void loop() {
  for (int i  = 5; i <= 255; i+=1){
    analogWrite(led, i);
    delay(100);  
  }
  
  for (int i = 255; i >= 5; i-=1) {
    analogWrite(led, i);
    delay(100);
  }
}

, 👍-1

Обсуждение

совет: i++ выглядит аккуратнее для приращений в 1, @jsotola

Попробуйте вместо этого использовать точный встроенный код затухания Arduino IDE., @tepalia


2 ответа


0

Ну, если вы подключили светодиод к правильному контакту, то это действительно так.

Дело в том, что человеческое зрение довольно несовершенно. Когда источник света становится слишком ярким, мы перестаем видеть оттенки. Также мы лучше видим оттенки зеленого, чем красного или синего.

Итак, вы считаете от 5, пропуская «самые темные значения», со всеми четными задержками и, вероятно, с наименьшим возможным значением резистора. Затем яркость светодиода вскоре достигает порогового значения и остается слишком высокой большую часть времени. У вас есть всего несколько секунд из пятидесяти, чтобы заметить, что он немного потускнел, а затем снова стал ярким пятном.

Вместо этого попробуйте использовать неравномерные задержки, чтобы более низкие значения оставались в силе дольше, и, возможно, увеличьте значение резистора ограничения тока и/или ограничьте значения, передаваемые в analogWrite (например, только до 200).

,

0

У меня это сработало, но это медленно. 251 итерация (каждого цикла) по 0,1 сек/цикл занимает 25 секунд вверх и 25 секунд вниз. Когда я уменьшил задержку до 10 мс, поведение стало гораздо более очевидным.

,