Генератор синуса 50 герц на esp32
Генератор синуса 50 герц на esp32
Генератор синуса 50 герц на esp32, #include <Ticker.h>
#define DAC_PIN 25 // GPIO25 - пин ЦАП
#define TABLE_SIZE 400 // Количество точек в таблице синуса - увеличено!
#define FREQ 50 // Желаемая частота сигнала (Гц)
// Таблица значений синуса (0-255)
uint8_t sineTable[TABLE_SIZE];
// Индекс текущего значения в таблице
volatile uint16_t tableIndex = 0; // Используем uint16_t для большего диапазона
// Объект Ticker
Ticker timer;
// Обработчик прерывания таймера
void timerISR() {
// Устанавливаем значение на ЦАП
dacWrite(DAC_PIN, sineTable[tableIndex]);
// Увеличиваем индекс, сбрасываем в конце таблицы
tableIndex = (tableIndex + 1) % TABLE_SIZE;
}
void setup() {
// Заполняем таблицу значений синуса
for (int i = 0; i < TABLE_SIZE; i++) {
// Формула для значений синуса (0-255) с учетом сдвига на 127.5
sineTable[i] = 127.5 + 127.5 * sin(2 * PI * i / TABLE_SIZE);
}
// Настройка таймера с помощью Ticker (период 0.2 мс)
timer.attach_ms(0.02, timerISR);
}
void loop() {
// Основной цикл не используется
}
|