Помогите с кодом
- Войдите на сайт для отправки комментариев
Пнд, 23/07/2018 - 13:32
Я написал, пользуясь книгой, код (ардуино UNO), при котором RGB по нажатию кнопки меняет цвета (всего 7)
Но очень хотелось бы изменить код так, чтобы каждый цвет еще и мигал (ну или допустим, изменял яркость).
Буду очень признателен за помощь!
Вот код:
const int BUTTON=2; const int GLED=10; const int RLED=11; const int BLED=9; boolean lastButton = LOW; boolean currentButton = LOW; int ledMode=0; void setup() { pinMode (BLED, OUTPUT); pinMode (GLED, OUTPUT); pinMode (RLED, OUTPUT); pinMode (BUTTON, INPUT); } boolean debounce(boolean last) { boolean current = digitalRead(BUTTON); if (last != current) { delay(5); current = digitalRead (BUTTON); return current; } } void setMode( int mode) { // КРАСНЫЙ if (mode ==1) { digitalWrite(RLED, HIGH); digitalWrite(GLED, LOW); digitalWrite(BLED, LOW); } // зеленый else if( mode==2) { digitalWrite(RLED, LOW); digitalWrite(GLED,HIGH ); digitalWrite(BLED, LOW); } // синий else if( mode==3) { digitalWrite(RLED, LOW); digitalWrite(GLED, LOW); digitalWrite(BLED, HIGH); } //ПУРПУРНЫЙ КР+С else if( mode==4) { digitalWrite(RLED, 127); digitalWrite(GLED, 0); digitalWrite(BLED, 127); } //бирюзовый с+зел else if( mode==5) { digitalWrite(RLED, 0); digitalWrite(GLED, 200); digitalWrite(BLED, 90); } //ОРАНЖЕВЫЙ ЗЕЛ+КР else if( mode==6) { digitalWrite(RLED, 224); digitalWrite(GLED, 1); digitalWrite(BLED, 0); } // БЕЛЫЙ ЗЕЛ+КР+С else if( mode==7) { digitalWrite(RLED, 127); digitalWrite(GLED, 127); digitalWrite(BLED, 127); } else { digitalWrite(RLED, LOW); digitalWrite(GLED, LOW); digitalWrite(BLED, LOW); } } void loop() { currentButton = debounce(lastButton); if (lastButton == LOW && currentButton== HIGH) { ledMode++; } lastButton=currentButton; if (ledMode==8) ledMode=0; setMode(ledMode); }
Для начала почитайте ещё раз про digitalWrite(). Функция умеет устанавливать вывод только в HIGH и LOW. А у Вас там какие-то циферки фигурируют. Не иначе с analogWrite() попутали. Уж определитесь.
А по вопросу, посмотрите пример из поставки Blink without delay. Там один диод мигает. Переделаете на три.
спасибо!
digitalWrite заменю!
с программой blink я знаком, но не зню как ее правильно вставить! Попробовал просто заменить это:
digitalWrite(RLED, HIGH);
digitalWrite(GLED, LOW);
digitalWrite(BLED, LOW);
на фрагменты из программы blink с мигание, вроде работало, но кнопка перестала отвечать сразу (раза после 5 только срабатывала, поэтому и задал вопрос!
Ещё раз - пример в поставке называется BlinkWithoutDelay. С ним кнопка будет работать.
Оно же здесь: Мигаем светодиодом без delay()
Классно! Все вроде получилось! Спасибо еще раз!
Эту прогу не надо вставлять. Её надо понять. Как она работает. Тогда по аналогии можна формировать любые временные интервалы абсолютно аналогичным способом.
получилось у меня: RGB светодиод - некоторые цвета мигают!