Этот пример демонстрирует использование INPUT_PULLUP с pinMode(). Он отслеживает состояние переключателя, устанавливая соединение между вашим Arduino и вашим компьютером через USB.
Когда вход HIGH, встроенный светодиод, подключенный к пину 13, включится; когда LOW, светодиод выключится.
Необходимое оборудование:
- Плата Arduino
- Моментальный переключатель, кнопка или тумблер
- Макетная плата
- Провод для подключения
Подключение
Схема: Подключите два провода к плате Arduino. Черный провод подключает землю к одной ножке кнопки. Второй провод идет от цифрового пина 2 к другой ножке кнопки.
Кнопки или переключатели соединяют две точки в цепи, когда вы нажимаете их. Когда кнопка открыта (не нажата), между двумя ножками кнопки нет соединения. Поскольку внутренний подтягивающий резистор на пине 2 активен и подключен к 5V, мы читаем HIGH, когда кнопка открыта. Когда кнопка закрыта, Arduino читает LOW, потому что замыкается соединение с землей.
Код
В программе ниже, самое первое, что вы делаете в функции setup, - начинаете соединение, со скоростью 9600 бод данных в секунду, между вашим Arduino и вашим компьютером с помощью строки
Serial.begin(9600);
Затем инициализируйте цифровой пин 2 как вход с включенным внутренним подтягивающим резистором
pinMode(2,INPUT_PULLUP);
Следующая строка делает пин 13, со встроенным светодиодом, выходом
pinMode(13, OUTPUT);
Теперь, когда ваша настройка завершена, перейдите в основной цикл вашего кода. Когда ваша кнопка не нажата, внутренний подтягивающий резистор подключается к 5 вольтам. Это заставляет Arduino считывать “1” или HIGH. Когда кнопка нажата, пин Arduino подтягивается к земле, что заставляет Arduino считывать “0” или LOW.
Первое, что вам нужно сделать в основном цикле вашей программы, - это установить переменную для хранения информации, поступающей от вашего переключателя. Поскольку информация, поступающая от переключателя, будет либо “1”, либо “0”, вы можете использовать тип данных int. Назовите эту переменную sensorValue и установите ее равной тому, что считывается на цифровом пине 2. Вы можете выполнить все это с помощью одной строки кода
int sensorValue = digitalRead(2);
После того как Arduino прочитал вход, заставьте его распечатать эту информацию обратно на компьютер в виде десятичного (DEC) значения. Вы можете сделать это с помощью команды Serial.println() в нашей последней строке кода
Serial.println(sensorValue, DEC);
Теперь, когда вы откроете Serial Monitor в Arduino IDE (щелкнув значок справа от верхней зеленой полосы или нажав Ctrl+Shift+M), вы увидите поток “0”, если ваш переключатель закрыт, или “1”, если ваш переключатель открыт.
Светодиод на пине 13 будет светиться, когда переключатель HIGH, и выключаться, когда LOW.
void setup() {
// устанавливаем соединение:
Serial.begin(9600);
// инициализируем цифровой пин 2 как вход с включенным внутренним подтягивающим резистором:
pinMode(2, INPUT_PULLUP);
// делаем пин 13, со встроенным светодиодом, выходом:
pinMode(13, OUTPUT);
}
void loop() {
// устанавливаем переменную для хранения информации, поступающей от вашего переключателя:
int sensorValue = digitalRead(2);
// выводим эту информацию обратно на компьютер в виде десятичного значения:
Serial.println(sensorValue, DEC);
// светодиод на пине 13 будет светиться, когда переключатель HIGH, и выключаться, когда LOW:
digitalWrite(13, sensorValue);
}