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

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

Содержание

Принцип работы генератора прямоугольных импульсов на Arduino

Генератор прямоугольных импульсов на базе Arduino представляет собой устройство для формирования периодического сигнала прямоугольной формы с заданной частотой и скважностью. Основные компоненты такого генератора:

  • Плата Arduino (например, Arduino Uno) — формирует управляющие сигналы
  • Матричная клавиатура — для ввода параметров сигнала
  • ЖК-дисплей — для отображения текущих настроек
  • Выходной каскад на транзисторе — для усиления сигнала

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

  1. Микроконтроллер Arduino формирует прямоугольные импульсы на одном из цифровых выходов с заданной частотой и скважностью
  2. Пользователь вводит желаемые параметры сигнала с помощью клавиатуры
  3. Текущие настройки отображаются на ЖК-дисплее
  4. Выходной каскад усиливает сигнал по току для подключения нагрузки

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


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

Рассмотрим типовую схему генератора прямоугольных импульсов на базе Arduino:

  • Arduino Uno — основной управляющий элемент
  • Матричная клавиатура 4×4 — подключена к цифровым пинам D2-D9
  • ЖК-дисплей 16×2 — подключен по I2C интерфейсу (пины A4, A5)
  • Транзистор IRF540N — выходной каскад, подключен к пину D10
  • Резисторы, конденсаторы — обвязка схемы

Выходной сигнал снимается с коллектора транзистора IRF540N. Частота и скважность задаются программно.

Программа для Arduino

Основные функции программы для реализации генератора прямоугольных импульсов на Arduino:

  • Инициализация периферии (клавиатура, дисплей)
  • Обработка нажатий клавиш и изменение параметров
  • Формирование ШИМ-сигнала на выходе
  • Вывод информации на дисплей

Ключевой фрагмент кода для генерации сигнала:


void loop() {
  // Формирование ШИМ-сигнала
  analogWrite(outputPin, dutyCycle);
  
  // Изменение состояния каждые полпериода
  if (micros() - lastToggle >= period/2) {
    digitalWrite(outputPin, !digitalRead(outputPin));
    lastToggle = micros();
  }
  
  // Остальной код
}

Здесь period — период сигнала в микросекундах, dutyCycle — скважность (0-255).


Настройка частоты и скважности

Частота и скважность генерируемого сигнала задаются через клавиатуру и отображаются на дисплее. Типовой алгоритм настройки:

  1. Нажатие кнопки «F» — переход в режим установки частоты
  2. Ввод числового значения частоты в Гц
  3. Нажатие «Enter» для подтверждения
  4. Нажатие «D» — переход к установке скважности
  5. Ввод значения скважности в процентах (1-99)
  6. Нажатие «Enter» для применения настроек

Диапазон частот обычно ограничен возможностями Arduino и составляет от долей Гц до сотен кГц.

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

Генератор на Arduino может использоваться для различных задач:

  • Тестирование и отладка цифровых схем
  • Формирование тактовых сигналов
  • Управление шаговыми двигателями
  • Генерация звуковых сигналов
  • ШИМ-регулирование в системах автоматики

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

Улучшение характеристик генератора

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


  • Использование внешнего кварцевого генератора для повышения стабильности частоты
  • Добавление цифро-аналогового преобразователя для формирования сигналов произвольной формы
  • Применение более мощного выходного каскада для увеличения нагрузочной способности
  • Реализация дополнительных режимов работы (пачки импульсов, ЧМ и др.)

Это позволит создать более функциональный прибор на базе простой схемы.

Советы по сборке и настройке

При реализации генератора на Arduino следует учитывать некоторые моменты:

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

Это поможет получить надежно работающее устройство с хорошими характеристиками.

Заключение

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



Low frequency square wave generator with memory rev. 2.2 | Низкочастотный генератор прямоугольных импульсов с памятью — Share Project

Low frequency square wave generator with memory rev. 2.2 | Низкочастотный генератор прямоугольных импульсов с памятью

