Arduino:Примеры/AnalogInput: различия между версиями
Myagkij (обсуждение | вклад) Нет описания правки |
Myagkij (обсуждение | вклад) Нет описания правки |
||
Строка 17: | Строка 17: | ||
С потенциометром: | С потенциометром: | ||
[[File:graph-circuit3_AnalogInput.png]] | [[File:graph-circuit3_AnalogInput.png|frame|center|'''Рис. 1.''' Подключение потенциометра к плате Arduino.|alt=Рис. 1. Подключение потенциометра к плате Arduino.]] | ||
С фоторезистором: | С фоторезистором: | ||
[[File:PhotoCellA0_AnalogInput.png| | [[File:PhotoCellA0_AnalogInput.png|frame|center|'''Рис. 2.''' Подключение фоторезистора к плате Arduino.|alt=Рис. 2. Подключение фоторезистора к плате Arduino.]] | ||
Подсоедините к Arduino три провода. Первый пойдет от «земли» (GND) к одному из выходных контактов | Подсоедините к [[Arduino]] три провода. Первый пойдет от «земли» (GND) к одному из выходных контактов [[потенциометр]]а. Второй – от 5-вольтового контакта ко второму выходному контакту [[потенциометр]]а. Третий – от 0-ого аналогового входного контакта к среднему контакту [[потенциометр]]а. | ||
В этом примере можно воспользоваться «родным» для Arduino | |||
В этом примере можно воспользоваться «родным» для [[Arduino]] [[светодиод]]ом, по умолчанию подключенным к 13-ому контакту. Впрочем, если вы хотите задействовать дополнительный [[светодиод]], подсоедините его длинную ногу (ногу с позитивным зарядом, т.е. [[анод]]) к 13-ому цифровому контакту, а короткую (с отрицательным зарядом, т.н. [[катод]]) – к контакту с «землей», расположенному рядом с этим 13-ым контактом. Поскольку сила тока, который пойдет через 13-ый контакт, будет небольшой, токоограничивающий [[резистор]] использовать не обязательно. | |||
== Схема == | == Схема == | ||
Строка 30: | Строка 31: | ||
С потенциометром: | С потенциометром: | ||
[[File:AnalogReadSerial_sch_AnalogInput.png]] | [[File:AnalogReadSerial_sch_AnalogInput.png|frame|center|'''Рис. 3.''' Схема подключения потенциометра к плате Arduino.|alt=Рис. 3.Схема подключения потенциометра к плате Arduino.]] | ||
С фоторезистором: | С фоторезистором: | ||
[[File:PhotoResistorA0_schem_AnalogInput.png| | [[File:PhotoResistorA0_schem_AnalogInput.png|frame|center|'''Рис. 4.''' Схема подключения фоторезистора к плате Arduino.|alt=Рис. 4. Схема подключения фоторезистора к плате Arduino.]] | ||
Вначале зададим три переменные – для 0-ого аналогового контакта, к которому подключен потенциометр (sensorPin), для 13-ого цифрового контакта (ledPin) и для данных, которые будут считываться от | Вначале зададим три переменные – для 0-ого аналогового контакта, к которому подключен [[потенциометр]] ('''sensorPin'''), для 13-ого цифрового контакта ('''ledPin''') и для данных, которые будут считываться от [[потенциометр]]а ('''sensorValue'''). | ||
Далее воспользуемся функцией [[Arduino:Справочник языка Arduino/Функции/Аналоговый ввод/вывод/analogRead()|analogRead()]], которая переделает входное напряжение диапазоном от 0 до 5 вольт в численный диапазон от 0 до 1023. На «железном» уровне это выполняется за счет встроенного в Arduino аналогово-цифрового преобразователя или АЦП. | Далее воспользуемся функцией [[Arduino:Справочник языка Arduino/Функции/Аналоговый ввод/вывод/analogRead()|analogRead()]], которая переделает входное напряжение диапазоном от 0 до 5 вольт в численный диапазон от 0 до 1023. На «железном» уровне это выполняется за счет встроенного в [[Arduino]] [[аналогово-цифрового преобразователя]] или [[АЦП]]. | ||
Поворачивая ручку | Поворачивая ручку [[потенциометр]]а, вы меняете уровень сопротивления между центральным контактом и двумя боковыми контактами, а на выходе это дает разный уровень напряжения. Если выкрутить ручку до упора в одну сторону, это устранит [[сопротивление]] между центральным контактом и контактом, подсоединенным к «земле» – соответственно, уровень напряжения на центральном контакте будет «0», и [[Arduino:Справочник языка Arduino/Функции/Аналоговый ввод/вывод/analogRead()|analogRead()]] тоже вернет значение «0». Но если повернуть ручку [[потенциометр]]а до упора в другую сторону, это устранит [[сопротивление]] между центральным и 5-вольтовым контактами – следовательно, уровень напряжения на центральном контакте будет равен «5», а [[Arduino:Справочник языка Arduino/Функции/Аналоговый ввод/вывод/analogRead()|analogRead()]] вернет значение «1023». Таким образом, если повернуть руку [[потенциометр]]а в какую-либо промежуточную позицию, то входное [[напряжение]], а затем и значение от [[Arduino:Справочник языка Arduino/Функции/Аналоговый ввод/вывод/analogRead()|analogRead()]] покажут результат, пропорциональный этой позиции. | ||
Значение, хранимое в переменной sensorValue, используется для создания паузы([[Arduino:Справочник языка Arduino/Функции/Работа со временем/delay()|delay()]]) в мигании | Значение, хранимое в переменной '''sensorValue''', используется для создания паузы([[Arduino:Справочник языка Arduino/Функции/Работа со временем/delay()|delay()]]) в мигании [[светодиод]]а. Чем больше это значение, тем длиннее пауза, и наоборот. | ||
<syntaxhighlight lang="c" line="GESHI_NORMAL_LINE_NUMBERS|GESHI_FANCY_LINE_NUMBERS"> | <syntaxhighlight lang="c" line="GESHI_NORMAL_LINE_NUMBERS|GESHI_FANCY_LINE_NUMBERS"> |
Версия от 08:50, 8 мая 2022
Содержание | Знакомство с Arduino | Продукты | Основы | Справочник языка Arduino | Примеры | Библиотеки | Хакинг | Изменения | Сравнение языков Arduino и Processing |
Использование входных данных для управления частотой мигания светодиода [1]
Потенциометр – это обычный резистор, чье сопротивление можно настраивать с помощью небольшой ручки-регулятора. Если потенциометр подключить к плате Arduino, она может в режиме реального времени считывать изменяющееся сопротивление, принимая его за входное значение. В данном примере мы подключим потенциометр к одному из аналоговых контактов Arduino, чтобы с его помощью регулировать частоту мерцания встроенного светодиода, подключенного к 13-ому контакту.
Необходимое оборудование
- Плата Arduino - 1 шт.
- Потенциометр или любой другой резистор с переменным сопротивлением вроде фоторезистора (плюс резистор на 10 кОм) - 1шт.
- «Родной» светодиод, подключенный к 13-ому контакту - 1шт.
Цепь
С потенциометром:
С фоторезистором:
Подсоедините к Arduino три провода. Первый пойдет от «земли» (GND) к одному из выходных контактов потенциометра. Второй – от 5-вольтового контакта ко второму выходному контакту потенциометра. Третий – от 0-ого аналогового входного контакта к среднему контакту потенциометра.
В этом примере можно воспользоваться «родным» для Arduino светодиодом, по умолчанию подключенным к 13-ому контакту. Впрочем, если вы хотите задействовать дополнительный светодиод, подсоедините его длинную ногу (ногу с позитивным зарядом, т.е. анод) к 13-ому цифровому контакту, а короткую (с отрицательным зарядом, т.н. катод) – к контакту с «землей», расположенному рядом с этим 13-ым контактом. Поскольку сила тока, который пойдет через 13-ый контакт, будет небольшой, токоограничивающий резистор использовать не обязательно.
Схема
С потенциометром:
С фоторезистором:
Вначале зададим три переменные – для 0-ого аналогового контакта, к которому подключен потенциометр (sensorPin), для 13-ого цифрового контакта (ledPin) и для данных, которые будут считываться от потенциометра (sensorValue).
Далее воспользуемся функцией analogRead(), которая переделает входное напряжение диапазоном от 0 до 5 вольт в численный диапазон от 0 до 1023. На «железном» уровне это выполняется за счет встроенного в Arduino аналогово-цифрового преобразователя или АЦП.
Поворачивая ручку потенциометра, вы меняете уровень сопротивления между центральным контактом и двумя боковыми контактами, а на выходе это дает разный уровень напряжения. Если выкрутить ручку до упора в одну сторону, это устранит сопротивление между центральным контактом и контактом, подсоединенным к «земле» – соответственно, уровень напряжения на центральном контакте будет «0», и analogRead() тоже вернет значение «0». Но если повернуть ручку потенциометра до упора в другую сторону, это устранит сопротивление между центральным и 5-вольтовым контактами – следовательно, уровень напряжения на центральном контакте будет равен «5», а analogRead() вернет значение «1023». Таким образом, если повернуть руку потенциометра в какую-либо промежуточную позицию, то входное напряжение, а затем и значение от analogRead() покажут результат, пропорциональный этой позиции.
Значение, хранимое в переменной sensorValue, используется для создания паузы(delay()) в мигании светодиода. Чем больше это значение, тем длиннее пауза, и наоборот.
/*
Использование входных данных для управления частотой мигания светодиода
Считывает данные от сенсора на 0-ом аналоговом контакте,
а затем использует их для включения/выключения светодиода, подключенного к 13-ому цифровому контакту.
Время между включением/выключением светодиода зависит от значения, возвращенного функцией analogRead().
Цепь:
* центральный контакт потенциометра подсоединен к 0-ому входному аналоговому контакту
* один из боковых контактов (по сути, любой) потенциометра подсоединен к «земле»,
второй оставшийся контакт – к 5-вольтовому напряжению
* анод (длинная нога) светодиода подсоединена к 13-ому цифровому выходному контакту,
катод (короткая нога)– к «земле»
* Примечание: у многих Arduino уже есть встроенный светодиод, подключенный к 13-ому контакту, поэтому дополнительный светодиод использовать не обязательно.
Создан Дэвидом Куартилье (David Cuartielles),
модифицирован 30 августа 2011 Томом Иго (Tom Igoe)
Этот код не защищен авторским правом.
http://arduino.cc/en/Tutorial/AnalogInput
*/
int sensorPin = A0; // задаем входной контакт для потенциометра
int ledPin = 13; // задаем контакт для светодиода
int sensorValue = 0; // в этой переменной будут храниться данные, полученные от сенсора (т.е. от потенциометра)
void setup() {
// объявляем ledPin выходным контактом (т.е. OUTPUT):
pinMode(ledPin, OUTPUT);
}
void loop() {
// считываем данные от потенциометра:
sensorValue = analogRead(sensorPin);
// включаем светодиод:
digitalWrite(ledPin, HIGH);
// останавливаем программу на количество миллисекунд,
// соответствующее значению в переменной sensorValue:
delay(sensorValue);
// выключаем светодиод:
digitalWrite(ledPin, LOW);
// останавливаем программу на количество миллисекунд,
// соответствующее значению в переменной sensorValue:
delay(sensorValue);
}
См.также
Внешние ссылки
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
- Arduino
- Перевод от Сubewriter
- Проверка:myagkij
- Оформление:myagkij
- Редактирование:myagkij
- Страницы, где используется шаблон "Навигационная таблица/Телепорт"
- Страницы с телепортом
- Пример
- Примеры
- Пример программирования Arduino
- Примеры программирования Arduino