liman324

Программирование микроконтроллеров, PHP. rcl-radio.ru | forum.rcl-radio.ru
Пикабушник
Дата рождения: 28 августа
2772 рейтинг 110 подписчиков 0 подписок 70 постов 22 в горячем
75

ESP32 + Bluetooth — терморегулятор (2)

Ранее на странице http://rcl-radio.ru/?p=92577 описывался пример создания простого терморегулятора на базе ESP32. Управление терморегулятором осуществляется по сети Bluetooth, через Android приложение. На этой странице будет рассмотрен аналогичный проект но с небольшими доработками, помимо ручного регулирования температуры добавлена возможность установки температуры регулирования по времени.

Текущее время ESP32 получает от NTP сервера через Интернет. Используется 4-е временных отметки, переключать которые можно кнопками TIME1, TIME2, TIME3 и TIME4. При переключении временных отметок показывается установленное время для текущей отметки и температура регулирования. При установки времени регулирования необходимо соблюдать временную последовательность, первая отметка начало суток, четвертая конец суток. Например, если необходимо установить температуру регулирования 22 °С с 22:30 до 6:00, а с 6:00 поднять температуру до 24 °С, то установите первую отметку на 6:00 > 24, а четвертую на 23:30 > 22. Так же первая отметка должна быть по времени меньше второй, вторая меньше третей, третья меньше четвертой.

Как показано на примере, в 23:30 установится температура в 24 °С и до 6:00 меняться не будет. В 6:00 температура повысится до 25 °С и до 15:30 меняться не будет. Далее в 15:30 температура установится на 27 °С и до 20:00 меняться не будет. В 20:00 температура установиться на 29 °С и до 23:30 меняться не будет.

Для переключения между ручным регулированием температуры и регулированием температуры по времени используется кнопка SET.

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

Перед загрузкой скетча рекомендую ознакомится со статьей  — ESP32 DevKit v1 Wi-Fi Bluetooth ESP32-WROOM-32 (Arduino IDE).

Перед прошивкой в скетч добавьте параметры Вашей Wi-Fi сети:

const char* ssid = «Имя_сети»;

const char* password = «Пароль_сети»;

Так же укажите временной сдвиг в секундах от UTC:

NTPClient timeClient(ntpUDP, «pool.ntp.org», 21600,3600123);// 21600 — временной сдвиг в секундах от UTC (6 часов)

Приложение и скетч - http://rcl-radio.ru/?p=92597

Пины подключения датчика температуры и модуля реле к ESP32 указаны в скетче.

Показать полностью 3
178

Часы на ИВ-18 (Arduino)

ИВ-18 — индикатор вакуумный люминесцентный многоразрядный для отображения информации в виде цифр, точки и знаков. Оформление — стеклянное. Индикация производится через боковую поверхность баллона. Размер знакоместа 5,4×10,5 мм. Число разрядов девять (9 разряд знак минус и точка). Изображение формируется из светящихся анодов-сегментов. Цвет свечения — зеленый. Масса 30 г.

Основные параметры индикатора ИВ-18:

  • Яркость свечения одного разряда 200-500 кд/м²

  • Угол обзора  ≥ 80°

  • Ток накала 85 ± 10 мА

  • Ток анода-сегмента при напряжении на аноде и сетке в 50 В  ≤ 1,3 мА

  • Ток анодов-сегментов восьми разрядов суммарный  40 … 80 мА

  • Напряжение накала  4,3 … 5,5 В

  • Напряжения анодов и сетки в импульсном режиме  ≤ 70 В

На платформе Arduino с использованием индикатора ИВ-18 можно собрать часы, которые будут отображать текущее время (hh-mm-ss), дату (DD.MM.YYYY) и температуру.