Файлы по проекту

Основа схемы микроконтроллер ATmega8A в корпусе TQFP32, выбран с запасом, чтобы под конец разработки не споткнуться об недостаточное кол-во памяти или портов ввода/вывода. Подключение стандартное, АЦП не используется — к порту C подключен LCD-дисплей 16х2. Тактируется от внутреннего генератора — для ?низкочастотника? вполне достаточно. Оба внешних прерывания заняты: INT0 – энкодер, INT1 – кнопки управления. Все кнопки управления ?висят? на одном прерывании. Подтягивающие резисторы относительно низкого сопротивления для того, что-бы повысить помехоустойчивость прибора во время проверки высоковольтных катушек зажигания. Антидребезг контактов кнопок и энкодера реализован программно — как показала практика, толку от параллельных конденсаторов нет абсолютно никакого.

Выход генератора ?умощнен? N-канальным MOSFET-ом и может напрямую подключаться к нагрузке — без реле по принципу ?открытый коллектор?. Да, именно ?открытый коллектор?, а не ?открытый сток? как думают многие недоучки — это условное обозначение типа подключения дающее понимание о способе работы выхода на нагрузку. MOSFET следует использовать именно с логическим уровнем управления затвором (типа IRLZ44) — в схеме не предусмотрен драйвер для управления MOSFET-ом потому, что для такого ?оченьнизкочастотного? генератора он просто не нужен.

На плате имеется индикация подачи питания и выходных импульсов. В схему встроен диод для защиты от переполюсовки и 5-вольтовый стабилизатор напряжения, благодаря которому устройство можно питать напряжением до 30V.

Верхняя частота генератора, чисто символически, ограничена 9999Гц потому, что больше не было нужно. Нижняя граница частоты пока ограничена 1Гц-ем, но в планах ?опустить? ее до 0.1Гц — недавно возникла такая потребность (чтобы форсунки, ну прям, очень неторопливо попшикивали).

На LCD-дисплее одновременно отображаются две строки (дисплей-то 2-строчный):

FREQ (частота, Гц)

DURATION (насыщение, скважность, %)

Выбор строки осуществляется кнопкой энкодера и указывается символом ?>?. Значение выбранного параметра изменяется вращением энкодера. Для параметра FREQ значение изменяется с шагом 1Гц, для DURATION с шагом 10% (мне так удобно).

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

Всего, в ПЗУ микроконтроллера организован массив на 5 предустановок. Ограничение чисто символическое и может быть практически бесконечным. Выбор нужной осуществляется ?белыми? кнопками SB2 и SB3 ?по кругу?, т.е. после пятой предустановки будет первая. Значения параметров частоты и скважности в каждой выбранной предустановке сразу отображаются на дисплее. Их можно корректировать и ?пересохранить? в ту же предустановку одновременным нажатием кнопок SB2 и SB3.

Автор: Дмитрий ЗАХАРОВ | UNCENZORED

NS047 — Генератор прямоугольных импульсов 250 Гц — 16 кГц

NS047 — Генератор прямоугольных импульсов 250 Гц — 16 кГц — набор для пайки купить в Мастер Кит. Драйвер, программы, схема, отзывы, инструкция, своими руками, DIY

NS047 — Генератор прямоугольных импульсов 250 Гц — 16 кГц — набор для пайки купить в Мастер Кит. Драйвер, программы, схема, отзывы, инструкция, своими руками, DIY

У нас Вы можете купить Мастер Кит NS047 — Генератор прямоугольных импульсов 250 Гц — 16 кГц — набор для пайки: цена, фото, DIY, своими руками, технические характеристики и комплектация, отзывы, обзор, инструкция, драйвер, программы, схема

Мастер Кит, NS047, Генератор прямоугольных импульсов 250 Гц — 16 кГц — набор для пайки, цена, описание, фото, купить, DIY, своими руками, отзывы, обзор, инструкция, доставка, драйвер, программы, схема

