Introduction: Garaje Arduino

About: Soy electrónico industrial .. apasionado por la programación con ya unos años de experiencia con las tarjetas de desarollo Arduino y sus módulos .. en este sitio publicaré algunos trabajos y documentarse de ba…

Te invitamos a formar parte de nuestro emocionante proyecto para controlar una puerta de garaje utilizando un motor servo. En este proyecto, podrás aprender cómo utilizar el código para controlar la apertura y el cierre de la puerta con solo presionar un botón. Además, podrás observar cómo se encienden y apagan LEDs rojos y verdes para indicar el estado actual de la puerta. ¡Únete a nosotros y descubre el maravilloso mundo de la automatización de puertas de garaje!





Supplies

Materiales utilizados:

-Cartón

-pegante Colbon

-fotocopias


Componente utilizados:

- Arduino UNO (u otro modelo compatible)


- Botón pulsador

- LED rojo

- LED verde

- Resistencias (para limitar la corriente de los LEDs)

- Cables de conexión


Librerías utilizadas:

- Servo.h: Esta librería permite controlar los servomotores a través de Arduino. Es necesaria para utilizar la función attach() y write() del objeto motor.

Step 1: Mi Garaje Arduino

explicando el código.

#include <Servo.h> // Se incluye la librería Servo


#define Boton 6 // Se define el pin del botón
#define LedRojo 4 // Se define el pin del LED rojo
#define LedVerde 5 // Se define el pin del LED verde


boolean EstadoPuerta = 0; // Variable booleana para controlar el estado de la puerta
Servo motor; // Se crea un objeto de clase Servo para controlar el motor de la puerta


void setup() {
pinMode(LedRojo, OUTPUT); // Se configura el pin del LED rojo como salida
pinMode(LedVerde, OUTPUT); // Se configura el pin del LED verde como salida
pinMode(Boton, INPUT_PULLUP); // Se configura el pin del botón como entrada internamente pull-up
motor.attach(3); // Se asigna el pin 3 al servo motor
motor.write(9); // Se establece una posición inicial del motor
}


void loop() {
if (digitalRead(Boton) == 0) { // Si el botón es presionado
EstadoPuerta = !EstadoPuerta; // Se invierte el estado actual de la puerta


if (EstadoPuerta) { // Si la puerta debe abrirse
AbrirPuerta(); // Se llama a la función AbrirPuerta()
} else { // Si la puerta debe cerrarse
CerrarPuerta(); // Se llama a la función CerrarPuerta()
}


delay(200); // Se espera un tiempo para evitar rebote del botón
}
}


void AbrirPuerta() {
digitalWrite(LedVerde, LOW); // Se apaga el LED verde
digitalWrite(LedRojo, HIGH); // Se enciende el LED rojo


motor.write(9); // Se configura una posición inicial del motor
delay(500); // Se espera un tiempo para que se mueva el motor
motor.write(20); // Se mueve el motor a una nueva posición
delay(500); // Se espera un tiempo para que se mueva el motor
motor.write(30); // Se mueve el motor a una nueva posición
delay(500); // Se espera un tiempo para que se mueva el motor
motor.write(40); // Se mueve el motor a una nueva posición
delay(500); // Se espera un tiempo para que se mueva el motor
motor.write(50); // Se mueve el motor a una nueva posición
delay(500); // Se espera un tiempo para que se mueva el motor
motor.write(60); // Se mueve el motor a una nueva posición
delay(500); // Se espera un tiempo para que se mueva el motor
motor.write(70); // Se mueve el motor a una nueva posición
delay(500); // Se espera un tiempo para que se mueva el motor
motor.write(80); // Se mueve el motor a una nueva posición
delay(500); // Se espera un tiempo para que se mueva el motor
motor.write(90); // Se mueve el motor a una nueva posición
delay(500); // Se espera un tiempo para que se mueva el motor
motor.write(100); // Se mueve el motor a una nueva posición
delay(500); // Se espera un tiempo para que se mueva el motor
motor.write(110); // Se mueve el motor a una nueva posición
delay(500); // Se espera un tiempo para que se mueva el motor
motor.write(120); // Se mueve el motor a una nueva posición
delay(500); // Se espera un tiempo para que se mueva el motor
motor.write(130); // Se mueve el motor a una nueva posición
delay(500); // Se espera un tiempo para que se mueva el motor


digitalWrite(LedVerde, HIGH); // Se enciende el LED verde
digitalWrite(LedRojo, LOW); // Se apaga el LED rojo
}


void CerrarPuerta() {
digitalWrite(LedVerde, LOW); // Se apaga el LED verde
digitalWrite(LedRojo, HIGH); // Se enciende el LED rojo


motor.write(130); // Se configura una posición inicial del motor
delay(500); // Se espera un tiempo para que se mueva el motor
motor.write(120); // Se mueve el motor a una nueva posición
delay(500); // Se espera un tiempo para que se mueva el motor
motor.write(110); // Se mueve el motor a una nueva posición
delay(500); // Se espera un tiempo para que se mueva el motor
motor.write(100); // Se mueve el motor a una nueva posición
delay(500); // Se espera un tiempo para que se mueva el motor
motor.write(90); // Se mueve el motor a una nueva posición
delay(500); // Se espera un tiempo para que se mueva el motor
motor.write(80); // Se mueve el motor a una nueva posición
delay(500); // Se espera un tiempo para que se mueva el motor
motor.write(70); // Se mueve el motor a una nueva posición
delay(500); // Se espera un tiempo para que se mueva el motor
motor.write(60); // Se mueve el motor a una nueva posición
delay(500); // Se espera un tiempo para que se mueva el motor
motor.write(50); // Se mueve el motor a una nueva posición
delay(500); // Se espera un tiempo para que se mueva el motor
motor.write(40); // Se mueve el motor a una nueva posición
delay(500); // Se espera un tiempo para que se mueva el motor
motor.write(30); // Se mueve el motor a una nueva posición
delay(500); // Se espera un tiempo para que se mueva el motor
motor.write(20); // Se mueve el motor a una nueva posición
delay(500); // Se espera un tiempo para que se mueva el motor
motor.write(10); // Se mueve el motor a una nueva posición
delay(500); // Se espera un tiempo para que se mueva el motor


digitalWrite(LedVerde, LOW); // Se apaga el LED verde
digitalWrite(LedRojo, HIGH); // Se enciende el LED rojo
}


El código presenta una funcionalidad básica para controlar una puerta de garaje utilizando un motor servo. Al presionar el botón, la puerta se abre o cierra dependiendo de su estado actual. Además, se encienden y apagan LEDs rojos y verdes para indicar el estado de la puerta.


En cuanto al funcionamiento de la puerta de garaje, el código simula una apertura y cierre secuencial del motor, aumentando o disminuyendo gradualmente su posición. Sin embargo, la acción de abrir o cerrar la puerta se realiza rápidamente y no se consideran elementos de seguridad adicionales, como sensores de obstáculos o detección de posición final.


En resumen, el código básicamente controla el motor servo para simular la apertura y cierre de la puerta de garaje, pero no se incluyen medidas de seguridad o detección de obstáculos.





El código Arduino muestra un programa para controlar un servo motor y dos LEDs utilizando un botón. Cuando se presiona el botón, el programa cambia el estado de la puerta y ejecuta la función correspondiente para abrir o cerrar la puerta.


En la función AbrirPuerta(), se enciende el LED verde, se apaga el LED rojo y el servo motor se mueve en incrementos de 10 grados, con un retardo de 500 milisegundos entre cada movimiento. Finalmente, se enciende el LED rojo y se apaga el LED verde.


En la función CerrarPuerta(), el proceso es similar, pero en sentido contrario. Se apaga el LED verde, se enciende el LED rojo y el servo motor se mueve en decrementos de 10 grados.


En cuanto al funcionamiento, el código parece estar bien estructurado y cumple su propósito de controlar el servo motor y los LEDs según el estado de la puerta. Sin embargo, una posible decepción de su funcionamiento puede ser que el movimiento del servo motor sea demasiado lento. Los retardos de 500 milisegundos entre cada movimiento pueden resultar en una apertura y cierre de puerta bastante lenta, lo cual puede ser frustrante si se espera una acción rápida. Sería recomendable ajustar los retardos para lograr un movimiento más rápido y fluido, siempre asegurándose de que el servo motor pueda soportar esa velocidad.

Step 2: Video Del Profe

este video esta paso a paso como el profe arma arma la maqueta y realiza el proyecto, este código fue modificado para agregar un botón.

créditos al canal del instructor.

estor enlaces son de video original

- CODIGO PARA COPIAR:

https://docs.google.com/document/d/1P...


-PLANTILLA PARA IMPRIMIR :

https://drive.google.com/file/d/1xqCn...


-IMÁGENES PARA IMPRIMIR

https://drive.google.com/drive/folder...


-CIRCUITO EN TINKERCAD :

https://www.tinkercad.com/things/6Oxb...


-FOTO DE LAS CONEXIONES :

https://drive.google.com/file/d/1Pzdh...


-CÓDIGO PARA ARDUINO :

https://drive.google.com/file/d/1MA8z...