Генератор импульсов ардуино для авто

Содержание

Генератор прямоугольных импульсов

3wAAAgG3buA 100

Посмотрел видео и тоже собрал себе небольшую коробочку. Заморачиваться особо не надо, все комплектующие из блоков, МК — Ардуино Нано, переключатель реализовал на энкодере (на 20 положений).
Немного подкорректировал скетч автора. Если необходима частота повыше, то после задания шага появляется возможность дойти до 32 кГц, правда начинает подвирать на сотых. Скважность на любой частоте 50%.
Для возможности безбоязненного подключения мосфета, добавил пару резисторов на выходе: 30 Ом после 13 пина и около 100 кОм параллельно выходу.
Отключение подсветки я отключил, но в скетче оставил. Подсказки в скетче тоже есть.

aad3f25s 960

80b3f25s 960

14f3f25s 960

36f3f25s 960

e68bf25s 960

684bf25s 960

2d4bf25s 960

48cbf25s 960

f6abf25s 960

206bf25s 960

3fe0a5s 960

П.С. подправил скетч. Теперь при достижении максимальной частоты не сбрасывается в начало. Начало и конец частотного диапазона ограничены STOPом. При установке шага в «единицу» выше 8191 Гц генератор не выдаст.
Таким образом сейчас скетч позволяет шагать от 1 до 32760 Гц.
Посмотрел осциллографом сигнал, в принципе нормальный, но заметил что чем выше частота тем больше отклонений от показываемой частоты на экране. На десятках килогерц отклонения достигают до 500Гц.

Метки: генератор прямоугольных импульсов, генератор на ардуино

Комментарии 15

3wAAAgG3buA 60

// Макросы
#define drivePin 13 //выход сигнала 13 пин
#define BUTTON_PIN 12 //вход кнопки энкодера на пин 12
//#define TIMEOUT 30000 //время подсветки 30 сек
#define xTIME 2000 //время срабатывания при долгом удержании кнопки (свыше 2 сек)
#define highLevel 100000 //верхняя граница частот
//#define lowLevel 1 //нижняя граница частот

// Объекты
LiquidCrystal_I2C lcd(0x3F, 16, 2); // установить адрес индикатора и шины I2C (адрес шины ставим свой)
RotaryEncoder encoder(A2, A3); // выводы к которым подключён энкодер
Bounce bouncer = Bounce(); // создаем экземпляр класса Bounce
// Переменные
int frequency;
unsigned long previousTime, pressTime;
bool flagReady, flagLight, flagPress, flagPause;

void setup()
<
pinMode(drivePin, OUTPUT); // настроить вывод drivePin на выход
digitalWrite(drivePin, LOW); // установить низкий уровень
PCICR |= (1 TIMEOUT)
<
lcd.noBacklight();
flagLight = false;
>
>*/
>

// Управление таймером Т1
void driveTimer (int freq)
<
unsigned long period;
if(freq == 0 || flagPause == true) // если частота = 0 или взведён флаг паузы
<
Timer1.detachInterrupt(); // отключение прерывания
digitalWrite(drivePin, LOW); // установить низкий уровень
>
else
<
period = 500000 / freq; // определяем период в мксек
Timer1.attachInterrupt(drive, period); // настройка прерывания по истечению заданного периода
>
>

// Вывод данных на дисплей
void visualShow(int freq)
<
lcd.clear(); // очистка индикатора
if(freq > 0) // если частота больше нуля (генератор работает)
<
if(flagPause) lcd.print(» PAUSE»); // если взведён флаг паузы — вывод на экран слово PAUSE
else lcd.print(«Freq =»); // иначе выводим надпись ЧАСТОТА РАВНА
lcd.setCursor(8, 0); // указываем знакоместо
lcd.print(freq); // выводим значение частоты
lcd.print(» Hz»); // знак «Гц»
>
else lcd.print(» STOP»); // если частота = 0, то выводим надпись СТОП
>

// Обработчик внешних прерываний
ISR(PCINT1_vect)
<
encoder.tick(); // вызов функции tick()
>

void drive()
<
digitalWrite(drivePin, digitalRead(drivePin) ^ 1 ); // генерация прямоугольного импульса
>

Источник

Простой генератор прямоугольных импульсов до 1 МГц на Arduino своими руками

