Помогите изменить частоту шим сигнала Arduino
- Войдите на сайт для отправки комментариев
Вс, 17/11/2019 - 16:37
Стоит задача изменять частоту шим сигнала одной кнопкой.Значения частоты шима должны быть 1, 2, 4, 8кГц.
Каждое нажатие должно менять частоту в большую сторону и так по кругу.
Как правильно это сделать ?
Значения частоты шима должны быть 1, 2, 4, 8кГц.
Кому должны?
мне))))
1) Выяснить каким таймером обслуживается PWM-выход
2) Покрутить регистры этого таймера - прескалер и всё такое.
мне))))
Нет, Вам не должны, Вы слишком ленивы.
Если бы Вы не поленились в окне поиска (в правом верхнем углу) набрать: "Шим с произвольной частотой" (без кавычек, разумеется), то этого поста бы не было. Там и примеры, и готовые библиотеки, и обсуждения - всего хватает.
Мне произвольна чистота не нужна как в генераторе частоты от 0 до нескольких мегагерц.
Мне нужно четыре параметра 1, 2, 4, 8кГц
Это просто. Задача на множества. Из полного множества частот генератора исключаем все кроме требуемых.
если тебе не трудно. Можешь скинуть пример кода как это реализовать если это не трудно.
Я с этим столкнулся первый раз, это мой первый опыт работы с ардуинкой и с подобным ранее не сталкивался
Не вопрос, бро! Чиркани темку сюда http://arduino.ru/forumy/ishchu-ispolnitelya
Мне произвольна чистота не нужна как в генераторе частоты от 0 до нескольких мегагерц. Мне нужно четыре параметра 1, 2, 4, 8кГц
Так вроде ж там по ссылкам показано как делать любую частоту (в разумных пределах), так и делайте какую Вам надо. В чем проблема?
по какой ссылке???
Так, в посте #4 я Вам сказал что делать, чтобы получить ссылки и на библиотеку pwm, и на примеры и обсуждения. Вы читаете, что Вам пишут?
Так, в посте #4 я Вам сказал что делать, чтобы получить ссылки и на библиотеку pwm, и на примеры и обсуждения. Вы читаете, что Вам пишут?
А есть пример как поиск по форуму сделать?
всё что я нашёл так это все проекты через энкодер а у меня кнопка
Через кнопки запрещено
тоесть я несмогу пошагово менять частоту кнопкой?
Все возможно, главное правильно сформулировать вопрос.
тоесть я несмогу пошагово менять частоту кнопкой?
Не, кнопка есть дьяволова богомерзкая придумка и не может быть использована, под страхом отлучения от непереполняемого миллиса. Только скрепный енкодер.
всё что я нашёл так это все проекты через энкодер а у меня кнопка
Т.е. библиотеку PWM Вы не нашли и примеры к ней не смотрели? Или нашли, но Вам этого мало?
Ну, тогда только в Ищу исполнителя - за денюшку.
У меня уже есть реализованное устройство ,с автономным питанием, с выходом 5 v и 12v. Девайс с индикатором , правда с двумя кнопками,хотя это исправимо. Диапазон до 10 кГц с перестраиваемым шагом, и т.д. и т.д.
тоесть я несмогу пошагово менять частоту кнопкой?
А сам-то как думаешь? Очевидно, что не можешь! Если бы мог, этого поста бы не было.
правда с двумя кнопками
Нещитова!
НЕ! с двумя круче! можно вперед крутить частоту, назад. А так как бы только вперед.Хотя есть варианты и для одной кнопки - крутить назад...
Может и круче, но удорожает конструкцию.
Кнопка ж не простая нужна, а "для
лоховАрдуино", а они вон по 100+ рублей за штучку!Изверги! Вы чё ребёнка тролите, можно, всё можно!
<тоесть я несмогу пошагово менять частоту кнопкой?>
Можете ,конечно можете, напишите почту как с Вами связаться.Я так понял ,что ваш ник и есть адрес почты?
НЕ! с двумя круче! можно вперед крутить частоту, назад. А так как бы только вперед.Хотя есть варианты и для одной кнопки - крутить назад...
в КВН говорили, что в Татарском языке нет слова назад )))
НЕ! с двумя круче! можно вперед крутить частоту, назад. А так как бы только вперед.Хотя есть варианты и для одной кнопки - крутить назад...
в КВН говорили, что в Татарском языке нет слова назад )))
Алга - что означает вперед,хотя я их языка не знаю.
НЕ! с двумя круче! можно вперед крутить частоту, назад. А так как бы только вперед.Хотя есть варианты и для одной кнопки - крутить назад...
в КВН говорили, что в Татарском языке нет слова назад )))
Алга - что означает вперед,хотя я их языка не знаю.
ал - высший, га - путь ))) (на русском)
Элементарно) Просто используй функцию пьезо пищалки. Она отлично генерирует любой сигнал.
int p = 9; //объявляем переменную с номером пина, на который мы //подключили пьезоэлемент void setup() //процедура setup { pinMode(p, OUTPUT); //объявляем пин как выход } void loop() //процедура loop { tone (p, 500); //включаем на 500 Гц delay(100); //ждем 100 Мс tone(p, 1000); //включаем на 1000 Гц delay(100); //ждем 100 Мс }И будет тебе щастье
Элементарно) Просто используй функцию пьезо пищалки.
не пишите чушь... человек спрашивал про частоту ШИм
Элементарно) Просто используй функцию пьезо пищалки.
не пишите чушь... человек спрашивал про частоту ШИм
может так?
/* Пример для мега и Уно. позволяет менять диапазона частот: 1 Гц - 2 мГц (2000000 Гц) на 16-битных таймеров 31 Гц - 2 мГц (2000000 Гц) на 8-битных таймеров Стандартная частота ШИМ ардуины 500Гц. pwmWriteHR() может использоваться пины: на Uno (9 и 10) на Мега (2,3, 5, 6, 7, 8, 11, 12, 44, 45, и 46) */ #include <PWM.h> int led = 9; // пин, светодиод int knob = 12; // пин кнопки byte flag_knob = 0; unsigned long frequency = 1000; // частота 1 - 2000000 (Гц) int brightness = 125; // частота ШИМ (0-255) //или //word brightnessHR = 32768; // частота ШИМ (0-65536) is 32768. void setup(){ InitTimersSafe(); //инициализируем все таймеры, кроме 0, //SetPinFrequencySafe(led, frequency); //устанавливает частоту для указанного pin SetPinFrequency(led, frequency); //устанавливает частоту для указанного pin pinMode(knob,INPUT_PULLUP); } void loop(){ pwmWrite(led, brightness); //0-255 используйте эту функцию вместо analogWrite //или //pwmWriteHR(led, brightnessHR); //0-65536 используйте эту функцию вместо analogWrite if(digitalRead(knob)==LOW &&flag_knob==0){ flag_knob=1; frequency = frequency*2; if(frequency>8000){frequency=1000;} } SetPinFrequency(led, frequency); if(digitalRead(knob)==HIGH &&flag_knob==1){ flag_knob=0; } delay(200); }