Programación de Arduino para principiantes Tutorial de proyecto de controlador de semáforo

  • Edmund Richardson
  • 0
  • 3544
  • 472
Anuncio

El semáforo de Arduino es un pequeño y divertido proyecto que puedes construir en menos de una hora. Aquí le mostramos cómo construir el suyo usando un Arduino y cómo cambiar el circuito para una variación avanzada.

Si prefiere ver esto como un tutorial en video, lo cubrimos:

Lo que necesita para construir un controlador de semáforo Arduino

Además del Arduino básico, necesitarás:

  • 1 x resistencia de 10k ohmios
  • 1 x interruptor de botón
  • 6 x resistencias de 220 ohmios
  • Un tablero
  • Cables de conexión
  • LED rojos, amarillos y verdes

Casi cualquier Arduino trabajará para este proyecto, siempre que tenga suficientes pines. Asegúrese de leer nuestra guía de compra Arduino Guía de compra Arduino: ¿Qué placa debe obtener? Guía de compra de Arduino: ¿Qué placa debería obtener? Hay tantos tipos diferentes de placas Arduino por ahí, que te perdonarían por estar confundido. ¿Cuál deberías comprar para tu proyecto? ¡Permítanos ayudarlo con esta guía de compra de Arduino! Si no está seguro de qué modelo necesita. Es posible que ya tenga estas piezas en su kit de inicio Arduino ¿Qué hay en su kit de inicio Arduino? [Principiantes de Arduino] ¿Qué hay en tu kit de inicio de Arduino? [Principiantes de Arduino] Frente a una caja llena de componentes electrónicos, es fácil sentirse abrumado. Aquí hay una guía de exactamente lo que encontrarás en tu kit. .

Semáforo de Arduino: los fundamentos

Comencemos pequeño. Un semáforo básico y único es un buen lugar para comenzar. Aquí está el circuito:

Conecte el ánodo (pata larga) de cada LED a los pines digitales ocho, nueve y diez (a través de una resistencia de 220 ohmios). Conecte los cátodos (pata corta) a la tierra del Arduino..

Código para el semáforo de Arduino

Comience definiendo variables para que pueda abordar las luces por nombre en lugar de un número. Comience un nuevo proyecto Arduino y comience con estas líneas:

int rojo = 10; int amarillo = 9; int verde = 8;

A continuación, agreguemos la función de configuración, donde configurará los LED rojo, amarillo y verde como salidas. Como ha creado variables para representar los números de pin, ahora puede referirse a los pines por nombre:

configuración nula () pinMode (rojo, SALIDA); pinMode (amarillo, SALIDA); pinMode (verde, SALIDA); 

los pinMode La función configura el Arduino para usar un pin dado como salida. Tienes que hacer esto para que tus LED funcionen. Ahora para la lógica real del semáforo. Aquí está el código que necesitas. Agregue esto debajo de sus definiciones de variables y función de configuración:

void loop () changeLights (); retraso (15000);  void changeLights () // verde apagado, amarillo encendido durante 3 segundos digitalWrite (verde, BAJO); digitalWrite (amarillo, ALTO); retraso (3000); // apaga el amarillo, luego enciende el rojo durante 5 segundos digitalWrite (amarillo, BAJO); digitalWrite (rojo, ALTO); retraso (5000); // rojo y amarillo encendido durante 2 segundos (aunque el rojo ya está encendido) digitalWrite (amarillo, ALTO); retraso (2000); // apaga el rojo y el amarillo, luego enciende el digital digitalWrite (amarillo, BAJO); digitalWrite (rojo, BAJO); digitalWrite (verde, ALTO); retraso (3000); 

Cargue este código en su Arduino y ejecútelo (asegúrese de seleccionar la placa y el puerto correctos del Herramientas > Tablero y Herramientas > Puerto menús). Debe tener un semáforo en funcionamiento que cambie cada 15 segundos, como este (acelerado):

Analicemos este código. los changeLights La función realiza todo el trabajo duro. Esto gira el semáforo a través de amarillo y rojo, luego vuelve a verde. Como esto se llama dentro del lazo función, el Arduino ejecutará este código para siempre, con una pausa de 15 segundos cada vez.

los changeLights La función consta de cuatro pasos distintos:

  • Verde encendido, amarillo apagado
  • Amarillo apagado, rojo encendido
  • Amarillo encendido, rojo encendido
  • Verde encendido, rojo apagado, amarillo apagado

Estos cuatro pasos replican el proceso utilizado en semáforos reales. Para cada paso, el código es muy similar. El LED apropiado se enciende o apaga usando digitalWrite. Esta es una función de Arduino que se usa para configurar los pines de salida en ALTO (para encendido) o BAJO (para apagado).

Después de habilitar o deshabilitar los LED requeridos, el retrasar hace que el Arduino espere un tiempo determinado. Tres segundos en este caso.

Yendo más profundo: paso de peatones Arduino

Ahora que conoce los conceptos básicos, mejorémoslo. Agregue un botón para que los peatones cambien la luz cuando lo deseen:

Observe cómo el semáforo es exactamente el mismo que el ejemplo anterior. Conecte el botón al pin digital 12. Notará que el interruptor tiene una resistencia de alta impedancia de 10k-ohmios conectada, y puede que se pregunte por qué. Esta es una resistencia desplegable.

Un interruptor deja que la corriente fluya o no. Esto parece bastante simple, pero en un circuito lógico, la corriente siempre debe fluir en un estado alto o bajo (recuerde, 1 o 0, ALTO o BAJO). Puede suponer que un interruptor de botón que no se presiona realmente estaría en un estado BAJO, pero de hecho, se dice que está 'flotando', porque no se consume corriente en absoluto.

