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

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


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


* Плата '''Arduino''';
* [[Плата Arduino]]  - 1шт.
* Переменный резистор (вроде потенциометра);
* [[Потенциометр]] на [[10 кОм]] - 1шт.


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


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


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


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


== Код ==
== Код ==
Строка 28: Строка 29:
Перво-наперво нужно при помощи функции [[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>
Строка 34: Строка 35:
Далее перемещаемся к секции главного цикла. Вам нужно задать переменную, которая будет сохранять значение сопротивления (варьирующегося '''от 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>
Строка 40: Строка 41:
Чтобы поток с цифрами '''от 0 до 1023''' соответствовал напряжению, которое считывается на контакте, вам нужно создать еще одну, ''«плавающую»'' переменную ([[Arduino:Справочник языка Arduino/Типы данных/float|float]]), а вместе с ней – формулу. Чтобы создать диапазон цифр '''от 0.0 до 5.0''', поделите '''5.0 на 1023.0''', а затем умножьте это на '''sensorValue'''.
Чтобы поток с цифрами '''от 0 до 1023''' соответствовал напряжению, которое считывается на контакте, вам нужно создать еще одну, ''«плавающую»'' переменную ([[Arduino:Справочник языка Arduino/Типы данных/float|float]]), а вместе с ней – формулу. Чтобы создать диапазон цифр '''от 0.0 до 5.0''', поделите '''5.0 на 1023.0''', а затем умножьте это на '''sensorValue'''.


<syntaxhighlight lang="c" enclose="div">
<syntaxhighlight lang="c">
float voltage= sensorValue * (5.0 / 1023.0);
float voltage= sensorValue * (5.0 / 1023.0);
</syntaxhighlight>
</syntaxhighlight>
Строка 46: Строка 47:
И, наконец, вам нужно вывести эту информацию в меню '''Serial Monitor'''. Это можно сделать при помощи команды [[Arduino:Справочник языка Arduino/Функции/Функции передачи данных/Serial/println()|Serial.println()]] в последней строчке программы:
И, наконец, вам нужно вывести эту информацию в меню '''Serial Monitor'''. Это можно сделать при помощи команды [[Arduino:Справочник языка Arduino/Функции/Функции передачи данных/Serial/println()|Serial.println()]] в последней строчке программы:


<syntaxhighlight lang="c" enclose="div">
<syntaxhighlight lang="c">
Serial.println(voltage)
Serial.println(voltage)
</syntaxhighlight>
</syntaxhighlight>
Строка 52: Строка 53:
Теперь, когда вы откроете окно '''Serial Monitor''' в среде разработки [[Arduino]] (нажав на кнопку, находящуюся справа от кнопки '''Upload''' вверху программы), то увидите непрерывный поток цифр, варьирующихся от '''0.0 до 5.0'''. Если повернуть ручку [[потенциометр]]а, цифры в этом потоке изменятся, отображая уровень напряжения, подаваемого на '''0-ой''' аналоговый входной контакт [[Arduino]].
Теперь, когда вы откроете окно '''Serial Monitor''' в среде разработки [[Arduino]] (нажав на кнопку, находящуюся справа от кнопки '''Upload''' вверху программы), то увидите непрерывный поток цифр, варьирующихся от '''0.0 до 5.0'''. Если повернуть ручку [[потенциометр]]а, цифры в этом потоке изменятся, отображая уровень напряжения, подаваемого на '''0-ой''' аналоговый входной контакт [[Arduino]].


<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">
/*
/*
   Считывание напряжения, проходящего через аналоговый контакт
   Считывание напряжения, проходящего через аналоговый контакт
Строка 78: Строка 79:
</syntaxhighlight>
</syntaxhighlight>


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


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


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


<references />
<references />


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


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

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

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


Считывание напряжения, проходящего через аналоговый контакт [1]

Данный пример показывает, как считывать данные с аналогового входа на 0-вом контакте Arduino, конвертировать их в напряжение при помощи функции analogRead(), а затем отображать в меню Serial Monitor («Мониторинг последовательной передачи данных»).

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

Цепь

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

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

В плату 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);

Чтобы поток с цифрами от 0 до 1023 соответствовал напряжению, которое считывается на контакте, вам нужно создать еще одну, «плавающую» переменную (float), а вместе с ней – формулу. Чтобы создать диапазон цифр от 0.0 до 5.0, поделите 5.0 на 1023.0, а затем умножьте это на sensorValue.

float voltage= sensorValue * (5.0 / 1023.0);

И, наконец, вам нужно вывести эту информацию в меню Serial Monitor. Это можно сделать при помощи команды Serial.println() в последней строчке программы:

Serial.println(voltage)

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

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

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

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

См.также

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

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