- Платы Ардуино
- Обучение Ардуино
- Мой блог
- Уроки
- Урок № 1 "Пишем свой первый скетч"
- Урок № 2 "Подключение фоторезистора"
- Урок № 3 "Подключение пищалки(BUZZER)
- Урок № 7 "Модуль часов RTC DS3231"
- Урок № 8 - "Шаговый двигатель 28BYJ-48"
- Урок № 10 - "ИК пульт на Ардуино"
- Урок № 11- "Сканер отпечатка пальца"
- Урок № 12- "Датчик наклона SW-200D"
- Урок № 13- "Гирлянда светодиодная WS2812b"
- Книги
- Мой YOUTUBE
Аналоговый вход, аналоговый выход, вывод в последовательный монитор порта
Аналоговый вход, аналоговый выход, вывод в последовательный монитор порта
Этот пример демонстрирует, как считывать значения с аналогового входа, преобразовывать результат в диапазон от 0 до 255, использовать это для управления широтой импульсов модуляции (ШИМ) выходного пина для изменения яркости светодиода, а также выводить значения в последовательный монитор программы Arduino (IDE).
Нам понадобятся:
- Плата Arduino
- Потенциометр
- Красный светодиод
- Резистор 220 Ом
Подключение:
Схема:
Описание:
В данном примере мы подключаем пин потенциометра к +5V, центральный пин к аналоговому входу A0, а оставшийся пин к земле.
Затем подключаем резистор 220 Ом к цифровому пину 9, а светодиод подключаем последовательно резистору.
Длинная нога (анод) светодиода подключается к выходу от резистора, короткая нога (катод) - к земле.
Скетч:
/*
Аналоговый вход, аналоговый выход, вывод в последовательный монитор
Считывает аналоговый сигнал с пина ввода, отображает результат в диапазон от 0 до 255
и использует его для установки ширины импульсов модуляции (ШИМ) на выходном пине.
Также выводит результаты в монитор последовательного порта.
Схема:
- потенциометр подключен к аналоговому пину 0.
Центральный пин потенциометра подключен к аналоговому пину.
Боковые пины потенциометра подключены к +5V и GND.
- светодиод подключен от цифрового пина 9 к GND.
*/
// Эти константы не будут меняться. Они используются для именования используемых пинов:
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.print("sensor = ");
Serial.print(sensorValue);
Serial.print("\t output = ");
Serial.println(outputValue);
// Ожидание 2 миллисекунды перед следующей итерацией для устранения эффекта осцилляции
// аналого-цифрового преобразования после последнего считывания:
delay(2);
}
В данном скетче после объявления двух пинов (аналогового А0 для потенциометра и цифрового 9 для светодиода) и двух переменных sensorValue и outputValue, в функции setup() выполняется только инициализация последовательной связи.
Затем в основном цикле переменной sensorValue присваивается значение аналогового сигнала от потенциометра.
Поскольку Arduino имеет диапазон аналогового чтения от 0 до 1023, а диапазон аналоговой записи только от 0 до 255, данные от потенциометра нужно преобразовать для соответствия меньшему диапазону перед использованием их для изменения яркости светодиода.
Для преобразования значения используется функция map():
outputValue = map(sensorValue, 0, 1023, 0, 255);
outputValue присваивается масштабированное значение от потенциометра.
Функция map() принимает пять аргументов:
значение для отображения,
нижний предел входных данных,
верхний предел входных данных,
нижний и верхний пределы данных, которые нужно преобразовать.
В данном случае данные сенсора преображаются с изначального диапазона от 0 до 1023 на диапазон от 0 до 255.
Более подробно про функцию map() смотрите в соответствующих темах.
Новые значения сенсора затем выводятся на аналоговый выходной пин, что приводит к затемнению или подсветке светодиода при вращении потенциометра.
Наконец, начальные и масштабированные значения сенсора отправляются в последовательное окно монитора программы Arduino (IDE) в виде стабильного потока данных.
5 примеров использования:
Управление яркостью светодиода: Аналогично приведенному выше примеру, можно использовать аналоговый вход для динамического изменения яркости светодиода в зависимости от положения потенциометра.
Звуковой индикатор: Подключите звуковой генератор вместо светодиода, чтобы создать звуковой индикатор с изменяемой громкостью.
Регулировка скорости мотора: Вместо светодиода подключите мотор, и используйте аналоговый сигнал для регулировки его скорости.
Цветовой сенсор: Подключите цветовой сенсор и используйте аналоговый вход для определения цвета окружающей среды.
Термостат: Подключите термистор для измерения температуры, и используйте аналоговый сигнал для управления системой отопления или охлаждения.
Дополнительные материалы по теме
Музыкальная клавиатура на Ардуино
Динамики ардуино. Подключение динамиков к Arduino
Аналоговый вход, аналоговый выход, вывод в последовательный монитор порта
"Подключение фоторезистора к плате Ардуино" Урок № 2
Фоторезистор 5506
Подключение пищалки (BUZZER) к плате Ардуино
Звуки Ардуино из разных динамиков.
Музыкальная шкатулка. Ардуино
VU METR Музыка в цвете
Мелодии для Ардуино на пищалке. Пример и код.