En este estado flotante, es posible que ocurra una lectura falsa ya que fluctúa con interferencia eléctrica. En otras palabras, un interruptor flotante no proporciona una lectura ALTA ni BAJA confiable. Una resistencia desplegable mantiene una pequeña cantidad de corriente que fluye cuando se cierra el interruptor, lo que garantiza una lectura precisa de bajo estado.

En otros circuitos lógicos, puede encontrar una resistencia pull-up en su lugar, y esto funciona según el mismo principio, pero a la inversa, asegurándose de que la compuerta lógica particular por defecto sea alta.

Ahora, en la parte del bucle del código, en lugar de cambiar las luces cada 15 segundos, leerá el estado del interruptor de botón y solo cambiará las luces cuando esté activado.

Código para el paso de peatones Arduino

Comience agregando una nueva variable para almacenar el pin de su botón:

botón int = 12; // el interruptor está en el pin 12 

Ahora, en la función de configuración, agregue una nueva línea para declarar el interruptor como entrada. Agregue una línea para configurar los semáforos en el escenario verde. Sin esta configuración inicial, se apagarían hasta la primera vez changeLights carreras.

pinMode (botón, ENTRADA); digitalWrite (verde, ALTO);

En su lugar, cambie la función de bucle completa a la siguiente:

void loop () if (digitalRead (button) == HIGH) delay (15); // software rebote if (digitalRead (button) == HIGH) // si el interruptor es HIGH, es decir. empujado hacia abajo - cambiar las luces! changeLights (); retraso (15000); // espera 15 segundos

Deberias hacer eso. Tal vez se pregunte por qué la comprobación de botones ocurre dos veces (digitalRead (botón)), separados por un pequeño retraso. Esto es un rebote. Al igual que la resistencia desplegable para el botón, esta simple comprobación detiene el código que detecta una interferencia menor al presionar un botón.

Esperando dentro del Si durante 15 segundos, los semáforos no pueden cambiar durante al menos esa duración. Una vez que hayan transcurrido 15 segundos, el bucle se reinicia. Cada reinicio del bucle, lee el estado del botón nuevamente, pero si no se presiona, el Si la instrucción nunca se activa, las luces nunca cambian y el programa se reinicia nuevamente.

Así es como se ve (acelerado):

Semáforo Arduino con cruce

Probemos con un modelo más avanzado. En lugar de un cruce de peatones, cambie su circuito para tener dos semáforos:

Conecte el segundo semáforo a los pines digitales 11, 12 y 13.

Código para el semáforo de Arduino con cruce

Primero, asigne sus nuevos pines de semáforo a variables y configúrelos como salidas, como en el primer ejemplo:

// light one int red1 = 10; int amarillo1 = 9; int green1 = 8; // light two int red2 = 13; int amarillo2 = 12; int green2 = 11; void setup () // light one pinMode (red1, OUTPUT); pinMode (amarillo1, SALIDA); pinMode (verde1, SALIDA); // light two pinMode (red2, OUTPUT); pinMode (amarillo2, SALIDA); pinMode (verde2, SALIDA); 

Ahora, actualice su bucle para usar el código del primer ejemplo (en lugar del cruce de peatones):

void loop () changeLights (); retraso (15000); 

Una vez más, todo el trabajo se lleva a cabo en el changeLights función. En lugar de ir rojo > rojo Y amarillo > verde, Este código alternará los semáforos. Cuando uno está en verde, el otro está en rojo. Aquí está el código:

void changeLights () // activa ambos amarillos en digitalWrite (green1, LOW); digitalWrite (amarillo1, ALTO); digitalWrite (amarillo2, ALTO); retraso (5000); // apaga ambos amarillos, y opuesto verde y rojo digitalWrite (amarillo1, BAJO); digitalWrite (rojo1, ALTO); digitalWrite (amarillo2, BAJO); digitalWrite (rojo2, BAJO); digitalWrite (verde2, ALTO); retraso (5000); // ambos amarillos de nuevo digitalWrite (amarillo1, ALTO); digitalWrite (amarillo2, ALTO); digitalWrite (verde2, BAJO); retraso (3000); // apaga ambos amarillos, y opuestos verde y rojo digitalWrite (green1, HIGH); digitalWrite (amarillo1, BAJO); digitalWrite (rojo1, BAJO); digitalWrite (amarillo2, BAJO); digitalWrite (rojo2, ALTO); retraso (5000); 

Así es como se ve (acelerado):

Semáforo de Arduino Próximos pasos

Eso es todo por hoy. Su nueva comprensión de los LED y botones Arduino se aplica a todo tipo de proyectos diferentes. Si desea expandir estos semáforos, ¿por qué no construir un cruce de cuatro vías (o más), con muchos cruces peatonales y semáforos peatonales??

¿O por qué no ampliar sus nuevas habilidades con un proyecto más grande como este controlador MIDI DIY o el robot Arduino con Xod? También puede echar un vistazo a la codificación Arduino con VS Code y PlatformIO Mejor codificación Arduino con VS Code y PlatformIO Mejor codificación Arduino con VS Code y PlatformIO ¿Desea una manera fácil de comenzar a codificar Arduino? Con PlatformIO y VS Code, puede simplificar proyectos Arduino y aprender más rápido. .

Haber de imagen: androsvector / Shutterstock




Nadie ha comentado sobre este artículo todavía.

Sobre tecnología moderna, simple y asequible.
Tu guía en el mundo de la tecnología moderna. Aprenda a usar las tecnologías y los dispositivos que nos rodean todos los días y aprenda a descubrir cosas interesantes en Internet.