Вакуумный люминесцентный индикатор ИВ-18 имеет выводы рассчитанные для использования только динамической индикации. Для питания часов необходим источник постоянного напряжения 9 В (можно 5 В, но яркость свечения индикатора будет низкой). Для нормальной работы индикатора на катод (нить накала) необходимо подавать напряжение от 4,3 … 5,5 В, которое подается со стабилизатора напряжения 7805. Для питания сеток и анодов напряжение должно быть в пределах от 30 до 50 В, для получения такого напряжения в схеме часов используется преобразователь на NE555. Питание на аноды и сетки подается при помощи 16 транзисторных ключей (BC547). При настройки выходного напряжения преобразователя (R35 30-40 кОм — чем больше сопротивление, тем выше выходное напряжение) нельзя повышать напряжение больше 50 В, это предельное напряжение коллектор-эмиттер для транзистора BC547.

В качестве платы Arduino можно использовать плату Nano (ATmega168, ATmega328), а так же микроконтроллер ATmega8 (с небольшой правкой кода и схемы подключения). В схеме так же используется модуль часов реального времени DS3231. Время часов можно установить двумя способами: установка времени по времени компиляции и кнопками.

Установка времени по времени компиляции:

раскоментируйте строчку, установите нужно время и загрузите скетч

set_time(21,5,4,29,9,57,0);// год 00-99, ДН 1-7 (1=ВС), месяц 1-12, дата 1-31, час 0-23, минуты 0-59, секунды 0-59

далее закомментируйте строчку и по новой загрузите скетч.

Установка (коррекция) времени кнопками:

Установить текущее время можно при помощи кнопок SET и UP. Кнопка SET позволяет перекачать параметр времени (часы, минуты, секунды, дата, месяц и год), кнопка UP меняет параметр времени (только на увеличение), а режиме настройки секунд обнуляет их. В режиме коррекции времени выбранный параметр времени мигает.

Информация об температуре берется из часов реального времени DS3231.

Время

Дата

Температура

Скетч - http://rcl-radio.ru/?p=98856

Показать полностью 4 1
168

Часы на адресной светодиодной ленте WS2812B (Arduino)

Адресная светодиодная лента представляет собой ленту на которой размещены адресные светодиоды, каждый светодиод состоит из RGB светодиода и контроллера. Адресная лента имеет как правило имеет три входных контакта: +5V, GND и DIN. Каждый отдельный светодиод ленты (пиксель) имеет выход DOUT, для передачи управляющего сигнала к следующему светодиоду.

Наиболее популярные адресные ленты работают на чипах WS2812b и WS2811. Чип WS2812b размещен внутри RGB светодиода, питание 5 В, а в адресных лентах использующих чип WS2811 установлен отдельно от светодиода, напряжение питания 12 В, так же чип WS2811 управляет сразу тремя RGB светодиодами, которые представляют собой один пиксель.

Те же адресные ленты имеют разное кол-во светодиодов на 1 метр и соответственно разную мощность потребления и цену.

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

При этом один бит передается за 1,25 мкс, все 24 бита передаются за 30 мкс. Длительность импульса при передачи логического нуля равна 0,4 мкс ±0,125 мкс, а скважность 0,85 мкс ±0,125 мкс, длительность импульса для логической единицы равна 0,85 мкс ±0,125 мкс, а скважность 0,4 мкс ±0,125 мкс.

После передачи всех 24 бит в первый RGB светодиод следует пауза не более 50 мкс, далее снова передаются 24 бита, но первый светодиод не реагирует на них, он просто передается эту информацию следующему светодиоду и так далее по цепочке до последнего светодиода. После окончания передачи следует пауза больше 50 мкс, после чего лента переходит в исходное состояние и готова принимать цифровой сигнал начиная с первого светодиода.

На базе адресной светодиодной ленты WS2812B можно собрать простые часы. Часы собраны на адресной ленте плотностью 96 пикселей на 1 метр. Дополнительно в часах используются часы (модуль) реального времени DS3231 и четыре тактовые кнопки.

Схема часов

Кнопки:

  • MODE — позволяет менять цвет свечения адресной ленты

  • UP — в режиме часов кнопка позволяет увеличивать яркость свечения адресной ленты, в режиме коррекции времени изменяет время часов (НН)

  • DOWN — в режиме часов кнопка позволяет уменьшать яркость свечения адресной ленты, в режиме коррекции времени изменяет время минут (MM)

  • SET — активация режима коррекции времени

Сборка часов

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

Порядок наклеивания отрезков адресной ленты на основание показан на рисунках:

