PROYECTO ARDUINO
Introducción
Este proyecto consiste en el control de un motor servo mediante un joystick, utilizando la plataforma Arduino, lo que permite la exploración de conceptos de electrónica, programación y robótica de manera práctica. Su propósito es proporcionar un recurso educativo que fomente habilidades tecnológicas en estudiantes y entusiastas de la ingeniería, promoviendo la innovación y el aprendizaje práctico. Además, se alinea con los Objetivos de Desarrollo Sostenible, especialmente con el ODS 4, “Educación de calidad”, al ofrecer una herramienta accesible para el aprendizaje STEM, y con el ODS 9, “Industria, innovación e infraestructura”, al incentivar la creatividad tecnológica y el desarrollo de competencias digitales. Asimismo, al ser un proyecto de bajo consumo y reutilizar componentes simples, contribuye indirectamente al ODS 12, “Producción y consumo responsables”, promoviendo la utilización eficiente de recursos y la reducción de residuos electrónicos.
Descripción
El hardware necesario para este proyecto incluye un Arduino Mega, un servo motor de 0–180 grados, un joystick de dos ejes, un LED con resistencia de 220 Ω y cables de conexión. El Arduino Mega actúa como el controlador central, leyendo los valores del joystick y enviando la señal correspondiente al servo. El LED se utiliza como indicador visual, encendiéndose cuando el servo se mueve. La placa de pruebas permite realizar todas las conexiones de forma ordenada sin necesidad de soldadura.
El software se desarrolla en el entorno Arduino IDE, utilizando la librería Servo.h para controlar el motor. El programa lee constantemente la posición del joystick mediante la función analogRead(), mapea el valor obtenido a un rango de 0–180 grados y envía la orden al servo con Servo.write(). El LED se controla mediante digitalWrite() y se enciende únicamente cuando se detecta que el servo cambia de posición, proporcionando retroalimentación visual.
Diagrama de Conexiones

Software
#include <Servo.h>
Servo miServo;
int pinJoystick = A1;
int pinServo = A0;
int ledPin = 13;
int valorJoystick;
int anguloServo;
int anguloAnterior = 90;
void setup() {
miServo.attach(pinServo);
pinMode(ledPin, OUTPUT);
miServo.write(90);
void loop() {
valorJoystick = analogRead(pinJoystick);
anguloServo = map(valorJoystick, 0, 1023, 0, 180);
miServo.write(anguloServo);
if (anguloServo != anguloAnterior) {
digitalWrite(ledPin, HIGH);
} else {
digitalWrite(ledPin, LOW);
}
anguloAnterior = anguloServo;
delay(15);
}
