В проектах часто используются кнопки для управления. Например, одной кнопкой что-то прибавляем, другой — уменьшаем. Разберем на примере управления яркостью светодиода.
- Плата Arduino Uno
- Один светодиод
- Один резистор сопротивлением 220-270 Ом.
- Два резистора сопротивлением 10-100 кОм.
- Две кнопки.
- Провода
- Макетная плата
Резистор R1 ограничивает ток на светодиоде. Резисторы R2 и R3 «подтягивают» входные пины к нулю, чтобы не было ложных срабатываний. И так как управление светодиодом реализовано с помощью ШИМ (широтно-импульсная модуляция), то светодиод необходимо подключить только к определенным выводам платы ардуино.
В ардуино ШИМ можно реализовать на цифровых выводах, обозначенных PWM или ~. На плате Arduino Uno это D03, D05, D06, D10, D11. И скважность импульса задается в пределах от 0 до 255.
В данном скетче кнопка «+» с шагом 5 увеличивает яркость светодиода от 0 до 255, а кнопка «-» уменьшает.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 | int ledPin = 11; // Присваиваем имя ledPin цифровому выводу 11, к которому подключен светодиод int brightness =0; // переменная для задания яркости int fadeValue = 5; // шаг изменения яркости int buttonPlus=2; // Номер Pin к которому подключена кнопка "+" int buttonMinus=3; // Номер Pin к которому подключена кнопка "-" void setup() { pinMode(ledPin, OUTPUT); // Инициализируем цифровой вывод ledPin (pin 11) как выход } void loop() { // Этот цикл будет выполняться бесконечное количество раз. if (digitalRead(buttonPlus) == HIGH) { //если на выводе 2 (кнопка "+") высокий уровень (нажата), то brightness += fadeValue; // прибавляем значение яркости с шагом fadeValue } if (digitalRead(buttonMinus) == HIGH) { //если на выводе 3 (кнопка "-") высокий уровень (нажата), то brightness -= fadeValue; // уменьшаем значение яркости с шагом fadeValue } brightness = constrain(brightness, 0, 255); // Эта функция задает крайние точки диапазона для переменной brightness 0 и 255 analogWrite(ledPin, brightness); // устанавливаем на выводе ledPin значение яркости яркость brightness delay(50); // Пауза 50 миллисекунд. } |