Как изменить яркость светодиода в соответствии с цифрами?

Тема в разделе "Arduino & Shields", создана пользователем martin1987, 28 июл 2021.

Метки:
  1. martin1987

    martin1987 Нерд

    Я видел в Интернете, что я могу установить время так, чтобы светодиод менялся от темного к светлому с течением времени. Вот я и думаю, можно ли сделать так, чтобы светодиод менял цвет от темного до яркого по мере того, как число переходит от 1-100?

    Когда я нажимаю кнопку "+", светодиод становится все ярче и ярче по мере увеличения числа; когда я нажимаю кнопку "-", светодиод становится все тусклее и тусклее по мере уменьшения числа.

    Есть ли у кого-нибудь похожий код? Я использую Arduino UNO и F5LED.
     
  2. parovoZZ

    parovoZZ Гуру

    Есть.
     
    Vovka нравится это.
  3. b707

    b707 Гуру

    martin1987, я вам на ардуино.ру уже ответил - используйте функцию analogWrite()
     
    martin1987 нравится это.
  4. Sergku

    Sergku Нерд

    есть. Это пример управления лампочкой одной кнопкой (через паузу между нажатиями):
    Код (C++):
    #define pwmPin 5
    #define buttonPin 2

    byte currentPWM = 0;
    boolean lastButtonState = false,
            lastDirection = false;
    unsigned long debounceButtonTimer = 0;

    void setup() {
      pinMode(pwmPin, OUTPUT);
      pinMode(buttonPin, INPUT_PULLUP);
    }

    void loop() {
      if(millis() - debounceButtonTimer >= 50){
        debounceButtonTimer = millis();
        if (!digitalRead(buttonPin)){
          if (!lastButtonState){
            lastButtonState = !lastButtonState;
            lastDirection = !lastDirection;
          }else if(lastDirection){
                    if(currentPWM<255)currentPWM++;}
                else {if(currentPWM>0)currentPWM--;}
        }else lastButtonState = false;
        analogWrite(pwmPin, currentPWM);
      }
    }
     
    martin1987 нравится это.
  5. martin1987

    martin1987 Нерд

    Большое спасибо!
     
  6. martin1987

    martin1987 Нерд

    Не могли бы вы предоставить простую демонстрацию?
     
  7. martin1987

    martin1987 Нерд

    Спасибо! Я попробую этот код.
     
  8. parovoZZ

    parovoZZ Гуру

  9. Airbus

    Airbus Радиохулиган Модератор

    Там сложно и через #опу. Да и для экзотического МК.ТС русским по белому написал
     
  10. parovoZZ

    parovoZZ Гуру

    так ты просто не разобрался, потому и сложно

    покажи, как не через #опу.

    сейчас любой МК - экзотический. 2313 из соседней темы не менее экзотический. 841 атинька на алишке есть, но очень мало. 441 нет вообще. Это радует, т.к. нарваться на контрафакт шансы не велики.
     
  11. SergeiL

    SergeiL Оракул Модератор

    Так @parovoZZ не для TC это написал, а для себя, для поднятия ЧСВ :)
     
    Airbus нравится это.
  12. b707

    b707 Гуру

    блин, неужели для такой простой задачи. как нажали кнопку - увеличили яркость на единицу - нужен какой-то "примерный код"?
    martin1987 - давайте вы сами попробуете написать. а мы подскажем. если что
     
    martin1987 нравится это.
  13. Airbus

    Airbus Радиохулиган Модератор

    А зачем через опу если можно легко и просто? Пост от Sergku выше вместе с кодом.
    Так уже показали?
    Код (Text):
    #define pwmPin 5
    #define buttonPin 2

    byte currentPWM = 0;
    boolean lastButtonState = false,
            lastDirection = false;
    unsigned long debounceButtonTimer = 0;

    void setup() {
      pinMode(pwmPin, OUTPUT);
      pinMode(buttonPin, INPUT_PULLUP);
    }

    void loop() {
      if(millis() - debounceButtonTimer >= 50){
        debounceButtonTimer = millis();
        if (!digitalRead(buttonPin)){
          if (!lastButtonState){
            lastButtonState = !lastButtonState;
            lastDirection = !lastDirection;
          }else if(lastDirection){
                    if(currentPWM<255)currentPWM++;}
                else {if(currentPWM>0)currentPWM--;}
        }else lastButtonState = false;
        analogWrite(pwmPin, currentPWM);
      }
    }
    И вообще ТС спрашивал про Ардуино а не про экзотику.
     
  14. parovoZZ

    parovoZZ Гуру

  15. Airbus

    Airbus Радиохулиган Модератор

  16. parovoZZ

    parovoZZ Гуру

    тоже на ардурине?
     
  17. martin1987

    martin1987 Нерд

    Большое спасибо, вот мой образец кнопки.

    [​IMG]

    Каждое нажатие на кнопку будет возвращать 9-битный шестнадцатеричный массив, и последний бит массива является значением отображаемого числа, так что мне просто нужно использовать analogwrite() для чтения последнего бита?
     
  18. Asper Daffy

    Asper Daffy Иксперд

    Азохэнвей! :-(
     
  19. Sergku

    Sergku Нерд

    Чем дальше в лес, тем толще партизаны :). Судя по вашим вопросам, стоит найти человека, который напишет это вам. Но и ему потребуется нормальное описание задачи.
     
  20. SergeiL

    SergeiL Оракул Модератор

    Перечитайте эту, свою фразу еще раз.
    В ней как-то одно с другим не вяжется.