Уроки Ардуино. Потенциометр Ардуино — используем потенциометр в проектах Arduino
Это третий урок курса по изучению Ардуино и здесь мы добавим еще идин электронный компонент – потенциометр. Потенциометр имеется в любом из наборов серии «Дерзай» («Базовый«, «Изучаем Arduino» и «Умный дом«). И мы создадим проект «Шкала потенциометра».
Для данного проекта Вам понадобятся следующие детали, которые имеются в каждом из наборов Arduino :
- Arduino Uno;
- Кабель USB;
- Плата прототипирования;
- Провода «папа-папа» — 15 шт;
- Резисторы 220 Ом – 8 шт;
- Светодиоды – 8 шт;
- Потенциометр.
Потенциометр является переменным делителем напряжения. Потенциометры бывают разных размеров и форм, но все имеют три вывода. Номинал потенциометра определяет сопротивление между крайними выводами, оно неизменно, поворотом шкалы мы изменяем сопротивление между средним и крайним выводов от 0 до номинала потенциометра, либо от номинала до нуля.
В этом уроке мы будем использовать аналоговый вход Arduino, и рассмотрим работу потенциометра в качестве аналогового датчика, и будем демонстрировать показания аналогового датчика с помощью шкалы из 8 светодиодов.
Для получения аналоговых данных, Arduino имеет аналоговые входы, оснащенные 10-разрядным аналого-цифровым преобразователем для аналоговых преобразований. Точность АЦП определена разрешением. 10-разрядный означает, что АЦП может разделить аналоговый сигнал на 210 различных значений. Следовательно Arduino может присвоить 210=1024 аналоговых значений, от 0 до 1023. Опорное напряжение определяет максимальное напряжение, его значение соответствует значению 1023 АЦП. При напряжении 0 В на контакте АЦП возвращает значение 0, опорное напряжение возвращает значение 1023. Несмотря на то, что возможно изменить опорное напряжение, мы будете использовать опорное напряжение 5 В.
И так, начнем с описания проекта. Восемь, подключенных к контроллеру Arduino, светодиодов расположены в ряд. Мы считываем показания с аналогового входа Arduino, к которому подключен потенциометр, и отображаем его значение на шкале из 8 светодиодов. Если сопротивление потенциометра (между первым и средним выводом) равно 0, то не горит ни один светодиод, при максимальном сопротивлении потенциометра горят все 8 светодиодов.
Собираем схему, показанную на рисунке 1.
Теперь приступим к написанию скетча.
В подпрограмме setup() настраиваем выводы подключения светодиодов, как выходы
const int pinsled[8]={5,6,7,8,9,10,11,12}; for(int i=0;i<8;i++) { // Сконфигурировать контакты подсоединения светодиодов как выходы pinMode(pinsled[i],OUTPUT); digitalWrite(pinsled[i],LOW); }
В основном цикле программы опрашиваем аналоговый вход A0 (вход подключения среднего вывода потенциометра) и аналоговые данные (0 – 1023) масштабируем в данные шкалы из светодиодов (0 – 8) с помощью функции map(), и зажигаем соответствующее количество светодиодов.
valpot = analogRead(POT); // чтение данных потенциометра // масштабируем значение к интервалу 0-8 countleds=map(valpot,0,1023,0,8); // зажигаем количество полосок на шкале, равное countled for(int i=0;i<8;i++) { if(i<countleds) // зажигаем светодиод шкалы digitalWrite(pinsled[i],HIGH); else // гасим светодиод шкалы digitalWrite(pinsled[i],LOW); }
Создадим в Arduino IDE новый скетч, занесем в него код из листинга 1 и загрузим скетч на на плату Arduino. Напоминаем, что в настройках Arduino IDE необходимо выбрать тип платы (Arduino UNO) и порт подключения платы.
Листинг 1
const int POT=0; // Аналоговый вход A0 для подключения потенциометра int valpot = 0; // переменная для хранения значения потенциометра // список контактов подключения светодиодной шкалы const int pinsled[8]={4,5,6,7,8,9,10,11}; int countleds = 0; // переменная для хранения значения шкалы void setup() { for(int i=0;i<10;i++) { // Сконфигурировать контакты подсоединения шкалы как выходы pinMode(pinsled[i],OUTPUT); digitalWrite(pinsled[i],LOW); } } void loop() { valpot = analogRead(POT); // чтение данных потенциометра // масштабируем значение к интервалу 0-8 countleds=map(valpot,0,1023,0,8); // зажигаем количество светодиодов, равное countled for(int i=0;i<8;i++) { if(i<countleds) // зажигаем светодиод шкалы digitalWrite(pinsled[i],HIGH); else // гасим светодиод шкалы digitalWrite(pinsled[i],LOW); } }
После загрузки вращаем ручку потенциометра и наблюдаем изменение значения на шкале из светодиодов (см. рисунок 2,3).
Рисунок 2,3. Шкала потенциометра
Один комментарий
Добавить комментарий
Для отправки комментария вам необходимо авторизоваться.
Подскажите, пожалуйста, как этот скетч переформатировать для работы со сдвиговым регистром 74hc595?
Желательно без функции millis ().
Спасибо!