https://masterkit. ru/shop/1313462

Набор для сборки

Наборы для сборки / Начинающим электронщикам

Измерение / Лаборатория

Набор для пайки предназначен для сборки генератора прямоугольных импульсов своими руками. Регулируемый генератор импульсов позволяет формировать импульсы прямоугольной формы с частотой 250 — 16000 Гц. Питание схемы осуществляется источником постоянного напряжения 5 — 15 В при максимальном токе потребления 50 мА. Для Вашей домашней радио лаборатории  генератор прямоугольных импульсов незаменимым помощником в настройке усилителей звуковых частот и других схем. Схема генератора очень простая, поэтому собрать его Вы сможете за несколько минут, а использовать на протяжении многих лет!

Возрастное ограничение 14+.

Есть в наличии


Как получить:

Стоимость и варианты доставки будут рассчитаны в корзине


Купить сегодня в магазине Чип и Дип

2 290

+ 115 бонусов на счет


Где купить


Набор для пайки предназначен для сборки генератора прямоугольных импульсов своими руками. Регулируемый генератор импульсов позволяет формировать импульсы прямоугольной формы с частотой 250 — 16000 Гц. Питание схемы осуществляется источником постоянного напряжения 5 — 15 В при максимальном токе потребления 50 мА. Для Вашей домашней радио лаборатории  генератор прямоугольных импульсов незаменимым помощником в настройке усилителей звуковых частот и других схем. Схема генератора очень простая, поэтому собрать его Вы сможете за несколько минут, а использовать на протяжении многих лет!

Возрастное ограничение 14+.

Технические характеристики

Частота формируемых импульсов, Гц 250 — 16000
Форма импульсов прямоугольная
Напряжение питания, В 5 — 15
Максимальный ток потребления, мА 50
Размеры печатной платы, мм 59х37
Вес без упаковки, г29
Вес с упаковкой, г 52


Инструкции

  • Инструкция

Дополнительная информация

Генератор низкой частоты выполнен на базе таймера NE555 (DA2) с перестраиваемой частотой генерации в указанном диапазоне. Выходной сигнал – прямоугольной формы. Частотозадающие элементы таймера – R3, R4, R5 и C4. Перестройка частоты осуществляется потенциометром R2. На ИМС DA1 выполнен стабилизатор напряжения питания схемы генератора. Емкости С1,С2 и С3 – фильтрующие, по питанию. Уровень выходного сигнала регулируется потенциометром R6. Переключатель SW1 предназначен для включения-выключения устройства. Светодиод HL1 индицирует работу генератора. Источник питания подключается к контактам X1 (+) и X2 (-). Сигнал НЧ снимается с контактов X3 (+) и X4 (-).

Конструктивно генератор выполнен на печатной плате из фольгированного стеклотекстолита. Конструкция предусматривает установку платы в корпус, для этого имеются монтажные отверстия по краям платы под винты Ø3 мм.


Схемы

Схема


Техническое обслуживание

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

Вопросы и ответы

  • Добрый день. даный генератор подойдет для имитации спидометра и тахометра? Для установки электроусилителя руля. Спасибо.
    • Теоретически должен подойти, нужно пробовать.
  • Здравствуйте, примерно сколько вермени уйдет на доставку товара?
    • Смотря какой способ доставки выберите. В среднем 3-4 дня.

Комментарии

Задать вопрос на Форуме

Аналогичные устройства



С этим товаром покупают




Обсудить на форуме

Copyright www.maxx-marketing.net

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

с использованием Arduino

— Реклама —

В этом проекте Arduino Uno сконфигурирован как генератор прямоугольных импульсов с выбираемым пользователем контролем частоты и рабочего цикла. Рабочий диапазон системы до 10 кГц. Желаемая частота и рабочий цикл генерируемой прямоугольной волны могут быть получены с помощью матричной клавиатуры, которая сопряжена с цифровыми выводами Arduino. Авторский прототип генератора показан на рис. 1.

Рис. 1: Авторский прототип

Схема и работа

Принципиальная схема генератора прямоугольных импульсов, построенного на плате Arduino Uno, матричной клавиатуры и некоторых других компонентов, показана на Рис. 2.

Рис. 2: Принципиальная схема генератора на базе Arduino генератор прямоугольных импульсов

В качестве устройства ввода используется матричная клавиатура 4×3. Четыре ряда (с RW1 по RW4) клавиатуры подключены к цифровым контактам 10, 11, 12 и 13 платы Arduino Uno. Три столбца (от CL1 до CL3) клавиатуры подключены к аналоговым входным контактам Arduino (от A0 до A2). Каждая колонка подключена к источнику питания 5В через резистор сопротивлением 1 кОм (от R1 до R3).

— Реклама —

Arduino Uno — это плата для разработки на базе микроконтроллера (MCU) AVR ATmega328P с шестью контактами аналогового ввода и 14 контактами цифрового ввода-вывода. MCU имеет 32 КБ флэш-памяти ISP, 2 КБ RAM и 1 КБ EEPROM. Плата обеспечивает последовательную связь через UART, SPI и I2C.

MCU может работать на тактовой частоте 16 МГц. Здесь цифровые контакты ввода-вывода 13, 12, 11, 10 и 9 Arduino настроены как выходные контакты. Выводы A0, A1 и A2 служат в качестве аналоговых входных контактов.

Программное обеспечение

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

Выберите плату Arduino Uno в меню Tools->Board в Arduino IDE и загрузите код wavegenerator.ino через стандартный USB-порт вашего компьютера. Функция Serial.begin(9600) инициализирует последовательный порт со скоростью передачи 9600 бод. В этом проекте последовательный монитор Arduino IDE также отображает введенное значение частоты и рабочего цикла для прямоугольной волны.

Примечание. Arduino необходимо сбрасывать каждый раз, когда требуется новая частота и рабочий цикл.
Схема работает просто. После загрузки кода в Arduino подключите клавиатуру, как показано на схеме. Включите питание и введите желаемое значение частоты с клавиатуры. Затем нажмите кнопку рабочего цикла S11 (см. рис. 2) и введите желаемое значение рабочего цикла, нажимая цифровые клавиши (от S0 до S9). Наконец, нажмите клавишу Enter (S12). Выходной прямоугольный сигнал доступен через CON1, который подключен к цифровому контакту 9.Ардуино Уно.

Загрузить
Папка с исходным кодом

Шибенду Махата — MTech (золотой медалист) в области приборостроения и электроники Университета Джадавпур. У него есть несколько публикаций в области обработки сигналов в известных международных журналах и на конференциях.

Автор: Соувик Кумар Дас увлечен электроникой и проектированием систем на базе микроконтроллеров.

Arduino — генератор сигналов AD9850

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

август 2015 г.

 

 

Цепь

Схема основана на Доступный модуль AD9850 DDS из различных источников, таких как eBay, Banggood и т. д. Хотя заявлено, что он работает на частоте до 40 МГц, я обнаружил, что выходное напряжение начало падать на частоте около 2,6 МГц — и цифровой прицел 50 МГц, и аналоговый прицел 20 МГц показали идентичные результаты. Поэтому я ограничил доступный диапазон частот от 10 Гц до 10 МГц в программном обеспечении.

Желаемая частота устанавливается в модуле AD9850 путем передачи данных на его вывод DATA. Цифровые контакты ATmega328 D5, D6, D7 и D8 подключите к контактам RESET, DATA, FQ_UD и W_CLK модуля AD9850 соответственно. Синусоидальные и прямоугольные выходные сигналы «в фазе» доступны от контактов 10 и 7 модуля AD9850. Рабочий цикл прямоугольной волны регулируется с помощью предварительно установленного потенциометра на модуле. сам. Я подумал о том, чтобы снять кастрюлю и использовать вместо нее монтируемую на панели, но я отказался от этого для этого простого проекта. я просто отрегулировал горшок на 50% рабочий цикл (т.е. равное соотношение метки-пространства) и оставил его на этом.

В диапазоне частот от 10 Гц до 2,5 МГц размах выходного синусоидального сигнала составляет примерно 1,08 В. Прямоугольная волна составляет около 5 вольт от пика к пику.

Управляемый прерываниями поворотный энкодер, подключенный к контактам прерывания ATmega328 (D2 и D3), регулирует частоту в диапазоне от 10 Гц до 10 МГц с заранее установленными шагами. Толкая кнопка поворотного энкодера (подключенная к D4) сбрасывает частоту до 1 кГц.

Шаги устанавливаются с помощью второго поворотного энкодера (не управляемого прерываниями), подключенного к контактам A2 и A3 ATmega328. Шаги определяются программно — я установил их на 1 Гц, 10 Гц, 50 Гц, 100 Гц, 500 Гц, 1 кГц, 2,5 кГц, 5 кГц, 10 кГц, 100 кГц и 500 кГц. Нажимаю кнопку энкодера — подключен к A4 — сбрасывает шаг на 1 Гц.

1,8-дюймовый TFT-дисплей подключается к контактам A1, A0, D13, D12, D11 и D10 ATmega328. Выводы SPI ATmega328 и программное обеспечение используют библиотеку Adafruit. Контакт D9 подключается к контакту светодиода дисплея через 100-омную клемму. резистор. D9 — это вывод ШИМ, поэтому при желании яркость подсветки дисплея можно отрегулировать. Я установил его в программном обеспечении на «255», т.е. максимальная яркость.

Доступны несколько очень похожих 1,8-дюймовых TFT-дисплеев — тот, который я использовал, имеет микросхему контроллера ST7735. В некоторых других дисплеях используется другой контроллер (и другая библиотека Adafruit) и —

не предусмотрен в разводке печатной платы — требуются резисторы серии 1k в каждом проводе ввода-вывода.

В блоке питания я использовал регулятор на 5 вольт 1,5А. При входе постоянного тока 12 В регулятор немного нагревается, поэтому я установил его. небольшой радиатор. Я включил перемычку в конструкцию печатной платы, чтобы можно было легко добавить переключатель включения/выключения.

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

 

Схема печатной платы

Скачать макет печатной платы Circuit Wizard.

Скачать топологию печатной платы в формате PDF.

Строительство

 

Основные компоненты

1,8-дюймовый TFT-дисплей (контроллер ST7735) Bang-good
Модуль AD9850 DDS Взрыв-хорошо
Корпус 50x130x100 мм eBay (высококачественные инструменты)

 

Эскиз ATmega328

Спецификация AD9850
Модуль AD9850 DDS

Библиотеки Arduino:

Библиотека Adafruit_GFX
Библиотека Adafruit_ST7735
Библиотека поворотного энкодера

 /* На основе кода AD9851 от Эндрю Смоллбоуна, модифицированного для AD9850  http://www. rocketnumbernine.com/2011/10/25/programming-the-ad9851-dds-synthesizer  */  #include        // Базовая графическая библиотека  https://github.com/adafruit/Adafruit-GFX-Library  #include     // Аппаратная библиотека  https://github.com/adafruit/Adafruit-ST7735-Library  #include < SPI  .h>  #include <  Rotary  .h>            //  Rotary encoder:  https://github.com/brianlow/Rotary  интервал TFT_LED = 9;
