#include <Wire.h>
#include <Adafruit_GFX.h>
#include <Adafruit_SSD1306.h>
#include <Servo.h>
#define SCREEN_WIDTH 128 // Ancho de la pantalla OLED
#define SCREEN_HEIGHT 64 // Alto de la pantalla OLED
// Define la dirección I2C para el SSD1306 (puedes probar diferentes direcciones si es necesario)
#define OLED_RESET -1
#define SCREEN_ADDRESS 0x3C // Dirección I2C predeterminada para el SSD1306
Adafruit_SSD1306 display(SCREEN_WIDTH, SCREEN_HEIGHT, &Wire, OLED_RESET);
Servo myServo;
void setup() {
myServo.attach(11); // Conecta el servo al pin digital 9
// Inicializa la pantalla OLED
if(!display.begin(SSD1306_SWITCHCAPVCC, SCREEN_ADDRESS)) {
Serial.println(F("SSD1306 allocation failed"));
for(;;);
}
display.display();
delay(2000); // Pausa para ver la pantalla inicial
display.clearDisplay();
// Mueve el servo a los ángulos especificados
moveServo(0);
delay(1000); // Espera 1 segundo
moveServo(45);
delay(1000); // Espera 1 segundo
moveServo(90);
delay(1000); // Espera 1 segundo
moveServo(180);
delay(1000); // Espera 1 segundo
// Mueve lentamente de vuelta a 0 grados
for (int angle = 180; angle >= 0; angle--) {
moveServo(angle);
delay(10); // Espera 10 ms entre cada paso
}
}
void loop() {
// No hay necesidad de código en el loop para este ejemplo
}
void moveServo(int angle) {
myServo.write(angle); // Mueve el servo al ángulo especificado
display.clearDisplay(); // Limpia la pantalla OLED
display.setTextSize(2); // Tamaño del texto
display.setTextColor(SSD1306_WHITE); // Color del texto
display.setCursor(0, 10); // Establece el cursor en la posición adecuada
display.print("Angulo: ");
display.print(angle); // Muestra el ángulo en la pantalla OLED
display.display(); // Muestra la información en la pantalla OLED
}