Схема подключения кнопки с плате ардуино.
Обратите внимание, что кнопка притянута через резистор 10К к земле и нормально на выводе отсутствует напряжение (которое может появиться из-за внутренних подтягивающих резисторов 100К микроконтроллера) и при нажатии кнопки на выводе 2 Ардуины появляется высокий уровень, что и регистрирует функция digitalRead(2);
Схема была бы немного проще, если бы кнопку подключить не к плюсу питания, а к земле, можно было бы отказаться от внешнего резистора, но пострадала бы наглядность программы.
Кроме того подтягивающие резисторы включаются программно (с помощью фюзов) и в разных версиях компиляторов могут выставляться разные значения — т.е. вы будете ожидать включения подтягивающих резисторов, а они будут выключены и программа будет выдавать черт знает какие результаты. И понять кто виноват в том что все работает не так как нужно будет очень и очень трудно, так что в реальных проектах лучше не экономить на копеечных резисторах и явно притягивать выводы туда куда нужно по логике работы программы.
Ниже представлена монтажная схема на беспаечной макетной плате или если проще — макетке.
Код программы. В оригинальном примере из поставки ардуино вместо цифровых обозначений выводов используются константы, в больших программах это оправдано, а в простом примере приводит к ненужному усложнению кода. Поэтому я и использовал явное указание какой вывод чего должен делать.
// Button.ino
// Программа ждет нажатия на кнопку и включает светодиод, показывая что кнопка нажата
// Светодиод подключается к 13-му выходу
// Кнопка подключается ко 2-му
int buttonState = 0; // переменная в которую будем записывать состояние кнопки
void setup() {
pinMode(13, OUTPUT); // 13 вывод — цифровой выход
pinMode(2, INPUT); // вывод 2 инициализируем как вход
}
// основной цикл
void loop() {
buttonState = digitalRead(2); // читаем состояние на цифровом входе 2
if (buttonState == HIGH) { // если кнопка нажата, т.е. на ней присутствует напряжение питания
digitalWrite(13, HIGH); // подаем на 13-й вывод напряжение и светодиод зажигается
}
else {
digitalWrite(13, LOW); // а иначе тушим его, на выходе 13 устанавливаем низкий уровень напряжения
}
}
В конце как обычно проверяем программу на наличие ошибок и очепяток и заливаем в контроллер.
Для закрепления знаний попробуйте добавить в схему еще лампочек и кнопочек и написать программу управления светофором например 😉
Комментариев нет:
Отправить комментарий