#include <Arduino.h>
#include <Wire.h>
#include <Adafruit_GFX.h>
#include <Adafruit_SSD1306.h>
const int POT_PIN = 1;
const int SERVO_PIN = 8;
const int PWM_CHANNEL = 0;
const int PWM_FREQ = 50;
const int PWM_RESOLUTION = 16;
#define SCREEN_WIDTH 128
#define SCREEN_HEIGHT 64
Adafruit_SSD1306 display(SCREEN_WIDTH, SCREEN_HEIGHT, &Wire, -1);
int angleToDuty(int angle) {
int minDuty = 1638;
int maxDuty = 8192;
return map(angle, 0, 180, minDuty, maxDuty);
}
void setup() {
Serial.begin(115200);
// OLED
Wire.begin(9, 10); // SDA, SCL (padrão no Wokwi ESP32-S3)
display.begin(SSD1306_SWITCHCAPVCC, 0x3C);
display.clearDisplay();
display.setTextSize(1);
display.setTextColor(WHITE);
// PWM servo
ledcAttachChannel(SERVO_PIN, PWM_FREQ, PWM_RESOLUTION, PWM_CHANNEL);
}
void loop() {
int valorPot = analogRead(POT_PIN);
int angulo = map(valorPot, 0, 4095, 0, 180);
int duty = angleToDuty(angulo);
ledcWriteChannel(PWM_CHANNEL, duty);
// OLED
display.clearDisplay();
display.setCursor(0, 0);
display.print("Pot: ");
display.println(valorPot);
display.print("Angulo: ");
display.println(angulo);
display.print("PWM: ");
display.println(duty);
display.display();
delay(100);
}Loading
esp32-s3-devkitc-1
esp32-s3-devkitc-1