• значение 127 соответствует скважности 50% (половина времени HIGH, половина времени LOW).
На графиках рис. 2.4 видно, что для сигнала со скважностью 25% значение HIGH действует в течение четверти периода, а остальные 75% времени установлено значение LOW. Частота прямоугольной последовательности импульсов в случае
- 52 -
с Arduino составляет приблизительно 490 Гц. Другими словами, уровень сигнала меняется от высокого (5 В) к низкому (0 В) приблизительно 490 раз каждую секунду.
Как видим, напряжение, подаваемое на светодиод, на самом деле не понижается, почему же при уменьшении скважности наблюдается спад яркости свечения светодиода? Это связано с особенностью нашего зрения. Если светодиод включается и выключается один раз за 1 мс (при скважности 50%), то вам кажется, что яркость свечения светодиода составляет приблизительно 50% от максимальной, потому что переключение происходит быстрее, чем глаза могут это зафиксировать. Ваш мозг фактически усредняет сигнал и создается впечатление, что светодиод работает на половине яркости.
2.7. Считывание данных с цифровых контактов
Рассмотрим еще одну функцию цифровых контактов. До сих пор мы использовали их в качестве выходов, генерируя цифровой сигнал и ШИМ-сигнал. Следующий шаг - функционирование контактов платы Arduino в качестве входов. Это позволит подключить, например, переключатели и кнопки для взаимодействия со своим устройством в режиме реального времени. В этом разделе вы научитесь считывать значения на входе, узнаете о стягивающих и подтягивающих резисторах, сможете обрабатывать в программе нажатие кнопки.
Изменим схему, изображенную на рис. 2.1. Подключим к цифровому контакту кнопку и стягивающий резистор, в результате схема примет вид, представленный на рис. 2.5.
Совет Проверьте, что шины питания и земли обеих плат надежно соединены друг с другом. Тогда в дальнейшем вы сможете легко менять элементы на макетной плате.
Прежде чем написать программу опроса состояния кнопки, важно понять назначение резистора в этой схеме. Почти для всех цифровых входов необходим дополнительный стягивающий (pull-down) или подтягивающий (pull-up) резисторы для установки "значения по умолчанию" на входном контакте. Представьте себе, что в схеме на рис. 2.5 нет резистора 10 кОм. В этом случае при нажатии на кнопку на выводе будет значение HIGH. Но что происходит, когда кнопка не нажата? В такой ситуации входной контакт не привязан ни к чему, как говорят, "висит в воздухе".
А поскольку вывод физически не подключен ни к 0 В, ни к 5 В, чтение значения может дать неожиданный результат. Электрические помехи на близлежащих выводах могут привести к тому, что значение напряжения будет колебаться между HIGH и LOW. Чтобы предотвратить это, стягивающий резистор подключают так, как показано на рис. 2.5.
- 53 -
Рис. 2.5. Подключение кнопки и светодиода к плате Arduino
Посмотрим, что происходит, когда кнопка не нажата, а входной контакт подключен через стягивающий резистор 10 кОм к земле. Через резистор протекает ток утечки и на входном контакте будет установлено значение напряжения LOW. 10 кОм - довольно распространенный номинал для стягивающего резистора. При нажатии на кнопку входной контакт оказывается напрямую связан с шиной 5 В. Теперь ток может течь двумя путями: