Найти в Дзене
informatics_for_everyone

Подключение кнопки к Arduino

Адаптировать схему к набору ArduinoStart!

Набор:

Кнопка, светодиод, резистор (10 кОм)

Программа. Светодиод горит при нажатой кнопке
// переменные с пинами подключенных устройств
int switchPin = 8;
int ledPin = 13;

void setup() {pinMode(switchPin, INPUT);
pinMode (ledPin, OUTPUT);
}
void loop()

{ // включаем светодиод при нажатой кнопке
if(digitalRead(switchPin) == HIGH) { digitalWrite(ledPin, HIGH);
} else {digitalWrite(ledPin, LOW);
} }

Объявляем переменные со значениями пинов к которым у нас подключены кнопка и светодиод. Далее в функции setup() мы обозначаем какой пин используется как вход, а какой как выход. В функции loop() мы используем условный оператор if с оператором сравнения и проверяем приходит ли на пин 8 высокий сигнал. Если да то включаем светодиод, если нет то выключаем.

Теперь мы будем управлять яркостью светодиода. Для этого нам надо немного изменить схему нашего устройства. Для управления яркостью мы будем использовать ШИМ. Значит нам надо подключить светодиод к выходу, который может выдавать ШИМ
Теперь мы будем управлять яркостью светодиода. Для этого нам надо немного изменить схему нашего устройства. Для управления яркостью мы будем использовать ШИМ. Значит нам надо подключить светодиод к выходу, который может выдавать ШИМ

Теперь светодиод подключен к 11 пину Arduino, которой умеет делать ШИМ. Добавим токоограничивающий резистор на 220 Ом перед светодиодом, что бы его не спалить. Это необходимо потому, что светодиоды работают при напряжении 3.3 В, а пин ардуино отдает 5 В.

// переменные с пинами подключенных устройств
int switchPin = 8;
int ledPin = 11;
// переменные для хранения состояния кнопки и светодиода
boolean lastButton = LOW;
boolean currentButton = LOW;
int ledLevel = 0;
void setup() { pinMode(switchPin, INPUT);
pinMode(ledPin, OUTPUT);
}
// функция для подавления дребезга
boolean debounse(boolean last) { boolean current = digitalRead(switchPin);
if(last != current) { delay(5);
current = digitalRead(switchPin);
} return current;
}
void loop() { currentButton = debounse(lastButton);
if(lastButton == LOW && currentButton == HIGH) { ledLevel = ledLevel + 51;
} lastButton = currentButton;
if(ledLevel > 255) ledLevel = 0;
analogWrite(ledPin, ledLevel);
}