Урок 14/31-4: Arduino программирование, пример map() 1
Этот учебник является частью серии по программированию Arduino и посвящен практическому использованию функции map(). В этом уроке вы узнаете, как преобразовать значение в процентах (0–100) в значение ШИМ (широтно-импульсной модуляции) (0–255) для управления яркостью светодиода. Вместо того чтобы вручную вычислять, что 60% равно 153, функция map() выполняет линейное преобразование за вас, делая ваш код чище и интуитивно понятнее.
Этот метод необходим для многих реальных приложений, где нужно преобразовывать показания датчиков или пользовательский ввод в другие диапазоны. Например, его можно использовать для:
- Управления скоростью двигателя постоянного тока на основе показаний потенциометра.
- Отображения сырого значения датчика температуры по шкале 0–100%.
- Преобразования координат джойстика в углы сервопривода.
- Регулировки яркости светодиода на основе датчика освещенности.
- Преобразования аналогового показания 0–5 В в цифровое значение 0–1023 или наоборот.
Оборудование/Компоненты
Для выполнения этого проекта вам понадобятся следующие компоненты:
- Плата Arduino (Uno, Nano и т. д.)
- Светодиод
- Резистор на 220 Ом
- Соединительные провода
- Макетная плата (необязательно, но рекомендуется)
Схема подключения
В видео инструктор демонстрирует проект, используя схему подключения из предыдущего урока о плавном затухании светодиода. Схема проста: подключите анод (длинную ножку) светодиода к резистору на 220 Ом, а другой конец резистора — к цифровому контакту 3 на Arduino. Подключите катод (короткую ножку) светодиода непосредственно к контакту заземления (GND) на Arduino.
Объяснение кода
Код для этого примера очень лаконичен, а основная логика находится в функции setup(). Давайте разберем части, которые пользователь может настраивать.
int LEDpin = 3; //определяем контакт для светодиода
Эта строка определяет контакт Arduino, к которому подключен ваш светодиод. В этом примере он установлен на контакт 3, который поддерживает ШИМ, что необходимо для аналогового вывода. Вы можете изменить это число, если подключите светодиод к другому ШИМ-контакту.
int b=8;//60% яркость
Это ключевая переменная, которую вы будете изменять для проверки различных уровней яркости. Она представляет желаемую яркость в процентах. В комментарии кода указано «60%», но для демонстрации в видео значение установлено на 8. Вы можете изменить его на любое целое число от 0 до 100. Например, установка b = 60 будет означать уровень яркости 60%.
int brightness = map(b, 0, 100, 0,255);
Это сердце урока. Функция map() берет ваше процентное значение (b) и преобразует его из исходного диапазона (от 0 до 100) в новый целевой диапазон (от 0 до 255). Результат сохраняется в переменной brightness, которая затем используется для записи аналогового значения на контакт светодиода.
analogWrite(LEDpin, brightness);// включаем светодиод с яркостью 60%
Наконец, эта строка отправляет преобразованное значение на контакт светодиода с помощью analogWrite(). Это устанавливает коэффициент заполнения светодиода, фактически управляя его яркостью. Прелесть этого подхода в том, что вам нужно только изменить переменную b для управления светодиодом, а функция map() выполняет все необходимые вычисления.
Живой проект/Демонстрация
В видео инструктор загружает код и демонстрирует эффект изменения переменной b. Когда b установлено на 8, монитор последовательного порта выводит преобразованное значение 20, и светодиод заметно тусклый. Изменение b на 90 дает преобразованное значение 229, делая светодиод значительно ярче. Установка b на 100 преобразуется в 255, что соответствует полной яркости. Эта практическая демонстрация наглядно показывает, как функция map() упрощает процесс управления аналоговыми выходами с помощью удобных процентных значений.
Связанные проекты из этого видео
- Урок 14/31-1: Arduino Millis (без задержки) и функции map | SunFounder Robojax
- Урок 14/31-2: Пример кода Arduino millis() 2 с событием
- Урок 14/31-3: Пример кода Arduino millis() 3 с кнопкой
- Урок 14/31-5: Пример кода Arduino map() 2
Главы
- [00:00] Введение в курс Arduino от Robojax
- [01:19] Что такое millis() и зачем его использовать
- [05:46] Пример 1: Использование millis() для события по времени
- [08:29] Пример 2: Использование millis() с кнопкой
- [12:14] Пример 3: Обнаружение второго нажатия кнопки после задержки
- [17:20] Введение в функцию map()
- [19:47] Разбор кода для примера с map()
- [20:41] Живая демонстрация функции map()
/*
Lesson 14/31: Arduino coding map( ) example-1
Get this code and watch video Download and resource page https://robojax.com/RJT597
YouTube video https://www.youtube.com/watch?v=lqgzQohNiIM
* This code is "AS IS" without warranty or liability. Free to be used as long as you keep this note intact.*
* This code has been download from Robojax.com
This program is free software: you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
the Free Software Foundation, either version 3 of the License, or
(at your option) any later version.
This program is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU General Public License for more details.
You should have received a copy of the GNU General Public License
along with this program. If not, see <https://www.gnu.org/licenses/>.
*/
int LEDpin = 3; //defind pin for LED
void setup() {
Serial.begin(9600);//initialize serial monitor with 9600 baud
pinMode(LEDpin, OUTPUT);//set pin as output
int b=8;//60% brightness
int brightness = map(b, 0, 100, 0,255);
Serial.println(brightness);//print it on serial monitor
analogWrite(LEDpin, brightness);// turn the LED on with 60% brightness
}
void loop() {
}
Вещи, которые могут вам понадобиться
-
АмазонкаSunFounder Arduino Learning Kit on AliExpresss.click.aliexpress.com
-
Амазонка
-
Амазонка
-
Амазонка
-
Амазонка
Ресурсы и ссылки
-
ДокументацияДокументация для набора 3 в 1 IoT/умный автомобиль/обучающий комплект SunFounderdocs.sunfounder.com
-
Внешний
Файлы📁
Руководство пользователя
-
Руководство по сборке 3-в-1 Arduino Smart Car от SunFounderВ этом документе показана пошаговая сборка 3-в-1 Arduino Smart Car от SunFounder
SunFounder_car_assembly_manual.pdf1.20 MB