При установке большой яркости свечения адресной ленты, необходимо использовать отдельный от Arduino источник питания 5 В, так ток потребления адресной ленты может превысить 2 А.

Скетч - http://rcl-radio.ru/?p=110997

Показать полностью 7 1
19

Ретро часы на ИГП-17 (Arduino)

ИГП-17 — индикатор цифровой многоразрядный газоразрядный предназначен для отображения информации в виде цифр от 0 до 9 (и десятичного знака) в каждом из 16 цифровых разрядов и дополнительной информации в служебном разряде в средствах отображения информации индивидуального и группового пользования.

Основные технические данные

  • Яркость свечения > 100 кд/м²

  • Номинальная яркость свечения при максимальном токе 170 кд/м²

  • Горизонтальный угол обзора при расстоянии наблюдения 0,6-0,8 м > 120°

  • Напряжение источника питания вспомогательных катодов (постоянное) > 190 В

  • Напряжение возникновения разряда (амплитуда импульса) < 190 В

  • Напряжение поддержания разряда (амплитуда импульса) < 170 В

  • Напряжение смещения на сегментах относительно анодов (постоянное) < 120 В

  • Ток индикации (среднее значение)

    • одного сегмента < 25 мкА

    • десятичной точки < 18 мкА

  • Интервал времени между импульсами, подаваемыми на электроды двух соседних знакомест > 35 мкс

  • Время готовности при освещенности 40 лк < 1 с

  • Минимальная наработка 5000 ч

  • Параметры, изменяющиеся в течение минимальной наработки импульсное напряжение возникновения разряда < 190 В

    • средний ток индикации одного сегмента < 30 мкА

    • десятичной точки < 21 мкА

    • яркость индикатора > 90 кд/м2

  • Срок хранения не менее 8 лет

  • Вибрационные нагрузки (1—2000 Гц) < 5g

  • Многократные ударные нагрузки (длительность удара 2-15 мс) < 15g

  • Одиночные ударные нагрузки (длительность удара 2-6 мс) < 75g

  • Температура окружающей среды

    • при эксплуатации +1…+50°С

    • при транспортировке -60…+50°С

  • Относительная влажность воздуха не более 98%

  • Пониженное атмосферное давление 400 мм рт. ст.

Предельно допустимый электрический режим

  • Наименьшее импульсное напряжение источника питания 190 В

  • Наименьшее постоянное напряжение источника питания вспомогательных катодов 190 В

  • Наибольшее постоянное напряжение смещения на сегментах относительно анодов 120 В

  • Рабочий ток одного сегмента

    • средний 25…40 мкА

    • импульсный 300…700 мкА

  • Рабочий ток десятичной точки

    • средний 13…20 мкА

    • импульсный 200…400 мкА

  • Рабочий ток вспомогательного катода 7…15 мкА

  • Наименьшая длительность импульса напряжения источника питания 200 мкс

На индикаторе ИГП-17 можно собрать часы и отображать на них текущее время, дату, месяц и год. В качестве микроконтроллера будет использован Atmega8535, так как обладает большим количеством выходов. Текущее время берется из часов реального времени DS3231.

Обеспечивает работу динамической индикации таймер 2 (1250 Гц), PWM сигнал необходимый для работы импульсного преобразователя напряжения контролируется таймером 1 (15625 Гц). Изменяя скважность PWM сигнала можно регулировать выходное напряжение импульсного преобразователя (+180 В).

Анодами индикатора управляют оптроны TLP627, катодами (сегментами) транзисторные ключи на MPSA44. Часы питаются от постоянного напряжения +12 В, в схеме предусмотрен стабилизатор 7805 для питания микроконтроллера Atmega8535 и часов реального времени DS3231.

В часах реального времени DS3231 имеется термометр, его показания периодически выводятся на индикатор вместо даты, месяца и года.

Так же в часах предусмотрен режим антиотравления катодов, раза в час, ровно в 30 минут происходит перебор всех цифр индикаторов в течении 10 секунд.

Для коррекции времени часов используются три кнопки SET, UP и DOWN. При нажатии на кнопку SET начинают мигать показания часов, кнопками UP и DOWN можно установить необходимое время. При коррекции секунд при нажатии кнопок UP и DOWN происходит сброс секунд в  ноль.

Скетч - http://rcl-radio.ru/?p=112823

Показать полностью 2 1
89

ATtiny13 + 0,91 I2C 12832 OLED (Arduino IDE)

Для простых и компактных проектов разработанных в среде Ardino IDE, таких как например простое реле времени, логичней применять простые и недорогие микроконтроллеры. Так как Arduino IDE поддерживает микроконтроллеры серии ATtiny, мной для этого проекта был выбран микроконтроллер ATtiny13.

ATtiny13 — низкопотребляющий 8 битный КМОП микроконтроллер с AVR RISC архитектурой. Выполняя команды за один цикл, ATtiny13 достигает производительности 1 MIPS при частоте задающего генератора 1 МГц, что позволяет разработчику оптимизировать отношение потребления к производительности.

Микроконтроллер ATtiny13 отлично подходит для маленьких и дешевых проектов, а поддержка средой программирования Arduino IDE заметно упрощает работу с микроконтроллером.

Далее в статье будет рассмотрено несколько простых проектов с применением микроконтроллера ATtiny13 и 0,91′ I2C 128×32 OLED дисплея.

Для поддержки ATtiny13 в Arduino IDE необходимо выполнить несколько простых операций:

  • Добавление поддержки платы

Откройте в Arduino IDE вкладку Файл > Настройки и добавьте ссылку для менеджера плат

https://mcudude.github.io/MicroCore/package_MCUdude_MicroCor...

Далее перейдите во вкладку Инструменты > Плата > Менеджер плат

Выберите и установите новую плату MicroCore by MCUdude.

Далее в Инструменты > Плата выберите плату ATtiny13.

  • Для прошивки скетча  Вам понадобится программатор USBAsp

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

Распиновка программатора USBAsp

В настройках платы нужно выбрать поддержку Attiny13 и установить частоту  9.6 MHz internal, в пункте EEPROM выберите EEPROM not retanied,  в пункте ‘Расчет времени’ выберите Micros disabled .

Далее необходимо выставить нужные фьюзы для микроконтроллера, чтобы он всегда работал на выбранной Вами частоте. Для этого в настройках Arduino IDE выберите программатор USBasb и нажмите Инструменты > Записать загрузчик. Эту операцию необходимо проводить всего один и снова повторить если Вы будете менять частоту работы микроконтроллера.

Для загрузки скетча в настройках Arduino IDE выберите программатор USBasb и во вкладке Скетч нажмите на Загрузить через программатор (или просто нажать кнопку — Загрузить).

Примеры использования ATtiny13

Термометр на DS18B20

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

Термометр на DS18B20 с большими цифрами

Секундомер

Дискретность отсчета 0,1 секунда, максимальное время 999 минут. Первое нажатие кнопки BUTTON запускает секундомер, второе нажатие останавливает его, третье сбрасывает показания.

Простые часы на DS1307

Простые часы с гашением экрана

Скетчи - http://rcl-radio.ru/?p=112955

Показать полностью 16
20

Часы на ИВЛ1-7/5 (Arduino IDE)

Ранее в статье http://rcl-radio.ru/?p=77848 был описан пример создания часов на цифровом многоразрядном вакуумном люминесцентном индикаторе ИВЛ1-7/5. В этой статье аналогичный проект, но в нем применена упрощенная схема питания и применен недорогой микроконтроллер Atmega8.

Основные данные индикатора ИВЛ1–7/5:

  • Цвет свечения: Зеленый

  • Номинальная яркость индикатора 500 кд/м2, минимальная – 300 кд/м2.

  • Напряжение накала: 5 В

  • Ток накала: 120 ± 12 мА

  • Напряжение анода–сегмента импульсное: 27 В

  • Ток анодов–сегментов импульсный одного разряда: 12 мА

  • Напряжение сетки импульсное: 27 В

  • Ток сетки импульсный одного разряда: 12 мА

  • Скважность: 5 ± 0,5

  • Минимальная наработка: 10 000 ч

  • Яркость индикатора, изменяющаяся в течение минимальной наработки, не менее: 100 кд/м2

  • Срок хранения не менее: 4 лет

