Сделать светодиод менее ярким

led

Как упражнение, чтобы узнать, а не самый эффективный способ достижения цели.... (я специалист по практическому оборудованию, но мне нужно собрать все свое дерьмо воедино и немного выучить кодирование)

Я хотел бы сделать светодиод менее ярким в рамках проекта. У меня есть нано-устройство для управления реле для управления нагрузкой постоянного тока при нажатии мгновенного переключателя (это довольно излишне сложно исключительно для того, чтобы позволить мне использовать конкретный мгновенный переключатель, который я хотел использовать по целой куче не очень веских причин; -)

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

int pbuttonPin = 2;// подключите выход к кнопке
int relayPin = 10;// Подключен к реле (LED)

int val = 0; // push value from pin 2
int lightON = 0;//light status
int pushed = 0;//push status


void setup() {
  Serial.begin(9600);
  pinMode(pbuttonPin, INPUT_PULLUP); 
  pinMode(relayPin, OUTPUT);
 digitalWrite(relayPin, HIGH);// держите нагрузку в начале. Если вы хотите быть на, измените МАКСИМУМ на НИЗКИЙ
}

void loop() {
  val = digitalRead(pbuttonPin);// считайте значение кнопки

  if(val == HIGH && lightON == LOW){

    pushed = 1-pushed;
    delay(100);
  }    

  lightON = val;

      if(pushed == HIGH){
        Serial.println("Light ON");
        digitalWrite(relayPin, LOW); 
       
      }else{
        Serial.println("Light OFF");
        digitalWrite(relayPin, HIGH);
   
      }     


  delay(100);

Приведенный выше код прямо вырезан и вставлен... я ничего не понимаю

У меня есть светодиодный катод на выводе 10 (так что я знаю, что реле включается легче на расстоянии). однако приложение находится на лодке, а ночью оно слишком яркое и отвлекающее. Поэтому я хочу сделать светодиод более тусклым... Я знаю, что мог бы добавить резистор большего значения, но я хочу расширить свое понимание и хотел бы получить предложения по другим способам ШИМ, возможно ...

ура!

, 👍0

Обсуждение

Что у тебя за Arduino? Если вы можете подключить светодиод к Arduino (=если Arduino обеспечивает достаточную мощность), вы можете подключить его к ШИМ-контакту и использовать "analogWrite(10, яркость)" для изменения яркости. Конечно, вам придется инициализировать его в настройках и заменить яркость числом в диапазоне 0-255., @Python Schlange

Если использование ретранслятора-ваш единственный вариант, то [здесь](https://forum.arduino.cc/index.php?topic=284930.0) идет дискуссия об этом на форумах Arduino., @Python Schlange

добавьте резистор, не тратьте на это ресурсы микроконтроллера, @Juraj

Да, используйте метод Юрайса, если вы хотите изменить его только один раз на более низкую яркость., @Python Schlange

Можно добавить второе реле с резистором, как предложил Юрай. Подсоедините его параллельно катоду светодиода. Затем вы можете переключаться между двумя реле для двух различных уровней яркости. Но я думаю, что было бы лучше, в зависимости от используемого вами светодиода, заменить реле на МОП-транзистор. Затем вы можете изменить яркость с помощью ШИМ. Добавьте датчик освещенности, чтобы автоматически переключаться между дневным и ночным режимами, чтобы как-то оправдать использование Arduino в первую очередь;, @Gerben

Мой предпочтительный подход-завернуть светодиод в ленту, чтобы сделать его более тусклым. :) Это проще, чем паять резистор! :) j/k, @Gabriel Staples


3 ответа


3

Существует два метода затемнения светодиода : с помощью ШИМ или с помощью ограничивающего резистора тока.

  1. ШИМ-код

     `//Инициализация вывода светодиода
     int led_pin = 10;
     void setup() {
     //Объявление вывода светодиода в качестве выходного
             pinMode(led_pin, OUTPUT);
     }
     void loop() {
             analogWrite(led_pin, 127); // половинная интенсивность
             delay(5);
     }`
    
  2. Железо. Используйте следующую схему

,

Это решение не учитывает, что светодиоду требуется больше энергии, чем может обеспечить Arduino., @Python Schlange

не всем горшкам понравятся все светодиоды. в то время как пожар-это маловероятный шанс, потерять ГОРШОК-нет., @dandavis

Если у вас нет регулируемого тока (что было бы третьим вариантом), вам в любом случае нужен ограничивающий ток резистор*. Независимо от того, собираетесь ли вы затемнять, используя шим. Ваш ответ вводит в заблуждение в этом вопросе. Кроме того, как вы затемняете светодиод во втором примере? Разве это тоже не шим?, @Sim Son


1

Если вы хотите уменьшить яркость в целом, то самым простым решением на самом деле будет использование высокоточного резистора.

Если вы хотите использовать ШИМ - например, для программного изменения яркости, - вам просто нужно заменить вызовы digitalWrite(HIGH|LOW) вызовами analogWrite(x) (ref), где x представляет рабочий цикл/яркость. Диапазон x зависит от вашего микроконтроллера.

Обратите внимание, что ШИМ (который используется analogWrite()) работает только на выделенных выводах. С другой стороны, есть микроконтроллеры, которые имеют аналоговый вывод с "истинным" аналоговым выходом. На таком аналоговом выводе - хотя можно использовать функцию analogWrite() - яркость не будет линейной и будет иметь смещение, что делает его практически бесполезным для затемнения светодиода.

,

"...яркость не будет линейной и иметь смещение." Я не знаю, что вы имеете в виду, когда говорите, что яркость будет иметь смещение. Не будет. Это просто не будет линейным, но все значения ШИМ > 0 действительно будут производить свет. В ШИМ нет "мертвой полосы", как, например, с потенциометрами и джойстиками., @Gabriel Staples

Этот пункт относится к истинным аналоговым выходам - я поясню это более четко. Если я правильно помню, эти аналоговые контакты также используются с "analogWrite()" на соответствующих ардуино, но показывают совсем другое поведение, чем ШИМ-вывод., @Sim Son

О, я понимаю, о чем ты говоришь. Шиммирование выходного напряжения, которое превышает пороговое значение, когда ВЫСОКОЕ *всегда* создает свет на светодиоде, но если это настоящий аналоговый выход, то будет мертвая полоса, или "смещение", равное пороговому напряжению, прежде чем светодиод начнет излучать свет. Это одно из преимуществ псевдоаналогового выхода PWM для управления светодиодами по сравнению с использованием истинного аналогового выхода для управления светодиодами. ШИМ, в данном случае, вероятно, на самом деле лучше., @Gabriel Staples

Наверное, было немного непонятно, что я имел в виду., @Sim Son


0

Следуйте этому руководству. Лучше этого не бывает. https://www.arduino.cc/en/Tutorial/BuiltInExamples/Fade

,