Чтение аналогового входного пина, отображение результата, а затем использование этих данных для затемнения или увеличения яркости светодиода.
Этот пример показывает вам, как читать аналоговый входной пин, отображать результат в диапазоне от 0 до 255, использовать этот результат для установки ширины импульса модуляции (PWM) выходного пина для затемнения или увеличения яркости светодиода и выводить значения на серийный монитор Arduino Software (IDE).
Необходимое оборудование:
- Плата Arduino
- Потенциометр/переменный резистор
- Cветодиод
- Резистор 220 ом
Схема
Подключите один пин от вашего потенциометра к 5V, центральный пин к аналоговому пину 0, а оставшийся пин к земле. Затем подключите ограничительный резистор 220 ом к цифровому пину 9 с светодиодом в серии. Длинная, положительная ножка (анод) светодиода должна быть подключена к выходу от резистора, а короткая, отрицательная ножка (катод) подключена к земле.
Код
В приведенном ниже скетче, после объявления двух пинов (аналоговый 0 для потенциометра и цифровой 9 для светодиода) и двух переменных, sensorValue
и outputValue
, единственное, что вы делаете в функции setup()
, - это начинаете серийное общение.
Затем, в основном цикле, sensorValue
назначается для хранения сырого аналогового значения, считанного с потенциометра. У Arduino есть диапазон analogRead
от 0 до 1023, и диапазон analogWrite
только от 0 до 255, поэтому данные с потенциометра нужно преобразовать, чтобы поместиться в меньший диапазон перед использованием их для затемнения светодиода.
Для преобразования этого значения используйте функцию map()
outputValue = map(sensorValue, 0, 1023, 0, 255);
outputValue
назначается равным масштабированному значению с потенциометра. map()
принимает пять аргументов: значение для отображения, нижняя граница диапазона и верхняя граница диапазона входных данных, а также нижняя и верхняя граница диапазона к которму мы приводим значения. В этом случае данные с датчика уменьшаются от исходного диапазона от 0 до 1023 до 0 до 255.
Новые масштабированные данные с датчика затем выводятся на аналоговый выходной пин, затемняя или увеличивая яркость светодиода при повороте потенциометра. Наконец, как исходные, так и масштабированные значения датчика отправляются в окно серийного монитора Arduino Software (IDE).
/*
Аналоговый вход, аналоговый выход, серийный выход
Чтение аналогового входного пина, отображение результата в диапазон от 0 до 255 и использование
результата для установки ширины импульса модуляции (PWM) выходного пина.
Также выводит результаты на Serial Monitor.
Схема:
- потенциометр подключен к аналоговому пину 0.
Центральный пин потенциометра идет к аналоговому пину.
Боковые пины потенциометра идут к +5V и земле
- светодиод подключен от цифрового пина 9 к земле
автор Tom Igoe
Этот пример кода находится в общественном достоянии.
https://www.arduino.cc/en/Tutorial/AnalogInOutSerial
*/
// Эти константы не изменятся. Они используются для присвоения имен пинам:
const int analogInPin = A0; // Аналоговый входной пин, к которому подключен потенциометр
const int analogOutPin = 9; // Аналоговый выходной пин, к которому подключен светодиод
int sensorValue = 0; // значение, считанное с потенциометра
int outputValue = 0; // значение, выводимое на PWM (аналоговый выход)
void setup() {
// инициализация серийной связи со скоростью 9600 бит/с:
Serial.begin(9600);
}
void loop() {
// чтение аналогового входного значения:
sensorValue = analogRead(analogInPin);
// отображение его в диапазон аналогового выхода:
outputValue = map(sensorValue, 0, 1023, 0, 255);
// изменение аналогового выходного значения:
analogWrite(analogOutPin, outputValue);
// вывод результатов через Serial Monitor:
Serial.print("sensor = ");
Serial.print(sensorValue);
Serial.print("\t output = ");
Serial.println(outputValue);
// ожидание 2 миллисекунд перед следующим циклом для установки аналого-цифрового
// преобразователя после последнего чтения:
delay(2);
}