Предельно допустимый электрический режим индикатора ИВЛ1–7/5:

  • Напряжение накала строго в пределах: 4,5–5,8 В

  • Наибольшее напряжение анодов–сегментов: 50 В

  • Наибольшее напряжение сетки импульсное: 50 В

Схема часов

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

// set_time(22,7,2,26,13,10,0);// год 00-99, ДН 1-7 (1=ВС), мес 1-12, дата 1-31, час 0-23, мин 0-59, сек 0-59

Залить скетч в микроконтроллер, далее закомментировать строку и залить скетч по новой.

В часах используется модуль часов реального времени DS1307, так же без изменения скетча можно использовать DS3231.

Для использования ATmega8 в Arduino IDE Вам необходимо собрать следующую схему (в данном случае допускается внутрисхемное программирование, то есть прошивать контроллер при полной собранной схеме часов):

Перед прошивкой ATmega8 необходимо установить поддержку контроллера в Arduino IDE, для этого откройте меню Файл >> Настройки и в пункте Дополнительные ссылки для Менеджера плат вставьте ссылку:

https://mcudude.github.io/MiniCore/package_MCUdude_MiniCore_...

Далее переходим в меню  Инструменты >> Плата >> Менеджер плат

В строке поиска напишите atmega8, списке менеджера плат выберите пакет: MiniCore by MCUdude

После установки поддержки плат в Arduino IDE появится плата Atmega8

  • Для прошивки скетча или загрузчика Вам понадобится программатор USBasp

Распиновка USBasp

Перед загрузкой в настройках платы укажите частоту кварцевого резонатора (12 МГц), выбрать программатор  USBasp, в пункте Bootloader выберите No bootloader или Yes (UART0) если планируете загружать скетчи через UART ( USB — TTL ).

Во вкладке «Инструменты»  нажмите «Записать загрузчик«.(делается только один раз)

После записи загрузчика Вы в Arduino IDE увидите примерно следующее:

Для загрузки скетча выберите вкладку — Скетч >> Загрузить через программатор

После загрузки скетча появится следующее сообщение:

Скетч - http://rcl-radio.ru/?p=113960

Показать полностью 13 1
85

Регулятор громкости и тембра LC75342 на Atmega88 (Arduino IDE)

Микроконтроллер Atmega88 может стать отличной заменой сильно подорожавших плат Arduino Nano. Большое кол-во проектов создаваемых на платах Arduino Nano часто используют небольшое объем памяти и применять Arduino Nano в данных проектах нецелесообразно.  Atmega88 имеет 8 кБ программируемой Flash памяти, 1кБ SRAM памяти и 512 байта EEPROM.

Микроконтроллер Atmega88 поддерживается средой программирования Arduino IDE, так же большинство библиотек совместимы с этими контроллерами.

Ранее в http://rcl-radio.ru/?p=120507 рассматривался пример создания регулятора громкости и тембра на LC75342 с использованием платы Arduino Nano, на этой странице будет аналогичный проект, но с использованием микроконтроллера Atmega88.

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

Более подробно об аудиопроцессоре можно узнать из статьи — LC75342 (Arduino)

Основные параметры LC75342

  • Регулировка громкости от -79 до 0 дБ (шаг 1 дБ)

  • Независимая регулировка громкости (баланс)

  • Входной предварительный усилитель входа от 0 до +30 дБ (шаг 2 дБ)

  • 4-х канальный коммутатор входов

  • Регулировка тембра BASS от -20 до +20 дБ (шаг 2 дБ)

  • Регулировка тембра TREBLE от -10 до +10 дБ (шаг 2 дБ)

  • Напряжение питания от 5 до 10 В

  • Управление цифровое 3-Wire (CL, DI, CE) (макс. тактовая частота до 500 кГц)

  • Входное сопротивление 50 кОм

  • Коэффициент нелинейных искажений 0,01% (макс.)

Регулятор громкости содержит два основных блока, первый блок микроконтроллерный (Arduino Nano) с органами управления и индикации, второй блок плата аудиопроцессора.