В этой статье мы рассмотрим простой генератор прямоугольных импульсов (square-wave generator) с частотой до 1 МГц на основе платы Arduino. Генератор будет использовать библиотеку TimerOne, позволяющую формировать сигнал широтно-импульсной модуляции (ШИМ) на контакте 9 платы Arduino.

j3jalogadl.blob

Также на нашем сайте вы можете посмотреть проекты генераторов сигналов (в том числе и прямоугольных импульсов) на основе платы Arduino и DDS модуля и на основе просто платы Arduino, без использования каких-либо дополнительных устройств. Также задачу формирования подобных импульсов можно решить с помощью генератора на Arduino и модуле SI5351.

Необходимые компоненты

Общие принципы работы проекта

Рассматриваемый в данной статье простой генератор прямоугольных импульсов будет использовать библиотеку TimerOne, которая позволяет формировать ШИМ сигнал на контакте 9 платы Arduino с частотой от 5 Гц до 1 МГц с настраиваемой скважностью (коэффициентом заполнения, duty cycle) от 0 до 100%. Скачать библиотеку TimerOne можно по следующей ссылке.

Генератор состоит из небольшого числа компонентов: платы Arduino Nano, ЖК дисплея, 3-х подтягивающих резисторов и 3-х кнопок.

В генераторе можно изменять период (частоту) повторения импульсов с помощью кнопок, подключенных к контактам 6 и 7 платы Arduino. С помощью кнопки, подключенной к контакту 13, можно изменять скважность импульсов. Длительность импульсов и скважность будут отображаться в первой строке ЖК дисплея, а частота – во второй строке ЖК дисплея. Минимальный шаг для настройки периода повторения импульсов составляет 1 мкс, поэтому частота импульсов будет изменяться также дискретно, например, периоду 1 мкс будет соответствовать частота 1 МГц, периоду 2 мкс – частота 500 кГц, периоду 3 мкс – частота 333.333 Гц и т.д. То есть по мере уменьшения частоты увеличивается плавность ее настройки. Конечно, это не очень практично для высоких частот, но это вынужденная плата за простоту устройства. Более продвинутый генератор можно собрать на основе использования DDS модуля, но это уже будет значительно более сложное устройство.

Для проверки работы генератора автор проекта использовал простой одноканальный осциллограф (который также можно собрать на основе платы Arduino). Для удобства работы с генератором он был помещен в небольшой корпус.

dscn3987 zze5udz0g3

Схема проекта

Схема простого генератора прямоугольных импульсов на основе платы Arduino представлена на следующем рисунке.

Исходный код программы (скетча)

Комментарии к коду программы частично переведены.

Источник

Генерирование и чтение сигналов

signal

Начнём с самого простого: генерация импульса заданной длины, такое часто бывает нужно. Проще всего сделать это на delay() и delayMicroseconds() :

Нужно помнить, что digitalWrite() сам по себе выполняется в районе 3.6 мкс (58 тактов процессора). Для ускорения можно использовать например библиотеку directIO или прямую работу с регистрами портов.

Генерирование квадратного сигнала

Программное

Квадратный сигнал может быть использован для тактирования и управления, а также для генерации звука через усилитель. Самый базовый пример, Blink, по сути тоже является генератором квадратного сигнала:

На практике такой способ используется редко, потому что на высокой частоте остальной код программы будет мешать генерации и частота будет плавать.

Функция tone()

В ядре Arduino есть встроенная функция для полуаппаратной генерации квадратного сигнала – tone(pin, frequency, duration) :

ШИМ сигнал

Аппаратный таймер

Можно вручную настроить аппаратный таймер на генерацию квадратного сигнала. Тонкости настройки регистров таймера мы в рамках этих уроков не разбираем, но это можно сделать и при помощи библиотеки, например GyverTimers. Работу библиотеки мы разбирали в уроке о прерываниях таймера. Данная библиотека позволяет настроить генерацию квадратного сигнала с максимально возможной точностью и частотой, а также поднять на одном таймере генерацию двух или трёх (Arduino MEGA) меандров со смещением по фазе. Пример:

ШИМ сигнал

Аппаратный

Программный ШИМ

Программная генерация ШИМ сигнала может пригодиться, если не хватает лишнего таймера или частота ШИМ низкая и не повлияет на остальной код, а он на неё. ШИМ сигнал на “миллисе” можно организовать вот таким образом, переключая выход по двум периодам:

Функцию PWMgen(заполнение) в данной реализации нужно вызывать как можно чаще в основном цикле программы:

Здесь мы на каждом вызове считаем новый период переключения, тратя на это какое-то время. Можно считать период в отдельной функции, а сам ШИМ генерировать отдельно. Реализацию можно посмотреть в библиотеке PWMrelay.

Полуаппаратный ШИМ

Можно снизить нагрузку на процессор, отдав счёт времени аппаратному таймеру. Примеры на базе GyverTimers (для ATmega328, 2560):

Как известно, digitalWrite() является очень тяжёлой и долгой функцией, и для генерации софт ШИМ рекомендуется заменить её чем-то более быстрым, например прямым обращением к регистру или вот такой конструкцией (для ATmega328p):

Если не хватает количества стандартных ШИМ-выходов, можно поднять полуаппаратный ШИМ на таймере на несколько пинов сразу:

Этот алгоритм является не самым оптимальным, более интересный можно посмотреть в GyverHacks.

Можно ввести буферизацию заполнения ШИМ и брать новое значение только при нулевом значении счётчика, это решит проблему:

Можно применить буферизацию и к остальным алгоритмам.

Библиотека Servo

Как известно, RC сервоприводы управляются при помощи ШИМ сигнала с частотой

50 Гц и длительностью импульса от

2500 микросекунд. В стандартной библиотеке Servo.h реализована генерация полуаппаратного ШИМ сигнала, причём количество пинов можно менять во время работы. Библиотеку можно использовать как генерацию ШИМ, если его параметры подходят для использования.

Чтение сигналов

Чтение цифрового сигнала сводится к измерению времени между его импульсами, то есть изменениями состояния HIGH-LOW: так можно измерить период и частоту квадратного сигнала, заполнение и частоту ШИМ и вообще любой другой сигнал.

Функция pulseIn()

В ядре Ардуино есть готовые функции для измерения импульсов:

3 минут, основано на micros() (т.е. на Таймере 0), не работает при отключенных прерываниях, более точно измеряет длинные импульсы.

pulsein

Измеренная мной точность на коротких импульсах: 0.5 мкс

Обе функции возвращают длину импульса в микросекундах. Возвращают 0, если импульса не было и был достигнут тайм-аут. Обе функции блокирующие, то есть останавливают выполнение кода, пока не поймают импульс или не завершатся по тайм-ауту. Аргументы:

Для превращения длины импульса (мкс) в частоту (Гц) достаточно поделить на него секунду (точнее, 1’000’000 мкс).

Измеряем сигналы вручную

Квадратный сигнал можно “измерить” вот таким образом:

Таким образом можно сделать измеритель частоты или тахометр, но лучше не выводить в сериал каждый фронт (нагружает процессор и тормозит), а считать импульсы и иногда измерять частоту (см. следующий пример).

Считаем импульсы и иногда делаем расчёт:

Также рассмотрим измерение параметров ШИМ сигнала, например на прерываниях и micros() :

Библиотека тахометра

Также предлагаю использовать класс тахометра, оформленный в виде библиотеки. Скачать можно с гитхаб. Также прикладываю здесь:

“Запоминаем” сигнал

Также можно очень просто запомнить цифровой сигнал в Arduino для дальнейшего воспроизведения и исследования. Вот пример, который будет работать на любом пине (используется digitalRead() и micros()):

Измерение начнётся по изменению сигнала и продлится до тех пор, пока не переполнится буфер или работа не завершится по таймауту (в примере выше 1 секунда с последнего импульса). После этого в монитор порта будет выведен начальный уровень сигнала fval и тайминги каждого следующего фронта/спада (изменения). Для примера я подключил ИК приёмник и нажал кнопку на пульте:

dumpir

Точность измерения должна быть около 5 мкс на AVR, так как используется тяжёлое чтение пина и микрос. Лучше переписать на прерывания по CHANGE и завести отдельный таймер, тогда точность можно повысить в сотни раз. Код не привожу, так как для разных платформ он будет разный.

Полученные данные можно использовать для анализа интерфейсов и протоколов, а также можно “воспроизвести” запись. В примере ниже я делаю это отдельным скетчем, вставив тайминги и начальное значение сигнала из лога предыдущего примера.

Для визуализации подключил дешёвый китайский логический анализатор (ссылка на али, ещё одна) на указанный пин:

analyzir

Отлично! Прекрасно виден NEC протокол, его 4-х байтный пакет и код повтора.

Можно реализовать чтение пакета и его вывод в одной программе, запись дампа в EEPROM/SD для воспроизведения по кнопке и прочих сценариев работы, получив дубликатор цифрового сигнала.

Источник

Делаем генератор частоты на базе Ардуино микроконтроллера

Генератор частоты на Ардуино – это прибор для преобразования электрической энергии источника постоянного тока.

Что такое генератор

Генератор производит преобразование в энергию, не поддающуюся затуханию, для расчета и частоты и образованной формы электрических колебаний.

Приспособление приобрело популярность среди начинающих создателей электронных устройств, разработчиков компьютерных девайсов и радиоприемников. Выходное напряжение получается из 3 форм: прямоугольник, синусоида и пила.

Источник электрического тока передает возбужденные волны контуру колебаний, поэтому образуются волновые движения. Они постепенно затухают, потому что сопротивление поглощает энергетическую волну. Во избежание затухания в контур подается дополнительная энергия для восполнения потерянной. Такая процедура проводится с использованием положительной обратной связи. С помощью связи в контур поступает частица сигнала, совпадающего с колебанием обратной связи.

Такой прибор, как генератор сигналов на Ардуино, легко сделать в домашних условиях. Основа конструкции – микроконтроллер Arduino.

generator chastoti

Где применяется генератор частоты на Ардуино

Роль частотного генератора в мире электроники – настройка и определение технической характеристики тактов сигнальных волн. Другое применение – для регулировки узлов и элементов приемников, передающих радио-колебания.

Кроме того, генератор импульсов, построенный на Ардуино, используют как модулятор или источник питания для устройств, которые обладают измерительными свойствами.

Частотные измерители могут изменять выходные сигналы с определенным скачком.

generator

Поэтому устройства с такими свойствами играют немаловажную роль в конструировании электронных приборов. Перечислим другие значительные функции Ардуино-генератора:

Комплектующие

Для создания генератора прямоугольных импульсов на Ардуино понадобятся следующие компоненты:

Также во втором случае можно собрать устройство на основе AD9850 DDS модуля и 1,8-дюймового TFT-дисплея (контроллер ST7735).

В таком случае схема соединения будет выглядеть так:

shema ad9850

Код для Ардуино

Листинг программы для проекта «генератор импульсов с регулировкой частоты на Ардуино» для первого нашего варианта:

Во втором случае программный код будет таким (позаимствовано на просторах интернета):

Для первого варианта вам нужно не забыть про библиотеку LiquidCrystal, которую можно найти на сайте производителя по этой ссылке.

Для второго варианта нужны следующие технические спецификации:

И библиотеки для Arduino:

Сборка генератора

Алгоритм сборки проекта Arduino-генератор импульсов:

sborka

Настройка

Если по окончанию загрузки пользователь получил сообщение «Done uploading», значит, генератор сигналов на Ардуино с дисплеем готов к работе. Следующий шаг – соединение модулей.

Выходные сигнальные волны снимаются с контактов генератора:

После сборочных работ следует тщательно проверить, правильно ли подключены все контакты. Если все правильно подключено – подаем питание в устройство из электросети.

По истечению пары секунд на дисплее загорится стандартное значение частоты – 10 кГц. Значение можно изменить в любое время – для этого в листинге выше запрограммированы кнопки вверх, вниз, влево и вправо.

Проверка работы

В первом случае после конструирования должен получиться стандартный мотор-редуктор Ардуино синусоидальных и прямоугольных волновых сигналов, диапазон которых регулируется от 0 до 40 МГц.

Проверить управление легче легкого – есть 2 кнопки – вверх и вниз, для настройки грубого характера, а другие – влево и вправо – настраивают аппарат на точную проверку. Настроить шаг можно в зависимости от установленной частоты на аппарате.

Во втором случае итоговое решение будет выглядеть так:

Кроме того, перед переносом программы, указанной в разделе «Программное обеспечение», нужно проверить правильность кода с помощью компилирования.

Аппаратная часть прибора легко соединяется с использованием отдельных модулей, поэтому частотный генератор на базе микропроцессора Ардуино может сделать начинающий разработчик электронных устройств.

Источник

