Затухающий светодиод с разными частотами

У меня есть потенциометр, подключенный к одному аналоговому порту arduino (предположим, A0).
Я читаю значение этого, используя input_voltage = analogRead (A0); это значение между 0-1023.
Поэтому я хочу сопоставить это значение с частотой от 1 Гц до 20 Гц. Затем я хочу погасить свой светодиод, используя эту частоту.
Попытался сделать эту карту, используя int frequency = map (input_voltage, 0, 1023, 1, 20);
Но как я могу применить эту частоту к светодиоду?
Я имею в виду, что ШИМ имеет постоянную частоту (около 500 Гц). Как я должен применять частоты от 1 до 20 к этому светодиоду, чтобы он затухал?

, 👍0

Обсуждение

Вы хотите мигать или мерцать вместо того, чтобы затемнять светодиод ? Или 1 Гц означает, что вы хотите затухать в течение 1 секунды между включением и выключением (20 Гц = 50 мс между включением и выключением не будет видимой разницы для немедленного переключения)?, @DataFiddler

Какова ваша цель? Вы хотите изменить скорость, с которой вы мигаете светодиодом? ШИМ (широтно - импульсная модуляция) не изменяет частоту выходного сигнала-она изменяет рабочий цикл (отношение времени включения к времени выключения) выхода с фиксированной частотой. Если вы хотите затемнить выход вашего светодиода на основе входного бака, мне кажется, что вы должны сопоставить 0-1023 с 0-255 и использовать выход 0-255 для управления выходным выводом PWM. Если вы хотите контролировать частоту мигания светодиода, вам нужно использовать что-то другое, кроме ШИМ., @Duncan C

@DuncanC Спасибо за вашу помощь. Что это за "что-то иное, чем ШИМ" ? Например, таймеры?, @Ramtin


1 ответ


Лучший ответ:

0

Существует библиотека, в которой вы можете изменить частоту

Вот мой пример кода, который я сделал давным-давно, у меня была такая же проблема

Возьми отсюда библиотеку

Идите вперед и попробуйте пример кода там и попытайтесь понять тоже.

Сначала включите библиотеку в код

мой код

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