Arduino:Примеры/AnalogInput: различия между версиями

Материал из Онлайн справочника
Перейти к навигацииПерейти к поиску
м (Замена текста — «<syntaxhighlight lang="c" line="GESHI_NORMAL_LINE_NUMBERS|GESHI_FANCY_LINE_NUMBERS">» на «<syntaxhighlight lang="c" line="GESHI_NORMAL_LINE_NUMBERS|GESHI_FANCY_LINE_NUMBERS" enclose="div">»)
 
Нет описания правки
 
(не показано 6 промежуточных версий этого же участника)
Строка 3: Строка 3:
{{Myagkij-редактор}}
{{Myagkij-редактор}}


== Использование входных данных для управления частотой мигания светодиода <ref>[http://www.arduino.cc/en/Tutorial/AnalogInput Arduino - Analog Input]</ref>==
= Использование входных данных для управления частотой мигания светодиода <ref>[http://www.arduino.cc/en/Tutorial/AnalogInput Arduino - Analog Input]</ref>=


'''Потенциометр''' – это обычный резистор, чье сопротивление можно настраивать с помощью небольшой ручки-регулятора. Если потенциометр подключить к плате '''Arduino''', она может в режиме реального времени считывать изменяющееся сопротивление, принимая его за входное значение. В данном примере мы подключим потенциометр к одному из аналоговых контактов '''Arduino''', чтобы с его помощью регулировать частоту мерцания встроенного светодиода, подключенного к '''13-ому контакту'''.
[[Потенциометр]] – это обычный [[резистор]], чье [[сопротивление]] можно настраивать с помощью небольшой ручки-регулятора. Если [[потенциометр]] подключить к [[плате Arduino]], она может в режиме реального времени считывать изменяющееся [[сопротивление]], принимая его за входное значение. В данном примере мы подключим [[потенциометр]] к одному из аналоговых контактов [[Arduino]], чтобы с его помощью регулировать частоту мерцания встроенного [[светодиод]]а, подключенного к 13-ому контакту.


== Необходимое оборудование ==
== Необходимое оборудование ==


* Плата '''Arduino''';
* [[Плата Arduino]] - 1 шт.
* Потенциометр или любой другой резистор с переменным сопротивлением вроде фоторезистора (плюс резистор на '''10 кОм''');
* [[Потенциометр]] или любой другой [[резистор]] с переменным сопротивлением вроде [[фоторезистор]]а (плюс [[резистор]] на [[10 кОм]]) - 1шт.
* '''«Родной»''' светодиод, подключенный к '''13-ому контакту''';
* «Родной» [[светодиод]], подключенный к 13-ому контакту - 1шт.


== Цепь ==
== Цепь ==
Строка 17: Строка 17:
С потенциометром:
С потенциометром:


[[File:graph-circuit3_AnalogInput.png]]
[[File:graph-circuit3_AnalogInput.png|frame|center|'''Рис. 1.''' Подключение потенциометра к плате Arduino.|alt=Рис. 1. Подключение потенциометра к плате Arduino.]]


С фоторезистором:
С фоторезистором:


[[File:PhotoCellA0_AnalogInput.png|600px]]
[[File:PhotoCellA0_AnalogInput.png|thumb|600px|center|'''Рис. 2.''' Подключение фоторезистора к плате Arduino.|alt=Рис. 2. Подключение фоторезистора к плате Arduino.]]


Подсоедините к '''Arduino''' три провода. Первый пойдет от '''«земли» (GND)''' к одному из выходных контактов потенциометра. Второй – от '''5-вольтового''' контакта ко второму выходному контакту потенциометра. Третий – от '''0-ого''' аналогового входного контакта к среднему контакту потенциометра.
Подсоедините к [[Arduino]] три провода. Первый пойдет от «земли» (GND) к одному из выходных контактов [[потенциометр]]а. Второй – от 5-вольтового контакта ко второму выходному контакту [[потенциометр]]а. Третий – от 0-ого аналогового входного контакта к среднему контакту [[потенциометр]]а.
В этом примере можно воспользоваться «родным» для '''Arduino''' светодиодом, по умолчанию подключенным к '''13-ому контакту'''. Впрочем, если вы хотите задействовать дополнительный светодиод, подсоедините его длинную ногу (ногу с позитивным зарядом, т.е. анод) к '''13-ому цифровому контакту''', а короткую (с отрицательным зарядом, т.н. катод) – к контакту с '''«землей»''', расположенному рядом с этим '''13-ым контактом'''. Поскольку сила тока, который пойдет через '''13-ый контакт''', будет небольшой, токоограничивающий резистор использовать не обязательно.
 
В этом примере можно воспользоваться «родным» для [[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|600px]]
[[File:PhotoResistorA0_schem_AnalogInput.png|thumb|600px|center|'''Рис. 4.''' Схема подключения фоторезистора к плате Arduino.|alt=Рис. 4. Схема подключения фоторезистора к плате Arduino.]]
 
Вначале зададим три переменные – для 0-ого аналогового контакта, к которому подключен [[потенциометр]] ('''sensorPin'''), для 13-ого цифрового контакта ('''ledPin''') и для данных, которые будут считываться от [[потенциометр]]а ('''sensorValue''').
 
Далее воспользуемся функцией [[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()]] покажут результат, пропорциональный этой позиции.


Вначале зададим три переменные – для '''0-ого аналогового контакта''', к которому подключен потенциометр ('''sensorPin'''), для '''13-ого цифрового контакта (ledPin)''' и для данных, которые будут считываться от потенциометра ('''sensorValue''').
Значение, хранимое в переменной '''sensorValue''', используется для создания паузы([[Arduino:Справочник языка Arduino/Функции/Работа со временем/delay()|delay()]]) в мигании [[светодиод]]а. Чем больше это значение, тем длиннее пауза, и наоборот.
Далее воспользуемся функцией [[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" enclose="div">
<syntaxhighlight lang="c" line="GESHI_NORMAL_LINE_NUMBERS|GESHI_FANCY_LINE_NUMBERS">
/*
/*
Использование входных данных для управления частотой мигания светодиода
Использование входных данных для управления частотой мигания светодиода
Строка 91: Строка 95:
</syntaxhighlight>
</syntaxhighlight>


==См.также==
=См.также=


# [[Arduino:Справочник языка Arduino/Функции/Цифровой ввод/вывод/pinMode()|pinMode()]]
# [[Arduino:Справочник языка Arduino/Функции/Цифровой ввод/вывод/pinMode()|pinMode()]]
Строка 102: Строка 106:
# [[Arduino:Примеры/Calibration|Calibration]]
# [[Arduino:Примеры/Calibration|Calibration]]


==Внешние ссылки==
=Внешние ссылки=


<references />
<references />
{{Навигационная таблица/Портал/Arduino}}
[[Категория:Пример]]
[[Категория:Пример]]
[[Категория:Примеры]]
[[Категория:Примеры]]
[[Категория:Пример программирования Arduino]]
[[Категория:Пример программирования Arduino]]
[[Категория:Примеры программирования Arduino]]
[[Категория:Примеры программирования Arduino]]

Текущая версия от 09:22, 24 февраля 2023

Перевод: Максим Кузьмин
Проверка/Оформление/Редактирование: Мякишев Е.А.


Использование входных данных для управления частотой мигания светодиода [1]

Потенциометр – это обычный резистор, чье сопротивление можно настраивать с помощью небольшой ручки-регулятора. Если потенциометр подключить к плате Arduino, она может в режиме реального времени считывать изменяющееся сопротивление, принимая его за входное значение. В данном примере мы подключим потенциометр к одному из аналоговых контактов Arduino, чтобы с его помощью регулировать частоту мерцания встроенного светодиода, подключенного к 13-ому контакту.

Необходимое оборудование

Цепь

С потенциометром:

Рис. 1. Подключение потенциометра к плате Arduino.
Рис. 1. Подключение потенциометра к плате Arduino.

С фоторезистором:

Рис. 2. Подключение фоторезистора к плате Arduino.
Рис. 2. Подключение фоторезистора к плате Arduino.

Подсоедините к Arduino три провода. Первый пойдет от «земли» (GND) к одному из выходных контактов потенциометра. Второй – от 5-вольтового контакта ко второму выходному контакту потенциометра. Третий – от 0-ого аналогового входного контакта к среднему контакту потенциометра.

В этом примере можно воспользоваться «родным» для Arduino светодиодом, по умолчанию подключенным к 13-ому контакту. Впрочем, если вы хотите задействовать дополнительный светодиод, подсоедините его длинную ногу (ногу с позитивным зарядом, т.е. анод) к 13-ому цифровому контакту, а короткую (с отрицательным зарядом, т.н. катод) – к контакту с «землей», расположенному рядом с этим 13-ым контактом. Поскольку сила тока, который пойдет через 13-ый контакт, будет небольшой, токоограничивающий резистор использовать не обязательно.

Схема

С потенциометром:

Рис. 3.Схема подключения потенциометра к плате Arduino.
Рис. 3. Схема подключения потенциометра к плате Arduino.

С фоторезистором:

Рис. 4. Схема подключения фоторезистора к плате Arduino.
Рис. 4. Схема подключения фоторезистора к плате Arduino.

Вначале зададим три переменные – для 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);                  
}

См.также

  1. pinMode()
  2. analogRead()
  3. digitalWrite()
  4. delay()
  5. AnalogReadSerial
  6. AnalogInOutSerial
  7. Fade
  8. Calibration

Внешние ссылки