Генератор синусоид Arduino
作者
// блок инициализации глобальных переменных
unsigned long PrevTimeMicros = 0; // время окончания предыдущего шага расчета
double F = 25.0, A = 1.0; // частота и амплитуда
double Va, Vb, Vc;
// подключение сгенерированных файлов
#include "sine_generator_SinGen_code\sine_generator_SinGen.c"
// функция загрузки
void setup() {
Serial.begin(115200); // скорость обмена данными по последовательному порту
sine_generator_SinGen_init(); // инициализация генератора синусоидального сигнала
}
// циклическая функция
void loop() {
unsigned long CurTimeMicros = micros();
// проверка шага расчета (1 мс)
if (CurTimeMicros - PrevTimeMicros >= 1000) {
PrevTimeMicros = CurTimeMicros;
sine_generator_SinGen_U.Frequency = F; // передача значения частоты в структуру
sine_generator_SinGen_U.Amplitude = A; // передача значения амплитуды в структуру
sine_generator_SinGen_step(); // вызов функции шага расчета модели
Va = sine_generator_SinGen_Y.Sin_A; // вывод значения напряжения фазы А
Vb = sine_generator_SinGen_Y.Sin_B; // вывод значения напряжения фазы B
Vc = sine_generator_SinGen_Y.Sin_C; // вывод значения напряжения фазы C
// вывод в последовательный порт значений напряжений
Serial.print(Va);
Serial.print(" ");
Serial.print(Vb);
Serial.print(" ");
Serial.println(Vc);
}
}