Arduino:Примеры/AnalogInOutSerial: различия между версиями
Myagkij (обсуждение | вклад) Нет описания правки |
Myagkij (обсуждение | вклад) Нет описания правки |
||
(не показано 7 промежуточных версий этого же участника) | |||
Строка 3: | Строка 3: | ||
{{Myagkij-редактор}} | {{Myagkij-редактор}} | ||
=«Сырые» данные на входе, преобразованные на выходе, вывод результата на Serial Monitor <ref>[http://www.arduino.cc/en/Tutorial/AnalogInOutSerial Arduino - AnalogInOutSerial]</ref>= | |||
Данный пример показывает, как считывать данные на входном аналоговом контакте, преобразовывать их в численный диапазон от 0 до 225, а получившийся результат использовать для создания широтно-импульсной модуляции (ШИМ) на выходном контакте – чтобы управлять яркостью | Данный пример показывает, как считывать данные на входном аналоговом контакте, преобразовывать их в численный диапазон от 0 до 225, а получившийся результат использовать для создания [[широтно-импульсной модуляции]] ([[ШИМ]]) на выходном контакте – чтобы управлять яркостью [[светодиод]]а. | ||
==Необходимое оборудование== | ==Необходимое оборудование== | ||
* Плата | * Плата [[Arduino]] - 1 шт. | ||
* Потенциометр | * [[Потенциометр]] - 1 шт. | ||
* Светодиод | * [[Светодиод]] - 1шт. | ||
* 220- | * [[Резистор]] на [[220 Ом]] - 1шт. | ||
== Цепь == | == Цепь == | ||
[[File:analoginoutserial1_bb.png]] | [[File:analoginoutserial1_bb.png|frame|center|'''Рис. 1.''' Подключение [[светодиод]]а и [[потенциометр]]а к плате [[Arduino]]|alt=Рис. 1. Подключение светодиода и потенциометра к плате Arduino]] | ||
Подсоедините один контакт потенциометра к 5-вольтовому напряжению на Arduino, центральный – к 0-ому аналоговому контакту, а оставшийся – к «земле» (GND). Теперь подсоедините 220-омовый (токоограничивающий) резистор к 9-ому цифровому контакту. Затем подсоедините к | Подсоедините один контакт потенциометра к 5-вольтовому напряжению на [[Arduino]], центральный – к 0-ому аналоговому контакту, а оставшийся – к «земле» (GND). Теперь подсоедините 220-омовый (токоограничивающий) [[резистор]] к 9-ому цифровому контакту. Затем подсоедините к [[резистор]]у длинную ногу [[светодиод]]а (ногу с положительным зарядом, т.е. [[анод]]) – таким образом, [[светодиод]] будет подключен через [[резистор]] к выходному контакту. Вторую ногу [[светодиод]]а (ногу с отрицательным зарядом, т.е. [[катод]]) подсоедините к «земле». | ||
== Схема == | == Схема == | ||
[[File:analoginoutserial_sch.png]] | [[File:analoginoutserial_sch.png|frame|center|'''Рис. 2.''' Схема подключения [[светодиод]]а и [[потенциометр]]а к плате [[Arduino]].|alt=Рис. 2. Схема подключения светодиода и потенциометра к плате Arduino]] | ||
== Код == | == Код == | ||
Для начала зададим, какие контакты за что отвечают – 0-ой аналоговый для | Для начала зададим, какие контакты за что отвечают – 0-ой аналоговый для [[потенциометр]]а, а 9-ый цифровой для [[светодиод]]а. Затем задаем две переменные – sensorValue и outputValue. После того в функции [[Arduino:Справочник языка Arduino/setup()|setup()]] остается прописать лишь последовательную передачу данных. | ||
<syntaxhighlight lang="c | Далее переходим к главному циклу, а переменную sensorValue начинаем использовать в качестве «отсека» для хранения «сырых» (т.е. исходных) аналоговых данных, полученных от потенциометра. Но числа, считываемые при помощи функции [[Arduino:Справочник языка Arduino/Функции/Аналоговый ввод/вывод/analogRead()|analogRead()]], имеют диапазон от 0 до 1023, а диапазон данных у функции [[Arduino:Справочник языка Arduino/Функции/Аналоговый ввод/вывод/analogWrite()|analogWrite()]] составляет от 0 до 255. Поэтому эти числовые диапазоны нужно будет подогнать друг к другу. Для этого воспользуемся функцией [[Arduino:Справочник языка Arduino/Функции/Математические функции/map()|map()]]. | ||
<syntaxhighlight lang="c"> | |||
outputValue = map(sensorValue, 0, 1023, 0, 255); | outputValue = map(sensorValue, 0, 1023, 0, 255); | ||
</syntaxhighlight> | </syntaxhighlight> | ||
То есть в переменной outputValue будут данные, полученные от потенциометра, но преобразованные при помощи функции map(). Это преобразование осуществляется путем «скармливания» функции map() пяти аргументов – переменной, которую нужно преобразовать (sensorValue), нижнего (0) и верхнего (1023) пределов исходных данных, а также нижнего (0) и верхнего (255) пределов итоговых данных. Таким образом, в данном примере численный диапазон от 0 до 1023 как бы «масштабируется» для соответствия численному диапазону от 0 до 255. | То есть в переменной outputValue будут данные, полученные от потенциометра, но преобразованные при помощи функции [[Arduino:Справочник языка Arduino/Функции/Математические функции/map()|map()]]. Это преобразование осуществляется путем «скармливания» функции [[Arduino:Справочник языка Arduino/Функции/Математические функции/map()|map()]] пяти аргументов – переменной, которую нужно преобразовать (sensorValue), нижнего (0) и верхнего (1023) пределов исходных данных, а также нижнего (0) и верхнего (255) пределов итоговых данных. Таким образом, в данном примере численный диапазон от 0 до 1023 как бы «масштабируется» для соответствия численному диапазону от 0 до 255. | ||
После этого преобразованные («масштабированные») данные передаются на контакт analogOutPin, благодаря чему светодиод и будет менять свою яркость при кручении ручки | |||
После этого преобразованные («масштабированные») данные передаются на контакт analogOutPin, благодаря чему [[светодиод]] и будет менять свою яркость при кручении ручки [[потенциометр]]а. И, наконец, в финале выводим исходные и итоговые данные на окно Serial Monitor в виде постоянного потока числовой информации. | |||
<syntaxhighlight lang="c" line="GESHI_NORMAL_LINE_NUMBERS|GESHI_FANCY_LINE_NUMBERS | <syntaxhighlight lang="c" line="GESHI_NORMAL_LINE_NUMBERS|GESHI_FANCY_LINE_NUMBERS"> | ||
/* | /* | ||
«Сырые» данные на входе, преобразованные на выходе, вывод результата на Serial Monitor | «Сырые» данные на входе, преобразованные на выходе, вывод результата на Serial Monitor | ||
Строка 87: | Строка 89: | ||
</syntaxhighlight> | </syntaxhighlight> | ||
=См.также= | |||
# [[Arduino:Справочник языка Arduino/Функции/Математические функции/map()|map()]] | # [[Arduino:Справочник языка Arduino/Функции/Математические функции/map()|map()]] | ||
Строка 97: | Строка 99: | ||
# [[Arduino:Примеры/Fade|Fade]] | # [[Arduino:Примеры/Fade|Fade]] | ||
# [[Arduino:Примеры/Calibration|Calibration]] | # [[Arduino:Примеры/Calibration|Calibration]] | ||
# [[Электроника:Постоянный ток/Закон Ома/Резисторы|Резисторы]] | |||
=Внешние ссылки= | |||
<references /> | <references /> | ||
{{Навигационная таблица/ | |||
{{Навигационная таблица/Портал/Arduino}} | |||
[[Категория:Пример]] | [[Категория:Пример]] | ||
[[Категория:Примеры]] | [[Категория:Примеры]] | ||
[[Категория:Пример программирования Arduino]] | [[Категория:Пример программирования Arduino]] | ||
[[Категория:Примеры программирования Arduino]] | [[Категория:Примеры программирования Arduino]] |
Текущая версия от 09:22, 24 февраля 2023
Содержание | Знакомство с Arduino | Продукты | Основы | Справочник языка Arduino | Примеры | Библиотеки | Хакинг | Изменения | Сравнение языков Arduino и Processing |
«Сырые» данные на входе, преобразованные на выходе, вывод результата на Serial Monitor [1]
Данный пример показывает, как считывать данные на входном аналоговом контакте, преобразовывать их в численный диапазон от 0 до 225, а получившийся результат использовать для создания широтно-импульсной модуляции (ШИМ) на выходном контакте – чтобы управлять яркостью светодиода.
Необходимое оборудование
- Плата Arduino - 1 шт.
- Потенциометр - 1 шт.
- Светодиод - 1шт.
- Резистор на 220 Ом - 1шт.
Цепь
Подсоедините один контакт потенциометра к 5-вольтовому напряжению на Arduino, центральный – к 0-ому аналоговому контакту, а оставшийся – к «земле» (GND). Теперь подсоедините 220-омовый (токоограничивающий) резистор к 9-ому цифровому контакту. Затем подсоедините к резистору длинную ногу светодиода (ногу с положительным зарядом, т.е. анод) – таким образом, светодиод будет подключен через резистор к выходному контакту. Вторую ногу светодиода (ногу с отрицательным зарядом, т.е. катод) подсоедините к «земле».
Схема
Код
Для начала зададим, какие контакты за что отвечают – 0-ой аналоговый для потенциометра, а 9-ый цифровой для светодиода. Затем задаем две переменные – sensorValue и outputValue. После того в функции setup() остается прописать лишь последовательную передачу данных.
Далее переходим к главному циклу, а переменную sensorValue начинаем использовать в качестве «отсека» для хранения «сырых» (т.е. исходных) аналоговых данных, полученных от потенциометра. Но числа, считываемые при помощи функции analogRead(), имеют диапазон от 0 до 1023, а диапазон данных у функции analogWrite() составляет от 0 до 255. Поэтому эти числовые диапазоны нужно будет подогнать друг к другу. Для этого воспользуемся функцией map().
outputValue = map(sensorValue, 0, 1023, 0, 255);
То есть в переменной outputValue будут данные, полученные от потенциометра, но преобразованные при помощи функции map(). Это преобразование осуществляется путем «скармливания» функции map() пяти аргументов – переменной, которую нужно преобразовать (sensorValue), нижнего (0) и верхнего (1023) пределов исходных данных, а также нижнего (0) и верхнего (255) пределов итоговых данных. Таким образом, в данном примере численный диапазон от 0 до 1023 как бы «масштабируется» для соответствия численному диапазону от 0 до 255.
После этого преобразованные («масштабированные») данные передаются на контакт analogOutPin, благодаря чему светодиод и будет менять свою яркость при кручении ручки потенциометра. И, наконец, в финале выводим исходные и итоговые данные на окно Serial Monitor в виде постоянного потока числовой информации.
/*
«Сырые» данные на входе, преобразованные на выходе, вывод результата на Serial Monitor
Считывает данные на входном аналоговом контакте, преобразовывает их в числовой диапазон от 0 до 255, а затем использует этот результат для создания широтно-импульсной модуляции (ШИМ) на выходном контакте. Также выводит результат на Serial Monitor.
Цепь:
* центральный контакт потенциометра подсоединен к 0-ому аналоговому контакту, два крайних – к 5 вольтам и «земле»
* Светодиод подсоединен к 9-ому цифровому контакту и «земле»
Создан 29 декабря 2008,
модифицирован 9 апреля 2012 Томом Иго (Tom Igoe)
Этот код не защищен авторским правом.
*/
// Это константы – значения, которые не меняются.
// Воспользуемся ими, чтобы задать имена для контактов:
const int analogInPin = A0; // входной аналоговый контакт, к которому подсоединен потенциометр
const int analogOutPin = 9; // выходной аналоговый контакт, к которому подсоединен светодиод
int sensorValue = 0; // данные, считанные от потенциометра
int outputValue = 0; // ШИМ-данные, идущие на выходной контакт
void setup() {
// инициализируем последовательную передачу данных со скоростью 9600 бит в секунду:
Serial.begin(9600);
}
void loop() {
// считываем данные на входном аналоговом контакте:
sensorValue = analogRead(analogInPin);
// преобразовываем эти данные в нужный диапазон
// для передачи на выходной аналоговой контакт:
outputValue = map(sensorValue, 0, 1023, 0, 255);
// меняем значение, передаваемое на выходной контакт:
analogWrite(analogOutPin, outputValue);
// выводим результаты на Serial Monitor:
Serial.print("sensor = " );
Serial.print(sensorValue);
Serial.print("\t output = ");
Serial.println(outputValue);
// ждем 2 миллисекунды перед следующим заходом,
// чтобы аналоговой-цифровой преобразователь «успокоился»
// после последнего считывания:
delay(2);
}
См.также
Внешние ссылки
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