// Максимально простой тест для ESP32 // OLED дисплей + кнопки + ШИМ на MOSFET #include #include #include // Пины #define MOSFET_PIN 32 #define BTN_UP 26 #define BTN_DOWN 27 // Дисплей Adafruit_SSD1306 display(128, 64, &Wire, -1); int pwmValue = 127; // Стартовое значение ШИМ void setup() { Serial.begin(115200); // Настройка пинов pinMode(MOSFET_PIN, OUTPUT); pinMode(BTN_UP, INPUT); pinMode(BTN_DOWN, INPUT); // ШИМ ledcAttach(MOSFET_PIN, 5000, 8); // Частота 5кГц, 8 бит ledcWrite(MOSFET_PIN, pwmValue); // Установить значение // Дисплей Wire.begin(21, 22); // SDA=21, SCL=22 display.begin(SSD1306_SWITCHCAPVCC, 0x3C); display.clearDisplay(); display.setTextSize(1); display.setTextColor(WHITE); Serial.println("Система запущена"); } void loop() { // Чтение кнопок if (digitalRead(BTN_UP) == HIGH) { pwmValue = pwmValue + 10; if (pwmValue > 255) pwmValue = 255; ledcWrite(MOSFET_PIN, pwmValue); delay(200); // Простой антидребезг Serial.print("UP: "); Serial.println(pwmValue); } if (digitalRead(BTN_DOWN) == HIGH) { pwmValue = pwmValue - 10; if (pwmValue < 0) pwmValue = 0; ledcWrite(MOSFET_PIN, pwmValue); delay(200); Serial.print("DOWN: "); Serial.println(pwmValue); } // Обновление дисплея display.clearDisplay(); display.setCursor(0, 0); display.print("MOSFET PWM Test"); display.setCursor(0, 20); display.print("PWM Value: "); display.print(pwmValue); display.setCursor(0, 40); display.print("Percent: "); display.print(pwmValue * 100 / 255); display.print("%"); display.display(); delay(50); }