#define BLED 9 //9 контакт для синего вывода RGB-светодиода
#define GLED 10 //10 контакт для зеленого вывода RGB-светодиода
#define RLED 11 //11 контакт для красного вывода RGB-светодиода
#define BUTTON 2 //2 контакт для кнопки
boolean lastButton = LOW; //предыдущее состояние кнопки
boolean currentButton = LOW; //текущее состояние кнопки
int ledMode = 0; //статус RGB-светодиода
void setup(){
pinMode (BLED, OUTPUT); //Устанавливаем контакт BLED(Blue LED, т.е 9 контакт) как выход
pinMode (GLED, OUTPUT); //Устанавливаем контакт GLED(Green LED, т.е 9 контакт) как выход
pinMode (RLED, OUTPUT); //Устанавливаем контакт RLED(Red LED, т.е 9 контакт) как выход
pinMode (BUTTON, INPUT); //Устанавливаем контакт BUTTON(т.е. 2 контакт) как вход(опционально)
digitalWrite(2, HIGH); //подключаем подтягивающий резистор
}
void loop(){
currentButton = debounce(lastButton); //считываем состояние кнопки с применением "антидребезга"
if (lastButton == LOW && currentButton == HIGH) //если кнопка была нажата
{
ledMode++; //инкрементируем значение переменной
}
lastButton = currentButton; //сохраняем текущее состояние кнопки в предыдущее
if (ledMode == 4) ledMode = 0; //если прошли по циклу все режимы свечения светодиода, делаем сброс до 0
setMode(ledMode); //изменить режим светодиода
}
/*
* Функция антидребезга
* принимает предыдущее значение кнопки и возвращает текущее состояние кнопки с подавлением дребезга контактов
*/
boolean debounce(boolean last)
{
boolean current = digitalRead(BUTTON); //считываем состояние кнопки
if (last != current) //если есть изменения
{
delay(5); //ждем 5мс
current = digitalRead(BUTTON); //считываем состояние кнопки
}
return current; //возвращаем, считанное состояние кнопки
}
/*
* Выбор режима работы светодиода
* Передача номера режима и его установка
* Функция ничего не возвращает
*/
void setMode(int mode)
{
//Красный
if (mode == 1)
{
digitalWrite(RLED, LOW);
digitalWrite(GLED, HIGH);
digitalWrite(BLED, HIGH);
}
//Зеленый
else if (mode == 2)
{
digitalWrite(RLED, HIGH);
digitalWrite(GLED, HIGH);
digitalWrite(BLED, LOW);
}
//Синий
else if (mode == 3)
{
digitalWrite(RLED, HIGH);
digitalWrite(GLED, LOW);
digitalWrite(BLED, HIGH);
}
else
{
digitalWrite(RLED, -255);
digitalWrite(GLED, -255);
digitalWrite(BLED, -255);
}
}
Есть скеч, управляет rgb диодом, при нажатии на кнопку включает красный, потом синий, потом зеленый цвет (примерный порядок) при последнем нажатии полностью гасит его.
У меня два вопроса первый что конкретно делает что происходит при ?
There is a scratch, it controls the RGB diode, when you press the button it turns on red, then blue, then green (approximate order), then completely extinguishes it.
What exactly happens when?
digitalWrite(RLED, -255);
digitalWrite(GLED, -255);
digitalWrite(BLED, -255);
и одно ли и тоже что digitalWrite(PIN, -255); и digitalWrite(PIN, 0); digitalWrite(PIN, LOW); и analogWrite(PIN, 0); ?
and is it the same as digitalWrite (PIN, -255); and digitalWrite(PIN, -255); and digitalWrite (PIN, LOW); and analogWrite (PIN, 0); ?