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

Arduino:Примеры/AnalogReadSerial

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

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

Контакты:

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

Считывание последовательной передачи данных через аналоговый контакт [1]

Данный пример показывает, как считывать на аналоговом входе информацию, идущую из физического мира, используя при этом потенциометр.

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

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

  • Плата Arduino;
  • Потенциометр на 10 кОм;

Цепь

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

AnalogReadSerial Circuit.png

Поворачивая ручку на потенциометре, вы изменяете количество сопротивления с каждой стороны движка, подсоединенного к центральному контакту потенциометра. Это, в свою очередь, меняет на центральном контакте уровень напряжения. Когда сопротивление между центральным и боковым (тем, который подключен к на Arduino) контактами приблизится к 0 Ом (а сопротивление на противоположном контакте, соответственно, – к 10 кОм), напряжение на центральном контакте приблизится к значению в . Это напряжение является аналоговым напряжением – тем, которое вы будете считывать как входное. В плату Arduino уже встроен аналогово-цифровой преобразователь (АЦП), который считывает меняющееся напряжение и конвертирует его в цифры от 0 до 1023. Если ручку потенциометра до упора повернуть в одном направлении, на контакт не будет подано ни одного вольта, поэтому и входное значение будет равно «0». Но если повернуть ручку потенциометра до упора в противоположном направлении, то на контакт пойдут максимальные , а входное значение станет равно «1023». А функция analogRead(), тем временем, займется считыванием значений от 0 до 1023, которые будут соответствовать тому или иному уровню напряжения, поданному на контакт.

Схема

AnalogReadSerial Schematic.png

Код

Единственная вещь, которую нужно задать в функции setup() – это последовательная передача данных между Arduino и вашим компьютером (со скоростью 9600 бит в секунду). Это делается с помощью нижеследующей строки кода:

Serial.begin(9600);

Далее перемещаемся к секции главного цикла. Здесь нужно создать переменную, которая будет сохранять значение сопротивления (от 0 до 1023; идеальный вариант для этого случая – тип данных int), идущего от вашего потенциометра:

int sensorValue = analogRead(A0);

Наконец, вам надо отобразить эту информацию в меню «Мониторинг последовательной передачи данных» (Serial Monitor) в виде десятичного (DEC) значения. Это можно сделать при помощи команды Serial.println() в последней строке кода:

Serial.println(sensorValue, DEC)

Теперь, когда вы открыли Serial Monitor в среде разработки Arduino (нажав на кнопку, находящуюся справа от кнопки Upload вверху программы), то должны видеть непрерывный поток цифр, варьирующихся от 0 до 1023 и соответствующих той или иной позиции потенциометра. То есть, стоит повернуть потенциометр, и поток цифр мгновенно отреагирует на это действие новыми изменениями.

  1. /*
  2.   Считывание последовательной передачи данных через аналоговый контакт
  3.   Считывает входные аналоговые данные от 0-го контакта, отображая результаты в меню Serial Monitor.
  4.   Подсоединяем центральный контакт потенциометра к 0-му аналоговому контакту (A0), а крайние (боковые) контакты потенциометра – к «земле» и 5-вольтному контакту.
  5.  
  6.   Данный пример кода не защищен авторским правом.
  7.  */
  8.  
  9. // эта функция запускается один раз – при рестарте:
  10. void setup() {
  11.   // инициализируем последовательную передачу данных со скоростью 9600 бит в секунду:
  12.   Serial.begin(9600);
  13. }
  14.  
  15. // этот цикл, запустившись, будет повторятся снова и снова:
  16. void loop() {
  17.   // считываем входные данные на 0-вом аналоговом контакте:
  18.   int sensorValue = analogRead(A0);
  19.   // отображаем считанную информацию:
  20.   Serial.println(sensorValue);
  21.   delay(1);        // задержка между считываниями – для стабильности программы
  22. }

См.также

  1. setup()‎
  2. loop()
  3. analogRead()
  4. int
  5. Serial
  6. BareMinimum
  7. Blink
  8. DigitalReadSerial
  9. AnalogReadSerial
  10. Fade
  11. ReadAnalogVoltage

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

  1. Arduino - AnalogReadSerial