Arduino:Примеры/AnalogInput: различия между версиями
Myagkij (обсуждение | вклад) Нет описания правки |
Myagkij (обсуждение | вклад) Нет описания правки |
||
Строка 3: | Строка 3: | ||
{{Myagkij-редактор}} | {{Myagkij-редактор}} | ||
= Использование входных данных для управления частотой мигания светодиода <ref>[http://www.arduino.cc/en/Tutorial/AnalogInput Arduino - Analog Input]</ref>= | |||
[[Потенциометр]] – это обычный [[резистор]], чье [[сопротивление]] можно настраивать с помощью небольшой ручки-регулятора. Если [[потенциометр]] подключить к [[плате Arduino]], она может в режиме реального времени считывать изменяющееся [[сопротивление]], принимая его за входное значение. В данном примере мы подключим [[потенциометр]] к одному из аналоговых контактов [[Arduino]], чтобы с его помощью регулировать частоту мерцания встроенного [[светодиод]]а, подключенного к 13-ому контакту. | |||
== Необходимое оборудование == | == Необходимое оборудование == | ||
* Плата | * [[Плата Arduino]] - 1 шт. | ||
* Потенциометр или любой другой резистор с переменным сопротивлением вроде | * [[Потенциометр]] или любой другой [[резистор]] с переменным сопротивлением вроде [[фоторезистор]]а (плюс [[резистор]] на [[10 кОм]]) - 1шт. | ||
* | * «Родной» [[светодиод]], подключенный к 13-ому контакту - 1шт. | ||
== Цепь == | == Цепь == | ||
Строка 23: | Строка 23: | ||
[[File:PhotoCellA0_AnalogInput.png|600px]] | [[File:PhotoCellA0_AnalogInput.png|600px]] | ||
Подсоедините к | Подсоедините к Arduino три провода. Первый пойдет от «земли» (GND) к одному из выходных контактов потенциометра. Второй – от 5-вольтового контакта ко второму выходному контакту потенциометра. Третий – от 0-ого аналогового входного контакта к среднему контакту потенциометра. | ||
В этом примере можно воспользоваться «родным» для | В этом примере можно воспользоваться «родным» для Arduino светодиодом, по умолчанию подключенным к 13-ому контакту. Впрочем, если вы хотите задействовать дополнительный светодиод, подсоедините его длинную ногу (ногу с позитивным зарядом, т.е. анод) к 13-ому цифровому контакту, а короткую (с отрицательным зарядом, т.н. катод) – к контакту с «землей», расположенному рядом с этим 13-ым контактом. Поскольку сила тока, который пойдет через 13-ый контакт, будет небольшой, токоограничивающий резистор использовать не обязательно. | ||
== Схема == | == Схема == | ||
Строка 36: | Строка 36: | ||
[[File:PhotoResistorA0_schem_AnalogInput.png|600px]] | [[File:PhotoResistorA0_schem_AnalogInput.png|600px]] | ||
Вначале зададим три переменные – для | Вначале зададим три переменные – для 0-ого аналогового контакта, к которому подключен потенциометр (sensorPin), для 13-ого цифрового контакта (ledPin) и для данных, которые будут считываться от потенциометра (sensorValue). | ||
<syntaxhighlight lang="c" line="GESHI_NORMAL_LINE_NUMBERS|GESHI_FANCY_LINE_NUMBERS | Далее воспользуемся функцией [[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()]]) в мигании светодиода. Чем больше это значение, тем длиннее пауза, и наоборот. | |||
<syntaxhighlight lang="c" line="GESHI_NORMAL_LINE_NUMBERS|GESHI_FANCY_LINE_NUMBERS"> | |||
/* | /* | ||
Использование входных данных для управления частотой мигания светодиода | Использование входных данных для управления частотой мигания светодиода | ||
Строка 91: | Строка 94: | ||
</syntaxhighlight> | </syntaxhighlight> | ||
=См.также= | |||
# [[Arduino:Справочник языка Arduino/Функции/Цифровой ввод/вывод/pinMode()|pinMode()]] | # [[Arduino:Справочник языка Arduino/Функции/Цифровой ввод/вывод/pinMode()|pinMode()]] | ||
Строка 102: | Строка 105: | ||
# [[Arduino:Примеры/Calibration|Calibration]] | # [[Arduino:Примеры/Calibration|Calibration]] | ||
{{ads}} | |||
=Внешние ссылки= | |||
<references /> | <references /> |
Версия от 08:46, 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