#include "pwm.h" float pwm_frequency = 1.0; uint8_t pwm_duty_cycle = 50; volatile uint8_t pwm_enabled = 0; volatile uint8_t pwm_changed = 0; void pwm_enable() { pwm_enabled = 1; pwm_changed = 1; } void pwm_disable() { pwm_enabled = 0; pwm_changed = 1; } void setPWMFrequency(float frequency) { if (frequency < 0 || frequency > 50000.0) { return; // Недопустимая частота } pwm_frequency = frequency; pwm_changed = 1; } void setPWMDutyCycle(float duty_cycle) { if (duty_cycle < 1 || duty_cycle > 100) { return; // Недопустимый коэффициент заполнения } pwm_duty_cycle = duty_cycle; pwm_changed = 1; } void pwm_check_state() { if (pwm_enabled) { // Включаем пин ШИМ - реализация зависит от аппаратной платформы Serial.print("PWM enabled. Frequency: "); Serial.print(pwm_frequency); Serial.print(" Hz, duty cycle: "); Serial.println(pwm_duty_cycle); } else { // Выключаем пин ШИМ - реализация зависит от аппаратной платформы Serial.println("PWM disabled"); } } void pwm_set_frequency(float frequency) { // Устанавливаем частоту ШИМ - реализация зависит от аппаратной платформы Serial.print("Setting PWM frequency to: "); Serial.println(frequency); } void pwm_set_duty_cycle(float duty_cycle) { // Устанавливаем коэффициент заполнения ШИМ - реализация зависит от аппаратной платформы Serial.print("Setting PWM duty cycle to: "); Serial.println(duty_cycle); }