Генератор сигналов прямоугольной и синусоидальной формы на Arduino

Каждый инженер, увлекающийся электроникой, на определенном этапе своей деятельности мечтает о создании своей мини лаборатории. Мультиметр, осциллограф, генератор сигналов специальной формы, источник питания, трансформатор – вот лишь минимальный обязательный набор для подобной лаборатории. Конечно, сейчас все это можно купить, но чтобы сэкономить свои деньги, часть из этих устройств можно сделать самостоятельно на основе платы Arduino. Например, генератор сигналов или осциллограф.

diy waveform generator using arduino

В этой статье мы рассмотрим как на основе платы Arduino достаточно просто сконструировать генератор сигналов прямоугольной и синусоидальной формы. При формировании сигналов прямоугольной формы данный генератор может формировать прямоугольную волну с перепадами уровней 5V/0V с частотой от 1 Гц до 2 МГц. Частотой формируемого сигнала можно будет управлять с помощью инкрементального энкодера. Коэффициент заполнения (цикл занятости) данного сигнала будет равен 50%, но его можно изменить, внеся соответствующие изменения в программу. Рассматриваемый нами генератор не является промышленным устройством и его не рекомендуется использовать на серьезном производстве, но для домашних условий использования он вполне подойдет.

Также на нашем сайте вы можете посмотреть проекты более «продвинутых» генераторов для формирования сигналов прямоугольной и синусоидальной формы:

Если же вам нужно исключительно простое решение для формирования сигналов прямоугольной формы с частотой до 1 МГц с помощью платы Arduino, то рекомендуем этот проект.

Необходимые компоненты

Работа схемы

Схема генератора сигналов на основе платы Arduino представлена на следующем рисунке.

circuit diagram for diy waveform generator using arduinoПлата Arduino Nano управляет всеми процессами в схеме. ЖК дисплей используется для отображения частоты формируемого сигнала, а с помощью углового кодера производится установка частоты сигнала. Также на нашем сайте вы можете прочитать статью о подключении инкрементального энкодера к плате Arduino.

Схема запитывается от USB кабеля Arduino. Необходимые соединения в схеме представлены в следующей таблице.

Контакт платы Arduino Куда подключен
D14 контакт RS ЖК дисплея
D15 контакт RN ЖК дисплея
D4 контакт D4 ЖК дисплея
D3 контакт D5 ЖК дисплея
D6 контакт D6 ЖК дисплея
D7 контакт D7 ЖК дисплея
D10 to Rotary Encoder 2
D11 to Rotary Encoder 3
D12 to Rotary Encoder 4
D9 выход прямоугольного сигнала
D2 контакт D9 платы Arduino
D5 выход SPWM сигнала

В схеме мы будем формировать прямоугольную волну (сигнал прямоугольной формы) на контакте D9 платы Arduino. Его частоту мы будем регулировать с помощью углового кодера. Для формирования синусоидального сигнала мы будем формировать SPWM сигнал (синусоидальный ШИМ (широтно-импульсной модуляции) сигнал) на контакте D5, его частота будет зависеть от частоты сигнала прямоугольной формы, которая будет подаваться на контакт D2 и будет действовать как прерывание и затем мы с помощью процедуры обработки (обслуживания) прерывания будем управлять частотой синусоидального сигнала.

Вы можете собрать схему проекта на макетной или даже на печатной плате, но мы решили спаять ее на перфорированной плате, в результате у нас получилась конструкция, показанная на следующих рисунках:

circuit hardware for diy waveform generator using arduino

Формирование прямоугольного сигнала с изменяемой частотой

Если вы знакомы с Arduino, то вы должны знать что плата Arduino может достаточно просто формировать ШИМ сигнал (с помощью функции analogwrite) на ряде своих контактов. Но с помощью этой функции можно управлять только коэффициентом заполнения (скважностью) ШИМ сигнала, но нельзя управлять его частотой – а это как раз и нужно для нашего генератора сигналов. Управление частотой сигнала прямоугольной формы можно осуществить используя таймеры платы Arduino и непосредственно переключая состояние контактов на их основе. Помочь нам в этом может библиотека Arduino PWM Frequency Library (библиотека управления частотой ШИМ сигнала), более подробно работу с ней мы рассмотрим далее в статье.

producing square wave with variable frequency

