Затухающий светодиод с разными частотами
У меня есть потенциометр, подключенный к одному аналоговому порту arduino (предположим, A0).
Я читаю значение этого, используя input_voltage = analogRead (A0);
это значение между 0-1023.
Поэтому я хочу сопоставить это значение с частотой от 1 Гц до 20 Гц. Затем я хочу погасить свой светодиод, используя эту частоту.
Попытался сделать эту карту, используя int frequency = map (input_voltage, 0, 1023, 1, 20);
Но как я могу применить эту частоту к светодиоду?
Я имею в виду, что ШИМ имеет постоянную частоту (около 500 Гц). Как я должен применять частоты от 1 до 20 к этому светодиоду, чтобы он затухал?
@Ramtin, 👍0
Обсуждение1 ответ
Лучший ответ:
Существует библиотека, в которой вы можете изменить частоту
Вот мой пример кода, который я сделал давным-давно, у меня была такая же проблема
Возьми отсюда библиотеку
Идите вперед и попробуйте пример кода там и попытайтесь понять тоже.
Сначала включите библиотеку в код
мой код
void setup() {
pinMode(13, OUTPUT);
pinMode(8, OUTPUT);
digitalWrite(8,LOW);
Serial.begin(115200);
InitTimersSafe();
}
void loop() {
//mapping
long x = map(analogRead(A0),0,1023,1,20);
bool b = SetPinFrequencySafe(9,x);
digitalWrite(13,b);
pwmWrite(9,127);
Serial.print(x);
Serial.print(" Hz ");
Serial.println(b);
delay(100);
}
Встроенный светодиод загорится, если частота будет ограничена.
Кстати, светодиод будет включаться в 50% вкл.и 50% выкл. за один цикл на выводе 9.
Используйте только ШИМ-контакты в Arduino 3,9,6 и т. Д.
Теперь вы можете изменить частоту ШИМ...
Я просто вставил светодиод в розетку для удобства + клемма в 9 и - клемма в 8, чтобы перейти на землю, вот почему я поставил контакт 8 на низкий уровень.
Спасибо вам за этот полный и полезный ответ!, @Ramtin
Не проще ли было бы модулировать рабочий цикл ШИМ для затухания светодиода? Адаптируя частоту от 1 Гц до 20 Гц, вы просто получите изменяющуюся частоту мигания, если только вы не интегрируете ШИМ-выход с (довольно большим) конденсатором., @imalipusram
@imalipusram Я понимаю, но вопрос попросил меня сделать это с помощью частоты..., @Ramtin
- Генерировать 1,7 МГц с PWM в Uno?
- Можно ли сгенерировать точный тактовый импульс 15 кГц с помощью ардуино?
- Изменение частоты вывода ШИМ на Arduino Uno
- Arduino, генерирующий меньшую частоту, чем 31 Гц
- Установите частоту ШИМ на 25 кГц.
- Управление скоростью вентилятора с помощью библиотеки Arduino PID
- Как устранить шум от вентилятора 12 В с ШИМ-управлением на низкой скорости
- Генерация частоты ШИМ выше 125 кГц с помощью Arduino Uno
Вы хотите мигать или мерцать вместо того, чтобы затемнять светодиод ? Или 1 Гц означает, что вы хотите затухать в течение 1 секунды между включением и выключением (20 Гц = 50 мс между включением и выключением не будет видимой разницы для немедленного переключения)?, @DataFiddler
Какова ваша цель? Вы хотите изменить скорость, с которой вы мигаете светодиодом? ШИМ (широтно - импульсная модуляция) не изменяет частоту выходного сигнала-она изменяет рабочий цикл (отношение времени включения к времени выключения) выхода с фиксированной частотой. Если вы хотите затемнить выход вашего светодиода на основе входного бака, мне кажется, что вы должны сопоставить 0-1023 с 0-255 и использовать выход 0-255 для управления выходным выводом PWM. Если вы хотите контролировать частоту мигания светодиода, вам нужно использовать что-то другое, кроме ШИМ., @Duncan C
@DuncanC Спасибо за вашу помощь. Что это за "что-то иное, чем ШИМ" ? Например, таймеры?, @Ramtin