Arduino:Примеры/AnalogReadSerial: различия между версиями
Myagkij (обсуждение | вклад) (→Цепь) |
Myagkij (обсуждение | вклад) Нет описания правки |
||
(не показано 10 промежуточных версий этого же участника) | |||
Строка 1: | Строка 1: | ||
{{Arduino панель перехода}} | {{Arduino панель перехода}} | ||
{{Перевод от Сubewriter}} | {{Перевод от Сubewriter}} | ||
{{Myagkij-редактор}} | {{Myagkij-редактор}} | ||
Строка 17: | Строка 16: | ||
== Цепь == | == Цепь == | ||
Подсоедините [[Arduino]] к [[потенциометр]]у при помощи трех проводов. Первый пойдет от | Подсоедините [[Arduino]] к [[потенциометр]]у при помощи трех проводов. Первый пойдет от «земли» к выходному контакту [[потенциометр]]а. Второй пойдет от контакта с 5В напряжением ко второму выходному контакту [[потенциометр]]а. Третий пойдет от 0-го аналогового входного контакта («входа») на [[Arduino]] к центральному (среднему) контакту на [[потенциометр]]е. | ||
[[File:AnalogReadSerial_Circuit.png|center|'''Рис. 1.''' | [[File:AnalogReadSerial_Circuit.png|center|frame|'''Рис. 1.''' [[Плата Arduino]] с подключенным [[потенциометр]]ом.|alt=Рис. 1. Плата Arduino с подключенным потенциометром.]] | ||
Поворачивая ручку на [[потенциометр]]е, вы изменяете количество сопротивления с каждой стороны движка, подсоединенного к центральному контакту [[потенциометр]]а. Это, в свою очередь, меняет на центральном контакте уровень напряжения. Когда сопротивление между центральным и боковым (тем, который подключен к | Поворачивая ручку на [[потенциометр]]е, вы изменяете количество сопротивления с каждой стороны движка, подсоединенного к центральному контакту [[потенциометр]]а. Это, в свою очередь, меняет на центральном контакте уровень напряжения. Когда сопротивление между центральным и боковым (тем, который подключен к 5В на [[Arduino]]) контактами приблизится к 0 Ом (а сопротивление на противоположном контакте, соответственно, – к [[10 кОм]]), напряжение на центральном контакте приблизится к значению в 5В. Это напряжение является аналоговым напряжением – тем, которое вы будете считывать как входное. | ||
В плату [[Arduino]] уже встроен [[аналогово-цифровой преобразователь]]([[АЦП]]), который считывает меняющееся напряжение и конвертирует его в цифры от | В плату [[Arduino]] уже встроен [[аналогово-цифровой преобразователь]]([[АЦП]]), который считывает меняющееся напряжение и конвертирует его в цифры от 0 до 1023. Если ручку [[потенциометр]]а до упора повернуть в одном направлении, на контакт не будет подано ни одного вольта, поэтому и входное значение будет равно «0». Но если повернуть ручку [[потенциометр]]а до упора в противоположном направлении, то на контакт пойдут максимальные 5В, а входное значение станет равно «1023». А функция [[Arduino:Справочник языка Arduino/Функции/Аналоговый ввод/вывод/analogRead()|analogRead()]], тем временем, займется считыванием значений от 0 до 1023, которые будут соответствовать тому или иному уровню напряжения, поданному на контакт. | ||
== Схема == | == Схема == | ||
Строка 31: | Строка 30: | ||
== Код == | == Код == | ||
Единственная вещь, которую нужно задать в функции [[Arduino:Справочник языка Arduino/setup()|setup()]] – это последовательная передача данных между [[Arduino]] и вашим [[компьютер]]ом (со скоростью | Единственная вещь, которую нужно задать в функции [[Arduino:Справочник языка Arduino/setup()|setup()]] – это последовательная передача данных между [[Arduino]] и вашим [[компьютер]]ом (со скоростью 9600 бит в секунду). Это делается с помощью нижеследующей строки кода: | ||
<syntaxhighlight lang="c | <syntaxhighlight lang="c"> | ||
Serial.begin(9600); | Serial.begin(9600); | ||
</syntaxhighlight> | </syntaxhighlight> | ||
Далее перемещаемся к секции главного цикла. Здесь нужно создать переменную, которая будет сохранять значение сопротивления ( | Далее перемещаемся к секции главного цикла. Здесь нужно создать переменную, которая будет сохранять значение сопротивления (от 0 до 1023; идеальный вариант для этого случая – тип данных [[Arduino:Справочник языка Arduino/Типы данных/int|int]]), идущего от вашего потенциометра: | ||
<syntaxhighlight lang="c | <syntaxhighlight lang="c"> | ||
int sensorValue = analogRead(A0); | int sensorValue = analogRead(A0); | ||
</syntaxhighlight> | </syntaxhighlight> | ||
Наконец, вам надо отобразить эту информацию в меню | Наконец, вам надо отобразить эту информацию в меню «Мониторинг последовательной передачи данных» (Serial Monitor) в виде десятичного ([[DEC]]) значения. Это можно сделать при помощи команды [[Arduino:Справочник языка Arduino/Функции/Функции передачи данных/Serial/println()|Serial.println()]] в последней строке кода: | ||
<syntaxhighlight lang="c | <syntaxhighlight lang="c"> | ||
Serial.println(sensorValue, DEC) | Serial.println(sensorValue, DEC) | ||
</syntaxhighlight> | </syntaxhighlight> | ||
Теперь, когда вы открыли '''Serial Monitor''' в среде разработки [[Arduino]] (нажав на кнопку, находящуюся справа от кнопки '''Upload''' вверху программы), то должны видеть непрерывный поток цифр, варьирующихся | Теперь, когда вы открыли '''Serial Monitor''' в среде разработки [[Arduino]] (нажав на кнопку, находящуюся справа от кнопки '''Upload''' вверху программы), то должны видеть непрерывный поток цифр, варьирующихся от 0 до 1023 и соответствующих той или иной позиции [[потенциометр]]а. То есть, стоит повернуть [[потенциометр]], и поток цифр мгновенно отреагирует на это действие новыми изменениями. | ||
<syntaxhighlight lang="c" line="GESHI_NORMAL_LINE_NUMBERS|GESHI_FANCY_LINE_NUMBERS | <syntaxhighlight lang="c" line="GESHI_NORMAL_LINE_NUMBERS|GESHI_FANCY_LINE_NUMBERS"> | ||
/* | /* | ||
Считывание последовательной передачи данных через аналоговый контакт | Считывание последовательной передачи данных через аналоговый контакт | ||
Строка 76: | Строка 75: | ||
</syntaxhighlight> | </syntaxhighlight> | ||
=См.также= | |||
# [[Arduino:Справочник языка Arduino/setup()|setup()]] | # [[Arduino:Справочник языка Arduino/setup()|setup()]] | ||
Строка 90: | Строка 89: | ||
# [[Arduino:Примеры/ReadAnalogVoltage|ReadAnalogVoltage]] | # [[Arduino:Примеры/ReadAnalogVoltage|ReadAnalogVoltage]] | ||
=Внешние ссылки= | |||
<references /> | <references /> | ||
{{Навигационная таблица/ | {{Навигационная таблица/Портал/Arduino}} | ||
[[Категория:Пример]] | [[Категория:Пример]] | ||
Строка 103: | Строка 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
Содержание | Знакомство с Arduino | Продукты | Основы | Справочник языка Arduino | Примеры | Библиотеки | Хакинг | Изменения | Сравнение языков Arduino и Processing |
Считывание последовательной передачи данных через аналоговый контакт [1]
Данный пример показывает, как считывать на аналоговом входе информацию, идущую из физического мира, используя при этом потенциометр.
Потенциометр – это простое механическое устройство, дающее сопротивление, уровень которого можно настраивать при помощи поворота регулирующей ручки. Если пустить напряжение через потенциометр в аналоговый вход на Arduino, можно измерить уровень сопротивления (от потенциометра) в виде аналогового значения. В данном примере мы займемся отслеживанием состояния потенциометра, установив последовательную передачу данных между Arduino и вашим компьютером.
Необходимое оборудование
- Плата Arduino - 1 шт.;
- Потенциометр на 10 кОм - 1 шт.;
Цепь
Подсоедините Arduino к потенциометру при помощи трех проводов. Первый пойдет от «земли» к выходному контакту потенциометра. Второй пойдет от контакта с 5В напряжением ко второму выходному контакту потенциометра. Третий пойдет от 0-го аналогового входного контакта («входа») на Arduino к центральному (среднему) контакту на потенциометре.
Поворачивая ручку на потенциометре, вы изменяете количество сопротивления с каждой стороны движка, подсоединенного к центральному контакту потенциометра. Это, в свою очередь, меняет на центральном контакте уровень напряжения. Когда сопротивление между центральным и боковым (тем, который подключен к 5В на Arduino) контактами приблизится к 0 Ом (а сопротивление на противоположном контакте, соответственно, – к 10 кОм), напряжение на центральном контакте приблизится к значению в 5В. Это напряжение является аналоговым напряжением – тем, которое вы будете считывать как входное.
В плату Arduino уже встроен аналогово-цифровой преобразователь(АЦП), который считывает меняющееся напряжение и конвертирует его в цифры от 0 до 1023. Если ручку потенциометра до упора повернуть в одном направлении, на контакт не будет подано ни одного вольта, поэтому и входное значение будет равно «0». Но если повернуть ручку потенциометра до упора в противоположном направлении, то на контакт пойдут максимальные 5В, а входное значение станет равно «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); // задержка между считываниями – для стабильности программы
}
См.также
- setup()
- loop()
- analogRead()
- int
- Serial
- BareMinimum
- Blink
- DigitalReadSerial
- AnalogReadSerial
- Fade
- ReadAnalogVoltage
Внешние ссылки
Arduino продукты | |
---|---|
Начальный уровень | Arduino Uno • Arduino Leonardo • Arduino 101 • Arduino Robot • Arduino Esplora • Arduino Micro • Arduino Nano • Arduino Mini • Arduino Starter Kit • Arduino Basic Kit • MKR2UNO • TFT-дисплей Arduino |
Продвинутые функции | Arduino Mega 2560 • Arduino Zero • Arduino Due • Arduino Mega ADK • Arduino Pro • Arduino Motor Shield • Arduino USB Host Shield • Arduino Proto Shield • MKR Proto Shield • MKR Proto Large Shield • Arduino ISP • Arduino USB 2 Serial Micro • Arduino Mini USB Serial Adapter |
Интернет вещей | Arduino Yun • Arduino Ethernet • Arduino MKR1000 • Arduino WiFi 101 Shield • Arduino GSM Shield V2 • Arduino WiFi Shield • Arduino Wireless SD Shield • Arduino Wireless Proto Shield • Arduino Ethernet Shield V2 • Arduino Yun Shield • Arduino MKR1000 Bundle |
Носимые устройства | Arduino Gemma • Lilypad Arduino Simple • Lilypad Arduino Main Board • Lilypad Arduino USB • LilyPad Arduino SimpleSnap |
3D-печать | Arduino Materia 101 |
Устаревшие устройства | - |
Примеры Arduino | |
---|---|
Стандартные функции | |
Основы |
|
Цифровой сигнал |
|
Аналоговый сигнал |
|
Связь |
|
Управляющие структуры |
|
Датчики |
|
Дисплей |
Примеры, объясняющие основы управления дисплеем:
|
Строки |
|
USB (для Leonardo, Micro и Due плат) |
В этой секции имеют место примеры, которые демонстрируют использование библиотек, уникальных для плат Leonardo, Micro и Due.
|
Клавиатура |
|
Мышь |
|
Разное |
- Страницы, использующие повторяющиеся аргументы в вызовах шаблонов
- Справочник языка Arduino
- Arduino
- Перевод от Сubewriter
- Проверка:myagkij
- Оформление:myagkij
- Редактирование:myagkij
- Страницы, где используется шаблон "Навигационная таблица/Телепорт"
- Страницы с телепортом
- Пример
- Примеры
- Пример программирования 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