Tabla de contenido:

Arduino Hot Wheels Speed Track Parte # 2 - Código: 5 pasos
Arduino Hot Wheels Speed Track Parte # 2 - Código: 5 pasos

Video: Arduino Hot Wheels Speed Track Parte # 2 - Código: 5 pasos

Video: Arduino Hot Wheels Speed Track Parte # 2 - Código: 5 pasos
Video: HotWheels Speed Track - Part #2 - The code and Testing 2024, Mes de julio
Anonim
Image
Image

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/

Recomendado: