Arduino:Примеры/AnalogInput: различия между версиями
Myagkij (обсуждение | вклад) Нет описания правки |
Myagkij (обсуждение | вклад) Нет описания правки |
||
Строка 105: | Строка 105: | ||
# [[Arduino:Примеры/Fade|Fade]] | # [[Arduino:Примеры/Fade|Fade]] | ||
# [[Arduino:Примеры/Calibration|Calibration]] | # [[Arduino:Примеры/Calibration|Calibration]] | ||
=Внешние ссылки= | =Внешние ссылки= | ||
Строка 112: | Строка 110: | ||
<references /> | <references /> | ||
{{Навигационная таблица/ | {{Навигационная таблица/Портал/Arduino}} | ||
[[Категория:Пример]] | [[Категория:Пример]] |
Текущая версия от 09:22, 24 февраля 2023
Содержание | Знакомство с Arduino | Продукты | Основы | Справочник языка Arduino | Примеры | Библиотеки | Хакинг | Изменения | Сравнение языков Arduino и Processing |
Использование входных данных для управления частотой мигания светодиода [1]
Потенциометр – это обычный резистор, чье сопротивление можно настраивать с помощью небольшой ручки-регулятора. Если потенциометр подключить к плате Arduino, она может в режиме реального времени считывать изменяющееся сопротивление, принимая его за входное значение. В данном примере мы подключим потенциометр к одному из аналоговых контактов Arduino, чтобы с его помощью регулировать частоту мерцания встроенного светодиода, подключенного к 13-ому контакту.
Необходимое оборудование
- Плата Arduino - 1 шт.
- Потенциометр или любой другой резистор с переменным сопротивлением вроде фоторезистора (плюс резистор на 10 кОм) - 1шт.
- «Родной» светодиод, подключенный к 13-ому контакту - 1шт.
Цепь
С потенциометром:
![Рис. 1. Подключение потенциометра к плате Arduino.](/ruwiki/images/c/c8/Graph-circuit3_AnalogInput.png)
С фоторезистором:
![Рис. 2. Подключение фоторезистора к плате Arduino.](/ruwiki/images/thumb/d/df/PhotoCellA0_AnalogInput.png/600px-PhotoCellA0_AnalogInput.png)
Подсоедините к Arduino три провода. Первый пойдет от «земли» (GND) к одному из выходных контактов потенциометра. Второй – от 5-вольтового контакта ко второму выходному контакту потенциометра. Третий – от 0-ого аналогового входного контакта к среднему контакту потенциометра.
В этом примере можно воспользоваться «родным» для Arduino светодиодом, по умолчанию подключенным к 13-ому контакту. Впрочем, если вы хотите задействовать дополнительный светодиод, подсоедините его длинную ногу (ногу с позитивным зарядом, т.е. анод) к 13-ому цифровому контакту, а короткую (с отрицательным зарядом, т.н. катод) – к контакту с «землей», расположенному рядом с этим 13-ым контактом. Поскольку сила тока, который пойдет через 13-ый контакт, будет небольшой, токоограничивающий резистор использовать не обязательно.
Схема
С потенциометром:
![Рис. 3.Схема подключения потенциометра к плате Arduino.](/ruwiki/images/e/e6/AnalogReadSerial_sch_AnalogInput.png)
С фоторезистором:
![Рис. 4. Схема подключения фоторезистора к плате Arduino.](/ruwiki/images/thumb/8/81/PhotoResistorA0_schem_AnalogInput.png/600px-PhotoResistorA0_schem_AnalogInput.png)
Вначале зададим три переменные – для 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 | |
---|---|
Стандартные функции | |
Основы |
|
Цифровой сигнал |
|
Аналоговый сигнал |
|
Связь |
|
Управляющие структуры |
|
Датчики |
|
Дисплей |
Примеры, объясняющие основы управления дисплеем:
|
Строки |
|
USB (для Leonardo, Micro и Due плат) |
В этой секции имеют место примеры, которые демонстрируют использование библиотек, уникальных для плат Leonardo, Micro и Due.
|
Клавиатура |
|
Мышь |
|
Разное |
- Страницы, использующие повторяющиеся аргументы в вызовах шаблонов
- Справочник языка Arduino
- Arduino
- Перевод от Сubewriter
- Проверка:myagkij
- Оформление:myagkij
- Редактирование:myagkij
- Страницы, где используется шаблон "Навигационная таблица/Телепорт"
- Страницы с телепортом
- Пример
- Примеры
- Пример программирования Arduino
- Примеры программирования Arduino