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

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


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


* Плата '''Arduino''';
* [[Плата Arduino]] - 1 шт.;
* Потенциометр на '''10 кОм''';
* [[Потенциометр]] на [[10 кОм]] - 1 шт.;


== Цепь ==
== Цепь ==


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


[[File:AnalogReadSerial_Circuit.png|center]]
[[File:AnalogReadSerial_Circuit.png|center|frame|'''Рис. 1.''' [[Плата Arduino]] с подключенным [[потенциометр]]ом.|alt=Рис. 1. Плата Arduino с подключенным потенциометром.]]


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


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


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


[[File:AnalogReadSerial_Schematic.png|center]]
[[File:AnalogReadSerial_Schematic.png|center|frame|'''Рис. 2.''' Схема подключения [[потенциометр]]а к [[плате Arduino]].|alt=Рис. 2. Схема подключения потенциометра к плате Arduino.]]


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


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


<syntaxhighlight lang="c" enclose="div">
<syntaxhighlight lang="c">
Serial.begin(9600);
Serial.begin(9600);
</syntaxhighlight>
</syntaxhighlight>


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


<syntaxhighlight lang="c" enclose="div">
<syntaxhighlight lang="c">
int sensorValue = analogRead(A0);
int sensorValue = analogRead(A0);
</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">
Serial.println(sensorValue, DEC)
Serial.println(sensorValue, DEC)
</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">
/*
/*
   Считывание последовательной передачи данных через аналоговый контакт
   Считывание последовательной передачи данных через аналоговый контакт
Строка 74: Строка 75:
</syntaxhighlight>
</syntaxhighlight>


==См.также==
=См.также=


# [[Arduino:Справочник языка Arduino/setup()‎|setup()‎]]
# [[Arduino:Справочник языка Arduino/setup()‎|setup()‎]]
Строка 88: Строка 89:
# [[Arduino:Примеры/ReadAnalogVoltage|ReadAnalogVoltage]]
# [[Arduino:Примеры/ReadAnalogVoltage|ReadAnalogVoltage]]


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


<references />
<references />


{{Навигационная таблица/Справочник языка Arduino}}
{{Навигационная таблица/Портал/Arduino}}
{{Навигационная таблица/Arduino библиотеки}}


[[Категория:Пример]]
[[Категория:Пример]]
Строка 99: Строка 99:
[[Категория:Пример программирования Arduino]]
[[Категория:Пример программирования Arduino]]
[[Категория:Примеры программирования Arduino]]
[[Категория:Примеры программирования Arduino]]
[[Категория:setup]]
[[Категория:setup()]]
[[Категория:void]]
[[Категория:Serial.begin(9600)]]
[[Категория:Serial]]
[[Категория:Serial.begin()]]
[[Категория:begin()]]
[[Категория:begin]]
[[Категория:loop()]]
[[Категория:loop]]
[[Категория:analogRead(A0)]]
[[Категория:analogRead()]]
[[Категория:analogRead]]
[[Категория:Serial.println()]]
[[Категория:Serial.println]]
[[Категория:println]]
[[Категория:println()]]
[[Категория:delay(1)]]
[[Категория:delay()]]
[[Категория:delay]]

Текущая версия от 18:26, 2 сентября 2023

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


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

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

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

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

Цепь

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

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

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

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

Схема

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

Код

Единственная вещь, которую нужно задать в функции 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

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