Arduino:Примеры/AnalogInput

Материал из Онлайн справочника
Версия от 09:22, 24 февраля 2023; Myagkij (обсуждение | вклад)
(разн.) ← Предыдущая версия | Текущая версия (разн.) | Следующая версия → (разн.)
Перейти к навигацииПерейти к поиску

Перевод: Максим Кузьмин
Проверка/Оформление/Редактирование: Мякишев Е.А.


Использование входных данных для управления частотой мигания светодиода [1]

Потенциометр – это обычный резистор, чье сопротивление можно настраивать с помощью небольшой ручки-регулятора. Если потенциометр подключить к плате Arduino, она может в режиме реального времени считывать изменяющееся сопротивление, принимая его за входное значение. В данном примере мы подключим потенциометр к одному из аналоговых контактов Arduino, чтобы с его помощью регулировать частоту мерцания встроенного светодиода, подключенного к 13-ому контакту.

Необходимое оборудование

Цепь

С потенциометром:

Рис. 1. Подключение потенциометра к плате Arduino.
Рис. 1. Подключение потенциометра к плате Arduino.

С фоторезистором:

Рис. 2. Подключение фоторезистора к плате Arduino.
Рис. 2. Подключение фоторезистора к плате Arduino.

Подсоедините к Arduino три провода. Первый пойдет от «земли» (GND) к одному из выходных контактов потенциометра. Второй – от 5-вольтового контакта ко второму выходному контакту потенциометра. Третий – от 0-ого аналогового входного контакта к среднему контакту потенциометра.

В этом примере можно воспользоваться «родным» для Arduino светодиодом, по умолчанию подключенным к 13-ому контакту. Впрочем, если вы хотите задействовать дополнительный светодиод, подсоедините его длинную ногу (ногу с позитивным зарядом, т.е. анод) к 13-ому цифровому контакту, а короткую (с отрицательным зарядом, т.н. катод) – к контакту с «землей», расположенному рядом с этим 13-ым контактом. Поскольку сила тока, который пойдет через 13-ый контакт, будет небольшой, токоограничивающий резистор использовать не обязательно.

Схема

С потенциометром:

Рис. 3.Схема подключения потенциометра к плате Arduino.
Рис. 3. Схема подключения потенциометра к плате Arduino.

С фоторезистором:

Рис. 4. Схема подключения фоторезистора к плате Arduino.
Рис. 4. Схема подключения фоторезистора к плате Arduino.

Вначале зададим три переменные – для 0-ого аналогового контакта, к которому подключен потенциометр (sensorPin), для 13-ого цифрового контакта (ledPin) и для данных, которые будут считываться от потенциометра (sensorValue).

Далее воспользуемся функцией analogRead(), которая переделает входное напряжение диапазоном от 0 до 5 вольт в численный диапазон от 0 до 1023. На «железном» уровне это выполняется за счет встроенного в Arduino аналогово-цифрового преобразователя или АЦП.

Поворачивая ручку потенциометра, вы меняете уровень сопротивления между центральным контактом и двумя боковыми контактами, а на выходе это дает разный уровень напряжения. Если выкрутить ручку до упора в одну сторону, это устранит сопротивление между центральным контактом и контактом, подсоединенным к «земле» – соответственно, уровень напряжения на центральном контакте будет «0», и analogRead() тоже вернет значение «0». Но если повернуть ручку потенциометра до упора в другую сторону, это устранит сопротивление между центральным и 5-вольтовым контактами – следовательно, уровень напряжения на центральном контакте будет равен «5», а analogRead() вернет значение «1023». Таким образом, если повернуть руку потенциометра в какую-либо промежуточную позицию, то входное напряжение, а затем и значение от analogRead() покажут результат, пропорциональный этой позиции.

Значение, хранимое в переменной sensorValue, используется для создания паузы(delay()) в мигании светодиода. Чем больше это значение, тем длиннее пауза, и наоборот.

/*
Использование входных данных для управления частотой мигания светодиода
Считывает данные от сенсора на 0-ом аналоговом контакте,
а затем использует их для включения/выключения светодиода, подключенного к 13-ому цифровому контакту. 
Время между включением/выключением светодиода зависит от значения, возвращенного функцией analogRead().

Цепь:
 * центральный контакт потенциометра подсоединен к 0-ому входному аналоговому контакту
 * один из боковых контактов (по сути, любой) потенциометра подсоединен к «земле», 
второй оставшийся контакт – к 5-вольтовому напряжению
 * анод (длинная нога) светодиода подсоединена к 13-ому цифровому выходному контакту,
катод (короткая нога)– к «земле»
 
 * Примечание: у многих Arduino уже есть встроенный светодиод, подключенный к 13-ому контакту, поэтому дополнительный светодиод использовать не обязательно.
 
 Создан Дэвидом Куартилье (David Cuartielles),
 модифицирован 30 августа 2011 Томом Иго (Tom Igoe)
 
 Этот код не защищен авторским правом.
 
 http://arduino.cc/en/Tutorial/AnalogInput
 
 */

int sensorPin = A0;    // задаем входной контакт для потенциометра
int ledPin = 13;       // задаем контакт для светодиода
int sensorValue = 0;   // в этой переменной будут храниться данные, полученные от сенсора (т.е. от потенциометра)

void setup() {
  // объявляем ledPin выходным контактом (т.е. OUTPUT):
  pinMode(ledPin, OUTPUT);  
}

void loop() {
  // считываем данные от потенциометра:
  sensorValue = analogRead(sensorPin);    
  // включаем светодиод:
  digitalWrite(ledPin, HIGH);  
  // останавливаем программу на количество миллисекунд,
  // соответствующее значению в переменной sensorValue:
  delay(sensorValue);          
  // выключаем светодиод:        
  digitalWrite(ledPin, LOW);   
  // останавливаем программу на количество миллисекунд,
  // соответствующее значению в переменной sensorValue:
  delay(sensorValue);                  
}

См.также

  1. pinMode()
  2. analogRead()
  3. digitalWrite()
  4. delay()
  5. AnalogReadSerial
  6. AnalogInOutSerial
  7. Fade
  8. Calibration

Внешние ссылки