Чтение сигнала и digitalRead

Работа с сигналами кнопок при помощи GPIO-расширителя также не отличается сложностью. Для чтения сигнала на контакте используем хорошо знакомую функцию digitalRead. Как и в предыдущем примере, для вызова digitalRead на расширителе используем переменную mcp.

Кнопку подключим по схеме с подтяжкой. А именно, без всяких резисторов одну ножку кнопки соединим с контактом расширителя G1, а другую с землей Gnd. При этом, контакт G1 подтянем к питанию.

При таком подключении, кнопка будет работать инверсно: в свободном состоянии на контакте G1 будет высокий уровень сигнала — HIGH (из-за подтяжки), а если кнопку нажать — уровень станет низким (LOW), так как G1 через контакты кнопки соединится с землей.

Напишем простую программу, которая будет зажигать светодиод G0 в зависимости от нажатия кнопки на контакте G1 расширителя.

#include "Adafruit_MCP23017.h"

const byte ledPin = 0;
const byte btnPin = 1;

Adafruit_MCP23017 mcp;

void setup() {
mcp.begin(7); // инициализация модуля с адресом 0x07
mcp.pinMode(ledPin, OUTPUT); // настройка контакта G0 на вывод
mcp.pinMode(btnPin, INPUT); // настройка контакта G1 на ввод
mcp.pullUp(btnPin, HIGH); // подтяжка контакта G1 к питанию
}
void loop() {
if(mcp.digitalRead(btnPin)==LOW) // если кнопка нажата, то
mcp.digitalWrite(ledPin, HIGH); // зажигаем светодиод
else // иначе
mcp.digitalWrite(ledPin, LOW); // гасим светодиод
}

Функция pullUp осуществляет ту самую подтяжку контакта к питанию через сопротивление 100кОм. Весь остальной код нам хорошо знаком из уроков про кнопки и Ардуино. Загружаем программу на Ардуино и жмем кнопку — видим свет!

На этом урок можно закончить. Теперь у нас есть мощный инструмент, который может легко победить нехватку GPIO контактов а Ардуино. В следующем разделе будут чуть более углубленные сведения о модуле, касающиеся работы с прерываниями.

0

Изменено:

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *

Этот сайт использует Akismet для борьбы со спамом. Узнайте, как обрабатываются ваши данные комментариев.