Необходимые компоненты:
• контроллер Arduino UNO R3;
• плата для прототипирования;
• потенциометр 2 кОм;
• светодиодная шкала 10 сегментов;
• резистор 220 Ом;
• провода папа-папа.
В предыдущих экспериментах мы рассматривали работу с цифровыми выводами Arduino, они имеют только два возможных состояния: включено или выключено, HIGH или LOW, 1 или 0. Но для получения информации об окружающем мире необходимо работать с аналоговыми данными, имеющими бесконечное число возможных значений в данном диапазоне. Для получения аналоговых данных Arduino имеет аналоговые входы, оснащенные 10-разрядным аналого-цифровым преобразователем для аналоговых преобразований. Точность АЦП определена разрешением. 10-разрядный означает, что АЦП может разделить аналоговый сигнал на 210 различных значений. Следовательно, Arduino может присвоить 210 = 1024 аналоговых значения, от 0 до 1023. Опорное напряжение определяет максимальное напряжение, его значение соответствует значению 1023 АЦП. При напряжении 0 В на контакте АЦП возвращает значение 0, опорное напряжение возвращает значение 1023. Несмотря на то что можно изменить опорное напряжение, мы будем использовать опорное напряжение 5 В.
Рассмотрим, как использовать потенциометр в качестве аналогового датчика. Рисунок 4.1 показывает, как правильно подключить ваш
потенциометр к Arduino в качестве аналогового датчика. Мы подключаем один из крайних выводов на землю, другой крайний вывод – к +5 В. Средний вывод потенциометра подключаем к аналоговому входу A0 платы Arduino. Для считывания данных с аналогового порта в Arduino есть функция analogRead().
Загружаем на плату Arduino скетч из листинга 4.1 для считывания значений из аналогового порта и вывода их в монитор последовательного порта Arduino.
const int POT=0; // Аналоговый вход A0 для подключения потенциометра
int valpot = 0; // переменная для хранения значения потенциометра
void setup()
{
Serial.begin(9600);
}
void loop()
{
valpot = analogRead(POT); // чтение данных потенциометра
Serial.println(valpot); // вывод значений в последовательный порт
delay(500); // задержка 0.5 сек
}
Порядок подключения:
1. Подключаем потенциометр по схеме на рис. 4.1.
2. Загружаем в плату Arduino скетч из листинга 4.1.
3. Запускаем в Arduino IDE монитор последовательного порта.
4. Поворачиваем ручку потенциометра и наблюдаем вывод аналоговых значений потенциометра в монитор последовательного порта (см. рис. 4.2).
Теперь визуализируем аналоговые данные потенциометра с помощью 10-разрядной линейной светодиодной шкалы. Шкала представляет собой сборку из 10 независимых светодиодов с катодами со стороны надписи на корпусе. Для подключения шкалы к Arduino будем использовать 10 цифровых выводов D3–D12. Схема соединений показана на рис. 4.3. Каждый из светодиодов шкалы выводом анода соединен с цифровым выводом Arduino, а катодом на землю через последовательно соединенный ограничивающий резистор 220 Ом. Аналоговые данные потенциометра (0–1023) масштабируем в данные шкалы (0–10) с помощью функции map() и зажигаем соответствующее количество светодиодов. Скетч приведен в листинге 4.2.
const int POT=0; // Аналоговый вход A0 для подключения потенциометра
int valpot = 0; // переменная для хранения значения потенциометра
// список контактов подключения светодиодной шкалы
const int pinsled[10]={3,4,5,6,7,8,9,10,11,12};
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-10
countled=map(valpot,0,1023,0,10);
// зажигаем количество полосок на шкале, равное countled
for(int i=0;i<10;i++)
{
if(i<countleds) // зажигаем светодиод шкалы
digitalWrite(pinsled[i],HIGH);
else // гасим светодиод шкалы
digitalWrite(pinsled[i],LOW);
}
}
Порядок подключения:
1. Подключаем потенциометр по схеме на рис. 4.1.
2. Подключаем выводы светодиодной шкалы контактами анодов через ограничительные резисторы номиналом 220 Ом к выводам Arduino D3–D12, контактами катодов – на землю (см. рис. 4.3).
3. Загружаем в плату Arduino скетч из листинга 4.2.
4. Поворачиваем ручку потенциометра и наблюдаем на светодиодной шкале уровень значения потенциометра от максимального номинала.