Cat hungry.png
Здравствуйте! Собираем деньги на перевод материалов по электронике(https://www.allaboutcircuits.com/education/). Реквизиты указаны здесь.

Arduino:Примеры/AnalogInput

Материал из Онлайн справочника
Перейти к: навигация, поиск

Перевод: Максим Кузьмин (Cubewriter)
Перевел 2686 статей для сайта.

Контакты:

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


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

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

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

  • Плата Arduino;
  • Потенциометр или любой другой резистор с переменным сопротивлением вроде фоторезистора (плюс резистор на 10 кОм);
  • «Родной» светодиод, подключенный к 13-ому контакту;

Цепь

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

Graph-circuit3 AnalogInput.png

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

PhotoCellA0 AnalogInput.png

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

Схема

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

AnalogReadSerial sch AnalogInput.png

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

PhotoResistorA0 schem AnalogInput.png

Вначале зададим три переменные – для 0-ого аналогового контакта, к которому подключен потенциометр (sensorPin), для 13-ого цифрового контакта (ledPin) и для данных, которые будут считываться от потенциометра (sensorValue). Далее воспользуемся функцией analogRead(), которая переделает входное напряжение диапазоном от 0 до 5 вольт в численный диапазон от 0 до 1023. На «железном» уровне это выполняется за счет встроенного в Arduino аналогово-цифрового преобразователя или АЦП. Поворачивая ручку потенциометра, вы меняете уровень сопротивления между центральным контактом и двумя боковыми контактами, а на выходе это дает разный уровень напряжения. Если выкрутить ручку до упора в одну сторону, это устранит сопротивление между центральным контактом и контактом, подсоединенным к «земле» – соответственно, уровень напряжения на центральном контакте будет «0», и analogRead() тоже вернет значение «0». Но если повернуть ручку потенциометра до упора в другую сторону, это устранит сопротивление между центральным и 5-вольтовым контактами – следовательно, уровень напряжения на центральном контакте будет равен «5», а analogRead() вернет значение «1023». Таким образом, если повернуть руку потенциометра в какую-либо промежуточную позицию, то входное напряжение, а затем и значение от analogRead() покажут результат, пропорциональный этой позиции. Значение, хранимое в переменной sensorValue, используется для создания паузы(delay()) в мигании светодиода. Чем больше это значение, тем длиннее пауза, и наоборот.

  1. /*
  2. Использование входных данных для управления частотой мигания светодиода
  3. Считывает данные от сенсора на 0-ом аналоговом контакте,
  4. а затем использует их для включения/выключения светодиода, подключенного к 13-ому цифровому контакту.
  5. Время между включением/выключением светодиода зависит от значения, возвращенного функцией analogRead().
  6.  
  7. Цепь:
  8.  * центральный контакт потенциометра подсоединен к 0-ому входному аналоговому контакту
  9.  * один из боковых контактов (по сути, любой) потенциометра подсоединен к «земле»,
  10. второй оставшийся контакт – к 5-вольтовому напряжению
  11.  * анод (длинная нога) светодиода подсоединена к 13-ому цифровому выходному контакту,
  12. катод (короткая нога)– к «земле»
  13.  
  14.  * Примечание: у многих Arduino уже есть встроенный светодиод, подключенный к 13-ому контакту, поэтому дополнительный светодиод использовать не обязательно.
  15.  
  16.  Создан Дэвидом Куартилье (David Cuartielles),
  17.  модифицирован 30 августа 2011 Томом Иго (Tom Igoe)
  18.  
  19.  Этот код не защищен авторским правом.
  20.  
  21.  http://arduino.cc/en/Tutorial/AnalogInput
  22.  
  23.  */
  24.  
  25. int sensorPin = A0;    // задаем входной контакт для потенциометра
  26. int ledPin = 13;       // задаем контакт для светодиода
  27. int sensorValue = 0;   // в этой переменной будут храниться данные, полученные от сенсора (т.е. от потенциометра)
  28.  
  29. void setup() {
  30.   // объявляем ledPin выходным контактом (т.е. OUTPUT):
  31.   pinMode(ledPin, OUTPUT);  
  32. }
  33.  
  34. void loop() {
  35.   // считываем данные от потенциометра:
  36.   sensorValue = analogRead(sensorPin);    
  37.   // включаем светодиод:
  38.   digitalWrite(ledPin, HIGH);  
  39.   // останавливаем программу на количество миллисекунд,
  40.   // соответствующее значению в переменной sensorValue:
  41.   delay(sensorValue);          
  42.   // выключаем светодиод:        
  43.   digitalWrite(ledPin, LOW);  
  44.   // останавливаем программу на количество миллисекунд,
  45.   // соответствующее значению в переменной sensorValue:
  46.   delay(sensorValue);                  
  47. }

См.также

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

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

  1. Arduino - Analog Input