RGB LED с помощью потенциометра и кнопки

В настоящее время я работаю над заданием, которое должно включать RGB-светодиод с помощью потенциометра и кнопки. Проблема, которую я в настоящее время имею, состоит в том, что кнопка должна изменить цвет, который я хочу, чтобы светодиод отображался (нажимает один раз: красный (pin9), снова зеленый (pin10), снова синий (pin11)). Как я меняю через порты с потенциометром, потенциометр будет читать его с as analogWrite. Например, если я перемещаю потенциометр полностью влево и нажимаю кнопку, светодиод будет отображаться красным, а затем переместите его обратно до 0 и дважды нажмите кнопку, светодиод останется красным (ничего не делать). Если я нажму его еще раз, он выключится. Другой пример, я снова включаю красный, затем использую зеленый и выключаю синий с помощью потенциометра и кнопки, дающей мне оранжевый. Как сделать так, чтобы достичь всего этого, используя и то и другое и комбинируя цвета?

ЭТО ВОПРОС HW И НЕ ТРЕБУЕТ ПОЛНОГО РЕШЕНИЯ, А СКОРЕЕ, ГДЕ НАЧАТЬ, ПОТОМУ ЧТО Я УЖЕ ЗАСТРЯЛ И ХОЧУ ПЕРЕЗАПУСТИТЬ КАК ТАКОВОЙ

Edit:Я решил свои сомнения! Спасибо за помощь!

, 👍1

Обсуждение

Итак - если я правильно понимаю - вы хотите, чтобы ваша кнопка была кнопкой set, которая используется 3 раза последовательно для смешивания цветов красного, зеленого и синего со значением, которое имеет поти на соответствующих этапах. Таким образом, построение цвета RGB в 3 этапа из его компонентов. Это то, чего ты хочешь? И в чем именно заключается ваша проблема? Читаешь "Поти"? Вывод 3 ШИМ - сигналов для RGB-светодиода? вычисление значений? Управление потоком программы?, @chrisl

О, извините, что не совсем ясно выразился. Я вроде как новичок в этом (как показано). Я считаю, что моя главная проблема заключается в чтении чтения кнопки и поти, чтобы смешать цвета, как указано выше., @Matt Weber

Правка: Текущая проблема, с которой я сталкиваюсь, заключается в следующем: я запускаю симуляцию с if и счетчиком для кнопки, и мой первый цвет должен быть зеленым. Следующая часть моего кода-включить синий цвет, но это происходит при двух нажатиях. При первом же нажатии он, кажется, пропускает зеленый цвет и переходит прямо к синему., @Matt Weber

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

одна вещь, которую вам нужно понять, это то, что кнопка и потенциометр не управляют светодиодами ... они полностью отделены от светодиодов ... программа Arduino управляет светодиодами ... программа Arduino считывает состояние кнопки и считывает уровень напряжения на ползунке потенциометра .... держите считывание кнопки и функции считывания потенциометра отдельно от функции светодиодного освещения ... кнопка должна только установить флаг ... этот же флаг можно было установить с помощью таймера или пульта дистанционного управления ... функция светодиодного освещения проверяет только состояние флага, больше ничего, @jsotola

Самая распространенная проблема, с которой сталкиваются новички с кнопками, - это кодирование их как "Если ВЫ сделаете это", а затем удивляетесь, почему это происходит постоянно, а не просто происходит один раз при нажатии кнопки. Вы должны научиться следить за изменением состояния кнопки - например, "Если она изменилась с НИЗКОЙ на ВЫСОКУЮ, сделайте это"., @Majenko

Если вы решили свой собственный вопрос, пожалуйста, опубликуйте ответ или как вы его исправили. Таким образом, кто-то, кто найдет ваш вопрос, будет знать, как вы его исправили .", @tavis

Если ответ ниже вам помог, отметьте его., @Rohit Gupta


1 ответ


0

Ваш метод звучит немного сложнее, чем это необходимо. Что бы я сделал, так это переключил кнопку между тремя цветами и заставил потенциометр изменить яркость выбранного в данный момент цвета.

Например, при первом запуске выбирается красный светодиод. Поворот потенциометра изменяет яркость красного светодиода (в режиме реального времени). Допустим, вы включаете его на 50%, поэтому красный светодиод имеет яркость 50%. Когда вы будете довольны этим, вы нажмете кнопку, и теперь выбран зеленый. (Поскольку потенциометр по-прежнему находится на 50% от красного, зеленый светодиод немедленно включится с яркостью 50%.) Затем вы можете повернуть горшок, чтобы изменить яркость зеленого светодиода. Допустим, вы переключите его полностью на 0%. Затем нажмите кнопку, чтобы выбрать синий светодиод. Включите его на 100% , и комбинированный цвет будет темно-фиолетовым. Нажмите кнопку еще раз, чтобы снова выбрать красный.

Вот некоторые доказательства кода концепции:


byte selectedColor = 0; // 0:красный, 1:зеленый, 2:синий
byte oldButtonState = HIGH;

void loop() {
  byte buttonState = digitalRead(buttonPin); // прочитать кнопку
  if( buttonState==LOW && oldButtonState==HIGH ) // посмотрите, нажата ли кнопка, но не была нажата в последний раз
  { 
    selectedColor++; // к следующему цвету
    if( selectedColor==3 )
      selectedColor = 0;// после синего вернитесь к красному
  }
  oldButtonState = buttonState; // запомнить состояние кнопок для следующего цикла

  int brightness = map(analogRead(potPin), 0, 1023, 0, 255);

  if( selectedColor==0 )
    analogWrite(redPin, brightness);
  else if( selectedColor==0 )
    analogWrite(greenPin, brightness);
  else
    analogWrite(bluePin, brightness);
}

PS Я пропустил информацию о контакте в настройках.

PPS убедитесь, что светодиоды подключены к ШИМ-выводу на Arduino (они имеют ~ рядом с ними на печатной плате).

,