Но в использовании этой библиотеки есть ряд слабых сторон. Дело в том, что данная библиотека изменяет настройки по умолчанию Таймера 1 (Timer 1) и Таймера 2 (Timer 2) платы Arduino. В связи с этим вы уже не сможете, к примеру, использовать библиотеку для управления серводвигателем или другие библиотеки, задействующие эти таймеры платы Arduino. Также функция analogwrite на контактах 9,10,11 & 13 использует Timer 1 и Timer 2, следовательно, вы уже не сможете формировать SPWM сигнал (синусоидальный ШИМ сигнал) на этих контактах.

Но преимуществом этой библиотеки является то, что она не мешает работа Таймера 0 (Timer 0) платы Arduino, который в нашем случае является более важным чем Timer 1 и Timer 2 потому что в этом случае вы можете без проблем использовать функцию задержки (delay) и функцию millis(). Также контакты 5 и 6 управляются Таймером 0, поэтому мы без проблем сможем использовать на этих контактах функцию analogwrite или осуществлять управление сервомотором.

Формирование синусоидальной волны (колебания) с помощью Arduino

Что такое SPWM сигнал

SPWM расшифровывается как Sinusoidal Pulse Width Modulation и переводится как синусоидальная широтно-импульсная модуляция (синусоидальная ШИМ). Этот сигнал в определенной степени похож на обычный ШИМ сигнал, но в нем коэффициент заполнения контролируется таким образом чтобы получить среднее напряжение похожее на синусоидальную волну. Например, при коэффициенте заполнения (скважности) 100% среднее выходное напряжение будет 5V, а при коэффициенте заполнения 25% оно будет всего лишь 1.25V, таким образом, управляя скважностью (коэффициентом заполнения) мы можем получить заранее определенные изменяемые значения среднего напряжения, то есть синусоидальную волну. Этот метод обычно используется в инверторах.

Принцип формирования SPWM сигнала показан на следующем рисунке.

sinusoidal pulse width modulation

Преобразование SPWM сигнала в синусоидальную волну

Преобразование SPWM сигнала в синусоидальную волну обычно требует использования схемы H-моста (H-bridge), которая состоит минимум из 4-х переключателей мощности (power switches). Подобные схемы обычно используются в инверторах. Мы не будем в статье подробно рассматривать эти вопросы поскольку нам с помощью нашей синусоидальной волны не нужно запитывать какое-либо устройство, нам всего лишь нужно ее сформировать. К тому же с помощью H-моста невозможно получить чистую синусоидальную волну – для этой цели необходимо использовать фильтр нижних частот (ФНЧ), состоящий из конденсаторов и индуктивностей.

output waveform of diy waveform generator using arduino

Библиотека для управления частотой ШИМ сигнала в Arduino

По представленной ссылке вы скачаете библиотеку в виде ZIP файла. После извлечения информации из этого ZIP файла вы получите каталог (папку) с именем PWM. Перейдите в папку с библиотеками Arduino IDE (для пользователей операционной системы Windows эта папка будет располагаться по адресу C:\Users\User\Documents\Arduino\libraries) и скопируйте туда эту PWM папку. Возможно, в библиотеках Arduino IDE у вас уже есть папка с именем PWM – в этом случае вам ее необходимо заменить на новую (скачанную) папку.

Объяснение программы для Arduino

Полный код программы приведен в конце статьи, здесь же мы рассмотрим его наиболее важные фрагменты. Перед компиляцией программы не забудьте добавить в библиотеки Arduino указанную библиотеку Arduino PWM Frequency Library, иначе компиляция программы будет выдавать вам ошибку.

Нам необходимо формировать ШИМ сигнал с изменяемой частотой на контакте 9 платы Arduino. Эта частота будет устанавливаться с помощью углового кодера, а ее значение будет отображаться на экране ЖК дисплея. А когда ШИМ сигнал будет формироваться на контакте 9 он также будет создавать прерывание на контакте 2 поскольку мы соединили оба этих контакта. Используя это прерывание мы можем управлять частотой SPWM сигнала, который будет формироваться на контакте 5.

Как обычно вначале программы мы должны подключить используемые библиотеки. Библиотека для работы с ЖК дисплеем встроена в Arduino IDE, а библиотеку для изменения частоты ШИМ сигнала мы только что скачали.

Источник

Оцените статью
Avtoshod.ru - все самое важное о вашем авто