Константа значения AnalogRead для изменяющегося напряжения (для изменения яркости светодиода)
Наличие контакта 11~ в режиме ВЫХОДА, который обеспечивает переменное напряжение (от 0 до 5: от 0 до 255).
и контакт A0 в режиме INPUT для считывания напряжения, я обнаружил, что значение, считанное A0, равно либо 0, либо 1016, а не постепенно принимает несколько значений между ними. в чем подвох?
Схема и код, который я использую:
int volt = 0;
int sign = 1; //значения: (1, -1), увеличивает или уменьшает «вольт» на 5.
float potential;
void setup() {
pinMode(11, OUTPUT);
pinMode(A0, INPUT);
Serial.begin(9600);
}
void loop() {
if (volt == 0){sign = 1;}
if (volt == 255){sign = -1}
volt = volt + sign * 5; //повышает яркость до 255 с 0, затем до 0 с 255.
analogWrite(11, volt);
potential = analogRead(A0);
Serial.println(potential);
delay(30);
/*
*/
}
@Huskarnov, 👍1
Обсуждение2 ответа
Выходной контакт ШИМ не меняет напряжение — он выдает только 0 или 5 В. Время, в течение которого напряжение 5 В включено, от 1/255 периода примерно 2 мс до 255/255 того же периода, определяет, насколько ярким будет восприниматься светодиод.
Вам действительно нужен резистор ограничения тока последовательно со светодиодом, чтобы не допустить перегорания выходного контакта uC или светодиода.
Спасибо, если ВЫХОДНОЕ напряжение практически не меняется, как меняется яркость светодиода? https://streamable.com/vc106, @Huskarnov
@Huskarnov Он мерцает слишком быстро, чтобы ваш глаз мог его уловить, чем больше он горит, тем ярче он кажется., @ratchet freak
Время включения воспринимается глазом как более тусклое или более яркое. Так работает наш мозг., @CrossRoads
@Huskarnov [этот GIF](https://i.gifer.com/I0Yv.gif) может помочь визуализировать это., @Gerben
Как говорит CrossRoads, на Arduino действительно не существует аналогового выхода. (Любой Arduino, если только он не имеет встроенного ЦАП.) Он использует широтно-импульсную модуляцию для изменения «рабочего цикла» выхода от 100% до 0%, что имитирует аналоговое напряжение.
Если вы управляете светодиодом с ШИМ (и необходимым токоограничивающим резистором), ваши глаза не будут видеть вспышки и будут усреднять яркость на основе рабочего цикла сигнала ШИМ.
Если вам нужно реальное аналоговое напряжение от ШИМ, вам нужно будет добавить конденсатор фильтра, чтобы усреднить напряжение с течением времени. При использовании простого фильтра с одним конденсатором у вас все равно будет флаттер на выходе, но он будет уже ближе. Если вам нужно чистое постоянное напряжение, вам понадобится более сложный фильтр.
@Gerben, ты отредактировал мой ответ, чтобы поговорить конкретно об Arduino Uno. Мой ответ применим ко **всем** Arduinos. (Ардуини?), @Duncan C
И Arduino Zero, и Arduino Due имеют встроенные ЦАП (цифро-аналоговый преобразователь). А еще есть множество Arduino-совместимых устройств от Sparkfun, Adafruit и других производителей, которые используют чипы с ЦАП. Например, платы на базе ESP32 или популярный SAMD21. Так что определенно **не** все Ардуини (Ардуино?)., @Gerben
Тогда я исправлюсь. Я дал свой ответ не конкретно для UNO, а для всех Arduino, у которых нет ЦАП., @Duncan C
- Отправка значения с одного Arduino на другой
- Arduino непрерывно считывает значение АЦП с помощью прерывания
- Колебания показаний датчика температуры LM35 (+- 5°C) с Arduino UNO
- Проблема с открытием нескольких текстовых файлов одновременно/по порядку с использованием <SD.h>
- Динамически обновить масштаб виджета Tkinter из портов Arduino с помощью python и firmata
- Считанное значение не меняется при вращении потенциометра в Arduino?
- Отправка аналоговых входных данных из последовательного порта в Google Таблицы
- Проблема с мультиплексором CD74HC4067 при высоких значениях.
даже после фильтрации вы не увидите значения между Vf светодиода и 5 В, имейте это в виду., @dandavis