#include Servo myservo; // Objeto servo #define BUTTON_0_PIN D0 // Pin D0 #define BUTTON_1_PIN D1 // Pin D1 #define LED_PIN_2 D2 // Pin D2 #define LED_PIN_3 D3 // Pin D3 #define LED_PIN_4 D4 // Pin D4 int button_0_state = 0; // Variable para almacenar el estado del botón D0 int button_1_state = 0; // Variable para almacenar el estado del botón D1 int servo_position = 0; // Variable para almacenar la posición actual del servo void setup() { myservo.attach(9); // Asigna el pin de control del servo (D9) pinMode(BUTTON_0_PIN, INPUT_PULLUP); // Configura el botón D0 como entrada con pull-up interno pinMode(BUTTON_1_PIN, INPUT_PULLUP); // Configura el botón D1 como entrada con pull-up interno pinMode(LED_PIN_2, OUTPUT); // Configura el pin del LED D2 como salida pinMode(LED_PIN_3, OUTPUT); // Configura el pin del LED D3 como salida pinMode(LED_PIN_4, OUTPUT); // Configura el pin del LED D4 como salida } void loop() { // Lee el estado del botón D0 button_0_state = digitalRead(BUTTON_0_PIN); // Si el botón D0 se presiona if (button_0_state == LOW) { // Mueve el servo a la posición 0 grados myservo.write(0); digitalWrite(LED_PIN_2, HIGH); // Enciende el LED D2 servo_position = 0; delay(100); // Espera corta para evitar el rebote del botón while (digitalRead(BUTTON_0_PIN) == LOW) {} // Espera a que se libere el botón digitalWrite(LED_PIN_2, LOW); // Apaga el LED D2 } // Lee el estado del botón D1 button_1_state = digitalRead(BUTTON_1_PIN); // Si el botón D1 se presiona if (button_1_state == LOW) { // Mueve el servo a la posición 90 grados myservo.write(90); digitalWrite(LED_PIN_3, HIGH); // Enciende el LED D3 servo_position = 90; delay(100); // Espera corta para evitar el rebote del botón while (digitalRead(BUTTON_1_PIN) == LOW) {} // Espera a que se libere el botón digitalWrite(LED_PIN_3, LOW); // Apaga el LED D3 } // Si ambos botones están sin presionar y el servo no está en 180 grados if (button_0_state == HIGH && button_1_state == HIGH && servo_position != 180) { // Mueve el servo a la posición 180 grados myservo.write(180); digitalWrite(LED_PIN_4, HIGH); // Enciende el LED D4 servo_position = 180; delay(100); // Espera corta para evitar el rebote del botón while (digitalRead(BUTTON_0_PIN) == HIGH && digitalRead(BUTTON_1_PIN) == HIGH) {} // Espera a que se presione uno de los botones digitalWrite(LED_PIN_4, LOW); // Apaga el LED D4 } }