Arduino:Примеры/AnalogReadSerial: различия между версиями

Материал из Онлайн справочника
Перейти к навигацииПерейти к поиску
Нет описания правки
Нет описания правки
(не показана 1 промежуточная версия этого же участника)
Строка 4: Строка 4:
== Считывание последовательной передачи данных через аналоговый контакт <ref>[http://www.arduino.cc/en/Tutorial/AnalogReadSerial Arduino - AnalogReadSerial]</ref>==
== Считывание последовательной передачи данных через аналоговый контакт <ref>[http://www.arduino.cc/en/Tutorial/AnalogReadSerial Arduino - AnalogReadSerial]</ref>==


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


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


== Необходимое оборудование ==
== Необходимое оборудование ==
Строка 15: Строка 15:
== Цепь ==
== Цепь ==


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


[[File:AnalogReadSerial_Circuit.png]]
[[File:AnalogReadSerial_Circuit.png|center]]


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


== Схема ==
== Схема ==


[[File:AnalogReadSerial_Schematic.png]]
[[File:AnalogReadSerial_Schematic.png|center]]


== Код ==
== Код ==


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


<syntaxhighlight lang="c" enclose="div">
<syntaxhighlight lang="c" enclose="div">
Строка 40: Строка 41:
</syntaxhighlight>
</syntaxhighlight>


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


<syntaxhighlight lang="c" enclose="div">
<syntaxhighlight lang="c" enclose="div">
Строка 46: Строка 47:
</syntaxhighlight>
</syntaxhighlight>


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


<syntaxhighlight lang="c" line="GESHI_NORMAL_LINE_NUMBERS|GESHI_FANCY_LINE_NUMBERS" enclose="div">
<syntaxhighlight lang="c" line="GESHI_NORMAL_LINE_NUMBERS|GESHI_FANCY_LINE_NUMBERS" enclose="div">

Версия от 10:42, 22 июня 2019

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

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

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

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

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

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

Цепь

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

Поворачивая ручку на потенциометре, вы изменяете количество сопротивления с каждой стороны движка, подсоединенного к центральному контакту потенциометра. Это, в свою очередь, меняет на центральном контакте уровень напряжения. Когда сопротивление между центральным и боковым (тем, который подключен к на Arduino) контактами приблизится к 0 Ом (а сопротивление на противоположном контакте, соответственно, – к 10 кОм), напряжение на центральном контакте приблизится к значению в . Это напряжение является аналоговым напряжением – тем, которое вы будете считывать как входное.

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

Схема

Код

Единственная вещь, которую нужно задать в функции 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 и соответствующих той или иной позиции потенциометра. То есть, стоит повернуть потенциометр, и поток цифр мгновенно отреагирует на это действие новыми изменениями.

/*
  Считывание последовательной передачи данных через аналоговый контакт
  Считывает входные аналоговые данные от 0-го контакта, отображая результаты в меню Serial Monitor.
  Подсоединяем центральный контакт потенциометра к 0-му аналоговому контакту (A0), а крайние (боковые) контакты потенциометра – к «земле» и 5-вольтному контакту.
 
  Данный пример кода не защищен авторским правом.
 */

// эта функция запускается один раз – при рестарте:
void setup() {
  // инициализируем последовательную передачу данных со скоростью 9600 бит в секунду:
  Serial.begin(9600);
}

// этот цикл, запустившись, будет повторятся снова и снова:
void loop() {
  // считываем входные данные на 0-вом аналоговом контакте:
  int sensorValue = analogRead(A0);
  // отображаем считанную информацию:
  Serial.println(sensorValue);
  delay(1);        // задержка между считываниями – для стабильности программы
}

См.также

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

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