Регулировка громкости возможна в пределах от -79 до -4 дБ, недостающие 4 дБ отданы регулятору баланса.

Основное управление параметрами аудиопроцессора будет осуществляться при помощи энкодера (KY-040) и 2-х кнопок. Вся информация будет выводится на дисплей LCD1602 + I2C (I2C модуль на базе микросхем PCF8574 позволяют подключить символьный дисплей 1602 к плате Arduino всего по двум проводам SDA и SCL (А4 и А5), что дает возможность не использовать цифровые выходы Arduino при подключении дисплея.)

Регулятор тембра имеет одно меню, которое содержит регуляторы громкости, тембра (TRABLE, BASS) и баланса. Дополнительно при нажатии кнопки INPUT помимо переключения входа будет доступно меню предусилителя входа. (независимое для каждого входа).

Схема регулятора громкости и тембра

Как добавить микроконтроллер Atmega88 в среду программирования Arduino IDE и прошивать микроконтроллер можно узнать из статьи http://rcl-radio.ru/?p=113040.

Перед загрузкой в настройках платы укажите частоту кварцевого резонатора (12 МГц), выбрать программатор  USBasp, в пункте Variant тип контроллера 88P/88PA, 88/88A (для Atmega88 20PU который я используя для этой статьи) или 88PB, в пункте Bootloader выберите No bootloader или Yes (UART0) если планируете загружать скетчи через UART ( USB — TTL ).

Во вкладке «Инструменты»  нажмите «Записать загрузчик«.(делается только один раз)

Для запуска LCD1602 c I2C модулем на PCF8574, Вам понадобятся две библиотеки:

  • Wire_low — библиотека для работы с шиной I2C (тестовая версия)

  • Lcd1602_i2c_low — библиотека для работы с LCD1602 I2C на PCF8574

Скетч использует 5738 байт (70%) памяти устройства. Всего доступно 8192 байт.
Глобальные переменные используют 141 байт (13%) динамической памяти, оставляя 883 байт для локальных переменных. Максимум: 1024 байт.

Скетч - http://rcl-radio.ru/?p=120528

Показать полностью 5
19

Генератор AD9833 + ПП8-8(8А) (Arduino)

Ранее в http://rcl-radio.ru/?p=120649 рассматривался пример взаимодействия переключателя программного поворотного ПП8-8(8А) с микроконтроллерами типа Atmega8, Atmega48, Atmega88, Atmega168, Atmega328 (Arduino Nano), на этой странице будет показан практический пример использования такого переключателя совместно с модулем AD9833.

AD9833 — генератор сигналов с низким энергопотреблением. Позволяет генерировать сигналы с частотой до 12.5 МГц синусоидальной, треугольной и прямоугольной формы. Управление осуществляется с использованием трехпроводного интерфейса SPI.

Основные характеристики микросхемы:

  • Цифровое программирование частоты и фазы.

  • Потребляемая мощность 12.65 мВт при напряжении 3 В.

  • Диапазон выходных частот от 0 МГц до 12.5 МГц.

  • Разрешение 28 бит (0.1 Гц при частоте опорного сигнала 25 МГц).

  • Синусоидальные, треугольные и прямоугольные выходные колебания.

  • Напряжение питания от 2.3 В до 5.5 В.

  • Трехпроводной интерфейс SPI.

  • Расширенный температурный диапазон: от –40°C до +105°C.

  • Опция пониженного энергопотребления.

Более подробно об генераторе на AD9833 можно узнать на странице http://rcl-radio.ru/?p=78387.

Переключатель программный поворотный ПП8-8(8А) позволяет задавать необходимую частоту генератора на базе AD9833 в диапазоне от 0 до 9 999 999 Гц, а так же менять форму выходного сигнала.

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

Установленная частота выводится на дисплей LCD1602 c I2C модулем.

Как отмечалось в начале скетч полностью совместим с микроконтроллерами Atmega8, Atmega48, Atmega88, Atmega168, Atmega328 (Arduino Nano).

Тестирование

Скетч - http://rcl-radio.ru/?p=120672

Показать полностью 5
Отличная работа, все прочитано!