#define TFT_SCLK 13             // 1,8-дюймовый TFT-дисплей.
#define TFT_MOSI 11             //
#define TFT_CS   10
#define TFT_RST  A1
#define TFT_DC   A0  Adafruit_ST7735 tft = Adafruit_ST7735(TFT_CS,  TFT_DC, TFT_RST);  #define AD9850_CLOCK 125000000         // Частота кристалла модуля. Подправьте здесь для точности.  #define W_CLK 8                       // Контакты модуля AD9850.
# определить FQ_UD 7
#define ДАННЫЕ  6
#define СБРОС 5  #define stepPin1 A3                    // Установка контактов поворотного энкодера «Шаг»
#определить шагPin2 A2
int forceHzStep = A4; // Кнопка поворотного энкодера «Шаг» - установите шаг 1 Гц. интсилкГц = 4; // Кнопка энкодера, управляемого прерываниями, - установить частоту 1 кГц.  Поворотный  i =  Поворотный  (шагPin1, stepPin2); // Энкодер Rotart для установки приращения.  Поворотный  r =  Поворотный  (2, 3); // Вращающийся энкодер для частоты подключается к контактам прерывания  длинное целое число без знака freq = 1000; // Установить начальную частоту.
длинное целое число без знака freqOld = freq;  длинный таймер;  const char* stepText[11] = {" 1 Гц", " 10 Гц", " 50 Гц", "100 Гц", "500 Гц", "  1 кГц", "2,5 кГц",
 «5 кГц», «10 кГц», «100 кГц», «500 кГц»};  интервал stepPointer = 0;
