ARDUINO: Урок 4 - RGB светодиод, кнопка и устранение дребезга контактов

Поделиться
HTML-код
  • Опубликовано: 2 фев 2025

Комментарии • 11

  • @rasputin188
    @rasputin188 5 лет назад

    Наконец хоть кто-то объяснил для простых людей. Лайк от меня.

  • @ВладимирСветлов-н6ь

    Здравствуйте.
    Ссылка не работает.

  • @ДмитрийБорцов-ь1з
    @ДмитрийБорцов-ь1з 7 лет назад +1

    const int BLED = 13;
    const int GLED = 10;
    const int BUTTON = 8;
    boolean lastButton = LOW;
    boolean currentButton = LOW;
    int ledMode = 0;
    void setup()
    {
    pinMode(BLED, OUTPUT);
    pinMode(GLED, OUTPUT);
    }
    boolean debounce(boolean last)
    {
    boolean current = digitalRead(BUTTON);
    if (last != current)
    {
    delay(5);
    current = digitalRead(BUTTON);
    return current;
    }
    }
    void setMode(int mode)
    {
    switch (mode)
    {
    case 1:
    digitalWrite(BLED,HIGH);
    digitalWrite(GLED,LOW);
    break;
    case 2:
    digitalWrite(BLED,LOW);
    digitalWrite(GLED,HIGH);
    break;
    case 3:
    digitalWrite(BLED,HIGH);
    digitalWrite(GLED,HIGH);
    break;
    case 0:
    digitalWrite(BLED,LOW);
    digitalWrite(GLED,LOW);
    break;
    }
    }
    void loop()
    {
    currentButton = debounce(lastButton);
    if (lastButton==LOW && currentButton==HIGH)
    {
    ledMode++;
    }
    lastButton = currentButton;
    if (ledMode == 4)
    {
    ledMode = 0;
    }
    setMode(ledMode);
    }

  • @ДмитрийБорцов-ь1з
    @ДмитрийБорцов-ь1з 7 лет назад

    Сделал все как в описании, при включении платы контроллер переходит сразу к первому действию, а не к нулевому, где все выключено. Почему?

  • @ОльгаКритинина-ф4ц

    а код сылки?
    где он???

    • @АняШевич
      @АняШевич 2 года назад

      const int BLED = 13;
      const int GLED = 10;
      const int BUTTON = 8;
      boolean lastButton = LOW;
      boolean currentButton = LOW;
      int ledMode = 0;
      void setup()
      {
      pinMode(BLED, OUTPUT);
      pinMode(GLED, OUTPUT);
      }
      boolean debounce(boolean last)
      {
      boolean current = digitalRead(BUTTON);
      if (last != current)
      {
      delay(5);
      current = digitalRead(BUTTON);
      return current;
      }
      }
      void setMode(int mode)
      {
      switch (mode)
      {
      case 1:
      digitalWrite(BLED,HIGH);
      digitalWrite(GLED,LOW);
      break;
      case 2:
      digitalWrite(BLED,LOW);
      digitalWrite(GLED,HIGH);
      break;
      case 3:
      digitalWrite(BLED,HIGH);
      digitalWrite(GLED,HIGH);
      break;
      case 0:
      digitalWrite(BLED,LOW);
      digitalWrite(GLED,LOW);
      break;
      }
      }
      void loop()
      {
      currentButton = debounce(lastButton);
      if (lastButton==LOW && currentButton==HIGH)
      {
      ledMode++;
      }
      lastButton = currentButton;
      if (ledMode == 4)
      {
      ledMode = 0;
      }
      setMode(ledMode);
      }

  • @vintrazor3997
    @vintrazor3997 7 лет назад

    Хоть кто-то нормально объяснил. Спасибо.

  • @D__N54
    @D__N54 8 лет назад

    Здравствуйте.
    Такой вопрос, не подскажите как в место кнопки задействовать
    потенциометр?
    В принципе я смог заставить загораться светодиод при
    достижении определенного уровня, но как заставить при этом гаснуть при другом
    уровне ни как не пойму.
    проштудировал С++ не нашел такой возможности, возможно плохо
    или не там штудировал.
    Описание в след второго значения для переменной нейтрализует
    первое значение.
    Получилось так:
    const int W=10;
    const int E=9;
    const int B=6;
    const int G=5;
    const int R=3;
    const int P=0;
    void setup()
    {
    Serial.begin(9600); // инициализация серийного обмена данными на скорости 9600 бит в секунду для отслеживая уровня потенциометр в "Монитор порта":
    pinMode (W, OUTPUT);
    pinMode (E, OUTPUT);
    pinMode (B, OUTPUT);
    pinMode (G, OUTPUT);
    pinMode (R, OUTPUT);
    pinMode (P, INPUT);
    }
    void loop()
    {
    int x;
    int y;
    int z;
    int q;
    int a;
    x = analogRead(P)>100;
    digitalWrite(W, x);
    y = analogRead(P)>200;
    digitalWrite(E, y);
    z = analogRead(P)>300;
    digitalWrite(B, z);
    q = analogRead(P)>400;
    digitalWrite(G, q);
    a = analogRead(P)>500;
    digitalWrite(R, a);
    int sensorValue = analogRead(A0); // считывает значение с аналогового пина 0:
    Serial.println(sensorValue); // отображает считанное значение:
    delay(1); // задержка между считываниями для стабильности работы
    }

  • @Huymamin
    @Huymamin 7 лет назад

    хватит гнусавить. ничего ж не понятно. Купи себе нормальный Микрофон!

    • @УПТ-УчисьПробуйТестируй
      @УПТ-УчисьПробуйТестируй  7 лет назад

      На удивление в этом видео и был тестирован вроде как хороший микрофон. Как оказалось нужно что то другое.