Tabla de contenido:
2025 Autor: John Day | [email protected]. Última modificación: 2025-01-13 06:57
En la primera parte de este proyecto, construimos el hardware para el prototipo en 2 placas de prueba.
Y en esta parte repasaremos el código, cómo funciona y luego lo probaremos.
Asegúrese de ver el video de arriba para ver la revisión completa del código y la presentación del código de trabajo.
Paso 1: MASTER y SLAVE en el mismo código
El código está en 2 partes, pero dentro del mismo archivo. Utilizo #define y #ifdef para determinar qué código se compilará o ignorará para poder separar cualquier código que sea solo para la placa MASTER y el código que sea solo para la placa SLAVE.
Básicamente, si se encuentra el define MASTER, entonces se compilará cualquier código que se encuentre dentro del bloque de código MASTER y cualquier código fuera de ese bloque se eliminará en tiempo de compilación.
#ifdef MASTER
// El código maestro específico está aquí
#demás
#define ESCLAVO
// El código específico del esclavo está aquí
#terminara si
También estoy usando la misma técnica para #define SLAVE cuando MASTER está compilado, por lo que solo debe preocuparse por definir MASTER o no habilitar la definición de SLAVE.
Paso 2: Los módulos BLUETOOTH se comunican mediante lectura y escritura en serie
En este proyecto, solo la placa SLAVE habla con la placa MASTER. El MASTER nunca responde, solo escucha y luego actúa sobre los datos que ingresan.
Los módulos hablan y escuchan usando la clase serial incorporada en el ecosistema de codificación Arduino.
Los módulos Bluetooth se comunican a 38400 baudios, por lo que ambas rutas de código inicializan sus comunicaciones en serie usando:
Serial.begin (38400);
Y el ESCLAVO usa:
Serial.write (datos aquí);
Para hablar con el MAESTRO, y el MAESTRO usa:
datos = Serial.read ();
Para escuchar el flujo serial y leer su contenido y almacenarlo dentro de una variable.
Paso 3: controlar la carrera
El ESCLAVO le dice al MAESTRO si está en carrera más o en modo listo a través del botón verde conectado a su microcontrolador. En el modo listo, los sensores de infrarrojos no hacen nada y el MASTER mostrará 8 guiones en la pantalla para indicar que está en modo listo.
Cuando el ESCLAVO le dice al MAESTRO que una carrera va a comenzar, el ESCLAVO comienza a sondear los sensores de infrarrojos en su lado (El inicio de la pista de carreras) para que los autos pasen por debajo.
A medida que cada automóvil pasa por debajo de cada sensor de infrarrojos, envía una A (automóvil 1) o B (automóvil 2) al MAESTRO.
Cuando el MASTER recibe una A o B, habilita el temporizador para ese automóvil específico y luego espera a que el automóvil pase por debajo del sensor IR correspondiente en la línea de meta.
La pantalla se actualiza cada 50 ms para mostrar la hora actual de cada automóvil en segundos con 2 lugares decimales.
Una vez que ambos coches han llegado a la línea de meta, el MAESTRO decide qué coche fue el más rápido y muestra ese tiempo en la pantalla para indicar el ganador.
Paso 4: el resto del código
El resto del código es solo un código de utilidad que controla la visualización de datos en la pantalla de 8 dígitos o maneja la lógica de pulsación de botones, etc.
Al final del video en la sección de introducción de este proyecto, muestro un ejemplo del código que se ejecuta en las 2 placas de prueba, ¡así que asegúrese de verificarlo!
Puede obtener el código para este proyecto de mi repositorio de github.
Paso 5: ¿Qué sigue?
Eso es todo por ahora … en la parte 3 veremos cómo mover los componentes de la placa de pruebas y colocarlos en algo más permanente … ¡estad atentos!
¡Espero que estéis disfrutando de este proyecto!
Sígueme en:
www.youtube.com/c/unexpectedmaker
twitter.com/unexpectedmaker
www.facebook.com/unexpectedmaker
www.instagram.com/unexpectedmaker
www.tindie.com/stores/seonr/