Contador Mecánico

Descripción del proyecto
Este proyecto tiene como objetivo la creación de un contador alfanumérico mecánico que utiliza un display de 7 segmentos operado mediante servomotores, controlado por una placa Arduino UNO. A diferencia de los tradicionales displays LED, este dispositivo representa los caracteres físicamente mediante segmentos móviles que se activan o desactivan para formar números y letras.
El sistema está diseñado para ejecutar una animación de arranque compuesta por tres “olas” de movimiento, tras la cual se inicia un ciclo que muestra los números del 0 al 9 seguidos por las letras A a G, repitiéndose indefinidamente. Cada carácter se genera activando los servomotores correspondientes a los segmentos necesarios, lo que da lugar a una visualización mecánica dinámica y llamativa.
Funcionamiento
Al encender el sistema, el Arduino ejecuta una secuencia de inicio animada, que aporta dinamismo y capta la atención. Esta animación se basa en tres ondas de movimiento secuencial de los segmentos, creando un efecto visual que simula una carga progresiva del dispositivo. Aunque no cumple una función informativa, esta fase sirve como introducción estética y señal de que el sistema está operativo.
Una vez finalizada la animación, el dispositivo entra en su modo de conteo continuo. Primero se muestran, uno a uno, los números del 0 al 9, seguidos por las letras A a G. La transición entre caracteres se realiza mediante pausas breves que permiten una lectura clara y tiempo suficiente para el reposicionamiento de los segmentos.
Los servomotores, cuidadosamente sincronizados, mueven las paletas de cada segmento entre dos posiciones: visible (activo) y oculta (inactivo), dependiendo del carácter que deba representarse en ese momento.
Materiales y Coste
- Arduino UNO
- 7 servomotores
- Regulador de voltaje 5V
- Fuente de alimentación 12V
- Cables M-M
- Protoboard
- Filamento PLA (Material impresora 3D)
- Pinturas Spray
- Base de madera
- Pegamento
- 15€
- 1.2€ c/u
- 3€
- 4€
- 4€
- 5€
- 15€/Kg
- 5€
- 5€
- 3€
Código
#include <Servo.h>
Servo servos[7];
const int segmentPins[] = {2, 3, 4, 5, 6, 7, 8};
const int ON_POSITION = 0;
const int OFF_POSITION = 90;
const int segmentPatterns[17][7] = {
{1, 1, 1, 1, 1, 1, 0}, // 0
{0, 1, 1, 0, 0, 0, 0}, // 1
{1, 1, 0, 1, 1, 0, 1}, // 2
{1, 1, 1, 1, 0, 0, 1}, // 3
{0, 1, 1, 0, 0, 1, 1}, // 4
{1, 0, 1, 1, 0, 1, 1}, // 5
{1, 0, 1, 1, 1, 1, 1}, // 6
{1, 1, 1, 0, 0, 0, 0}, // 7
{1, 1, 1, 1, 1, 1, 1}, // 8
{1, 1, 1, 1, 0, 1, 1}, // 9
{1, 1, 1, 0, 1, 1, 1}, // A
{0, 0, 1, 1, 1, 1, 1}, // B
{1, 0, 0, 1, 1, 1, 0}, // C
{0, 1, 1, 1, 1, 0, 1}, // D
{1, 0, 0, 1, 1, 1, 1}, // E
{1, 0, 0, 0, 1, 1, 1}, // F
{1, 0, 1, 1, 1, 1, 0} // G
};
int currentPos[7];
void setup() {
Serial.begin(9600);
delay(2000);
for (int i = 0; i < 7; i++) {
servos[i].attach(segmentPins[i]);
servos[i].write(OFF_POSITION);
currentPos[i] = OFF_POSITION;
}
waveEffect();
delay(1000);
}
void loop() {
for (int i = 0; i <= 9; i++) {
Serial.print("Mostrando número: ");
Serial.println(i);
displayCharacter(i);
delay(1000);
}
for (int i = 10; i <= 16; i++) {
char letter = 'A' + (i - 10);
Serial.print("Mostrando letra: ");
Serial.println(letter);
displayCharacter(i);
delay(1000);
}
}
void smoothMove(int i, int target) {
if (target > currentPos[i]) {
for (int pos = currentPos[i]; pos <= target; pos++) {
servos[i].write(pos);
delayMicroseconds(1000);
}
} else {
for (int pos = currentPos[i]; pos >= target; pos--) {
servos[i].write(pos);
delayMicroseconds(1000);
}
}
currentPos[i] = target;
}
void waveEffect() {
for (int i = 0; i < 3; i++) { //
for (int j = 0; j < 7; j++) {
servos[j].write(ON_POSITION);
delay(100);
}
for (int j = 0; j < 7; j++) {
servos[6 - j].write(OFF_POSITION);
delay(100);
}
}
}
void displayCharacter(int index) {
for (int i = 0; i < 7; i++) {
int target = (segmentPatterns[index][i] == 1)
? ON_POSITION : OFF_POSITION;
smoothMove(i, target);
}
}
Diseño del circuito

Vídeo funcionamiento
Conclusiones
Este contador alfanumérico mecánico representa mucho más que una simple visualización de caracteres: es una muestra del potencial que tiene la combinación de electrónica, mecánica y programación para dar vida a sistemas funcionales e innovadores. Al utilizar servomotores para accionar segmentos físicos, se transforma un concepto digital común —como un display de 7 segmentos— en una experiencia visual y tangible, que conecta mejor con la curiosidad y comprensión del espectador.
Más allá de su atractivo visual, el uso de servomotores en este proyecto refleja aplicaciones reales en la vida cotidiana: desde sistemas automáticos de apertura, brazos robóticos y mecanismos de posicionamiento, hasta juguetes, domótica y prototipos funcionales. Proyectos como este ayudan a entender cómo funcionan estos actuadores y a visualizar de forma práctica sus posibilidades.
Además, este tipo de iniciativas fomenta el aprendizaje interdisciplinario y el pensamiento creativo, abriendo la puerta a nuevas ideas en áreas como diseño interactivo, educación tecnológica y robótica personalizada. Ya sea como herramienta de enseñanza, exhibición en ferias o inspiración para desarrollos más complejos, este contador mecánico deja claro que la innovación puede comenzar con pequeños motores… y grandes ideas.