
Tendedero automático con Arduino y Tinkercad
Cuando la ropa se salva sola de la lluvia
¿A quién no le ha pasado alguna vez?
Tiendes la ropa al sol, te vas tranquilamente… y de repente empieza a llover.
Cuando vuelves, la ropa está más mojada que antes.
En este proyecto vamos a construir un tendedero automático capaz de recoger la ropa cuando detecta lluvia.
Como en Tinkercad no siempre tenemos un sensor de lluvia real, vamos a simularlo con un tilt sensor, es decir, un sensor de inclinación. Cuando lo inclinemos, será como si “empezara a llover”.
El sistema moverá un servomotor, que representará el mecanismo que recoge el tendedero bajo techo.
Objetivo del proyecto
Crear un sistema automático que:
- Detecte una situación de “lluvia” mediante un sensor.
- Active un servomotor.
- Recoja la ropa automáticamente.
- Muestre mensajes por el monitor serie.
- Sirva como ejemplo de domótica y ahorro de recursos.
Este no es el proyecto exacto pero te puede ayudar a comprenderlo:

#include <Servo.h> // Library for Servo Motor
int potpin=0;// initialize analog pin 0, connected with photovaristor
int ledpin=13;// initialize digital pin 13, output regulating the brightness of LED
int val=0;// initialize variable val
Servo myServo;
Servo myServo2; // define servo name
/* The setup() function is called when a sketch starts. It is used to initialize variables, pin modes, start using libraries, etc. This function will only run once, after each power up or reset of the Arduino board. */
void setup()
{
pinMode(ledpin,OUTPUT);// set digital pin 13 as “output”
Serial.begin(9600); // set baud rate at “9600”
myServo.attach(3); // servo pin
myServo.write(0); // servo start position
myServo2.attach(6); // servo pin
myServo2.write(0); // servo start position
}
/* The loop() function executes the program repeatedly until Specified. */
void loop()
{
val=analogRead(potpin);// read the analog value of the sensor and assign it to val
Serial.println(val);// display the value of val
analogWrite(ledpin,val);// turn on the LED and set up brightness(maximum output value 255)
delay(10);// wait for 0.01
if(val>250)
{
myServo.write(0);
myServo2.write(0);
}else{
myServo.write(180); //180 degree rotation
myServo2.write(180); //180 degree rotation
}
}
ODS relacionados
ODS 11: Ciudades y comunidades sostenibles
La domótica puede ayudarnos a crear hogares más inteligentes, eficientes y cómodos.
ODS 12: Producción y consumo responsables
Si protegemos mejor la ropa, evitamos lavados innecesarios, gastamos menos agua, menos electricidad y menos detergente.
ODS 13: Acción por el clima
Los sistemas automáticos pueden ayudarnos a adaptarnos a cambios bruscos del tiempo y a utilizar mejor los recursos.
¿Qué vamos a aprender?
En este proyecto aprenderemos:
- Qué es un sensor de inclinación.
- Cómo leer una entrada digital en Arduino.
- Cómo controlar un servomotor.
- Cómo usar condicionales.
- Cómo simular un sensor de lluvia en Tinkercad.
- Cómo aplicar la programación a un problema cotidiano.
Componentes necesarios en Tinkercad
- Arduino UNO
- Tilt sensor
- Servomotor
- LED azul
- LED verde
- Resistencia de 220 Ω para cada LED
- Protoboard
- Cables
¿Cómo funciona el tilt sensor?
El tilt sensor es un sensor de inclinación.
Dentro suele tener una pequeña bolita metálica.
Cuando el sensor está en una posición, la bolita cierra el circuito.
Cuando se inclina, la bolita se mueve y el circuito cambia de estado.
En nuestro proyecto vamos a imaginar lo siguiente:
- Sensor normal = no llueve.
- Sensor inclinado = empieza a llover.
No es un sensor de lluvia real, pero en Tinkercad nos sirve perfectamente para simularlo.
Conexiones
Tilt sensor
| Tilt sensor | Arduino |
|---|---|
| Patilla 1 | D2 |
| Patilla 2 | GND |
Usaremos INPUT_PULLUP, así que no necesitamos resistencia externa.
Servomotor
| Servo | Arduino |
|---|---|
| Señal | D9 |
| VCC | 5V |
| GND | GND |
LED verde
Representa que el tendedero está fuera y hace buen tiempo.
| LED verde | Arduino |
|---|---|
| Ánodo | D6 |
| Cátodo | Resistencia 220 Ω → GND |
LED azul
Representa que está lloviendo.
| LED azul | Arduino |
|---|---|
| Ánodo | D7 |
| Cátodo | Resistencia 220 Ω → GND |
Código Arduino
#include <Servo.h>
const int tiltSensor = 2;
const int ledVerde = 6;
const int ledAzul = 7;
const int pinServo = 9;
Servo tendedero;
bool recogido = false;
void setup() {
pinMode(tiltSensor, INPUT_PULLUP);
pinMode(ledVerde, OUTPUT);
pinMode(ledAzul, OUTPUT);
tendedero.attach(pinServo);
Serial.begin(9600);
// Al empezar, el tendedero está extendido.
tendedero.write(0);
digitalWrite(ledVerde, HIGH);
digitalWrite(ledAzul, LOW);
Serial.println("Tendedero automatico iniciado.");
Serial.println("Estado: ropa tendida al sol.");
}
void loop() {
int estadoSensor = digitalRead(tiltSensor);
// Con INPUT_PULLUP:
// LOW puede interpretarse como sensor activado.
// HIGH como sensor sin activar.
if (estadoSensor == LOW && recogido == false) {
recogerRopa();
}
if (estadoSensor == HIGH && recogido == true) {
sacarRopa();
}
delay(200);
}
void recogerRopa() {
Serial.println("Lluvia detectada.");
Serial.println("Recogiendo la ropa...");
digitalWrite(ledVerde, LOW);
digitalWrite(ledAzul, HIGH);
tendedero.write(90);
recogido = true;
Serial.println("Ropa protegida bajo techo.");
}
void sacarRopa() {
Serial.println("La lluvia ha parado.");
Serial.println("Sacando la ropa de nuevo al sol...");
digitalWrite(ledVerde, HIGH);
digitalWrite(ledAzul, LOW);
tendedero.write(0);
recogido = false;
Serial.println("Ropa tendida al sol.");
}
¿Qué ocurre en la simulación?
Situación 1: No llueve
El tilt sensor está en posición normal.
- El LED verde está encendido.
- El servo está en 0 grados.
- La ropa está “tendida al sol”.
Situación 2: Empieza a llover
Inclinamos el tilt sensor.
- El LED azul se enciende.
- El LED verde se apaga.
- El servo gira a 90 grados.
- La ropa queda protegida.
Situación 3: Deja de llover
Volvemos a poner el tilt sensor en su posición inicial.
- El LED verde se enciende.
- El LED azul se apaga.
- El servo vuelve a 0 grados.
- La ropa vuelve a salir al sol.
Explicación del programa
La parte más importante del programa es esta:
if (estadoSensor == LOW && recogido == false) {
recogerRopa();
}
Esto significa:
Si el sensor detecta lluvia y la ropa todavía no está recogida, recoge la ropa.
Y esta otra:
if (estadoSensor == HIGH && recogido == true) {
sacarRopa();
}
Significa:
Si deja de llover y la ropa estaba recogida, vuelve a sacarla.
La variable recogido sirve para recordar el estado del tendedero.
Sin esa variable, el servo estaría intentando moverse una y otra vez sin necesidad.
Versión real del proyecto
En un montaje real podríamos sustituir el tilt sensor por un sensor de lluvia.
Entonces el funcionamiento sería más realista:
- Sensor seco → ropa fuera.
- Sensor mojado → ropa recogida.
También podríamos añadir:
- Pantalla LCD.
- Zumbador.
- Motor más potente.
- Panel solar.
- Envío de aviso al móvil.
- Datos meteorológicos de Internet.

Reto 1
Modifica el programa para que el servo se mueva lentamente, grado a grado, en lugar de girar de golpe.
Pista:
for (int angulo = 0; angulo <= 90; angulo++) {
tendedero.write(angulo);
delay(20);
}
Reto 2
Añade un zumbador que emita tres pitidos cuando empiece a llover.
Reto 3
Añade una pantalla LCD que muestre:
Lluvia detectada
Ropa protegida
Reto 4
Haz que el tendedero no se recoja inmediatamente.
Debe esperar 5 segundos para evitar falsas alarmas.
Reflexión final
Este proyecto parece sencillo, pero representa una idea muy importante:
La tecnología puede ayudarnos a resolver pequeños problemas cotidianos.
Un sistema como este puede ahorrar agua, electricidad, tiempo y esfuerzo.
También nos enseña que los sensores son como los sentidos de una máquina, y los actuadores son sus músculos.
El sensor detecta.
El Arduino piensa.
El servo actúa.
Y la ropa se salva de la lluvia.
Eso es domótica.
Eso es programación.
Y eso también es usar la tecnología para vivir mejor.