unsigned long incr = 0;
Строковые единицы = stepText[stepPointer];  #define pulseHigh(pin) {digitalWrite(pin, HIGH); цифровая запись (контакт, НИЗКИЙ); }  // передает байт, бит за раз, LSB сначала к 9850 через последовательную линию DATA
void tfr_byte (байтовые данные) {
 for (int i = 0; i < 8; i++, данные >>= 1) {
 цифровая запись (ДАННЫЕ, данные и 0x01);
 импульсВысокий (W_CLK); //после каждого отправленного бита CLK импульсно высокий
 }
}  void sendFrequency (двойная частота) {
 int32_t freq1 = частота * 4294967295/AD9850_CLOCK; // обратите внимание на тактовую частоту 125 МГц на 9850
 for (int b = 0; b < 4; b++, freq1 >>= 8) {
 tfr_byte (частота1 и 0xFF);
 }
 tfr_byte (0x000); // Конечный управляющий байт, все 0 вместо 9чип 850
 импульсный максимум (FQ_UD); // Сделанный! Должен увидеть вывод
}  недействительная установка () {  pinMode (шагPin1, INPUT_PULLUP); // Выводы для энкодера на аналоговых выводах A2, A3
 pinMode (шагPin2, INPUT_PULLUP);  pinMode(2, INPUT_PULLUP); // Выводы для поворотного энкодера и кнопок, управляемых прерываниями
 pinMode(3, INPUT_PULLUP);
 pinMode (forceHzStep, INPUT_PULLUP);
 pinMode (форс кГц, INPUT_PULLUP); 
 pinMode (FQ_UD, ВЫХОД); // Настраиваем выводы для вывода на AD9850 модуль. pinMode (W_CLK, ВЫХОД);
 pinMode (ДАННЫЕ, ВЫВОД);
 pinMode (СБРОС, ВЫВОД); 
 pinMode (TFT_RST, ВЫХОД); // Настроить контакты для вывода на TFT-дисплей.
 pinMode (TFT_DC, ВЫХОД);
 pinMode (TFT_LED, ВЫХОД); 
 аналоговая запись (TFT_LED, 255); // Настройка яркости подсветки. 
 // Настроить прерывание и включить поворотный энкодер.
 PCICR |= (1 << PCIE2);
 PCMSK2 |= (1 << PCINT18) | (1 << PCINT19);
 сэй();  tft.initR (INITR_BLACKTAB); // инициализируем микросхему ST7735S, черная вкладка 
 tft.setRotation (3);
 tft.setTextWrap (ложь); // Разрешить тексту выходить за правый край
 tft.fillScreen(ST7735_BLACK); 
 tft.setCursor(15, tft.height() -20);
 tft.setTextSize (1);
 tft.drawFastHLine(0, tft.height() - 23, tft.width()-10, ST7735_BLUE);
 tft.setTextColor (ST7735_BLUE);
 tft.println("AD9850 от 1 Гц до 5 МГц");
 tft.print("   генератор синусоиды"); 
 // Инициализируем AD9850 модуль.
 импульсВысокий(СБРОС);
 импульсВысокий (W_CLK);
 импульсный максимум (FQ_UD); // этот импульс включает последовательный режим - Техническое описание, стр. 12, рис. 10 
 обновить дисплей (); // Обновить TFT-дисплей.
}  недействительным getStep () {
 переключатель (шаговый указатель) {
 случай 0: прибавление = 1; перерыв;
 случай 1: прибавление = 10; перерыв;
 случай 2: прибавление = 50; перерыв;
 случай 3: прибавление = 100; перерыв;
 случай 4: прибавление = 500; перерыв;
 случай 5: прибавление = 1000; перерыв;
 случай 6: прибавка = 2500; перерыв;
 случай 7: прибавка = 5000; перерыв;
 случай 8: прибавление = 10 000; перерыв;
 случай 9: прибавление = 100 000; перерыв;
 случай 10: инкр = 500000; перерыв;
 }
}  недействительным updateDisplay () {
 получитьшаг(); //
 единицы = stepText[stepPointer]; 
 tft.fillRect(0, 15, 160, 20, ST7735_BLACK); 
 tft.setTextColor (ST7735_YELLOW);
 tft.setCursor(10, 20);
 tft.setTextSize (1);
 tft.print("Шаг: ");
 tft.setTextSize (2);
 tft.setCursor(60, 15);
 tft.print (единицы); 
 tft.fillRect(0, 40, 160, 60, ST7735_BLACK);
 tft.setTextColor (ST7735_GREEN);
 tft.setTextSize (2);
 если (частота < 1000) {
 tft. setCursor(78, 50);
 если (частота < 1000) tft.print (" ");
 если (частота < 100) tft.print (" ");
 tft.print (частота);
 tft.setCursor(58, 75);
 tft.print ("Гц");
 } еще
 если (частота < 1000000) {
 tft.setCursor(40, 50);
 если (частота < 10000) tft.print (" ");
 tft.print((float)freq/1000, 3);
 tft.setCursor(58, 75);
 tft.print ("кГц");
 }  еще {
 формат(частота);
 tft.setCursor(58, 75);
 tft.print ("МГц");
 }
}  пустой формат (длинное значение) {
 int M = (значение/1000000);
 int T100 = ((значение/100000)%10);
 int T10 = ((значение/10000)%10);
 int T1 = ((значение/1000)%10);
 int U100 = ((значение/100)%10);
 int U10 = ((значение/10)%10);
 int U1 = ((значение/1)%10);
 tft.setCursor(25, 50);
 tft.print(M);tft.print(".");tft.print(T100);tft.print(T10);tft.print(T1);
 tft.print(",");tft.print(U100);tft.print(U10);tft.print(U1);
}  недействительный цикл () {
 // Проверить поворотный энкодер «Шаг».
 результат беззнакового символа = i.process();
 если (результат) {
 if (result == DIR_CW)  {if (stepPointer < 10) stepPointer++;}
 if (result == DIR_CCW) {if (stepPointer > 0) stepPointer--;}
 обновить дисплей ();
 } 
 если (digitalRead(forceHzStep) == LOW) {
 шагПоинтер = 0;
 обновить дисплей ();
 задержка(50);
 } 
 if (digitalRead(forcekHz) == LOW) {
 частота = 1000;
 отправитьЧастота (частота);
 обновить дисплей ();
 задержка(350);
 }
 если (старая частота != частота) {
 отправитьЧастота (частота);
 обновить дисплей ();
 старая частота = частота;
 }
}  ISR(PCINT2_vect) {
 результат беззнакового символа = r.

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *