Taula de continguts:

Arduino Hot Wheels Speed Track Part 2 - Codi: 5 passos
Arduino Hot Wheels Speed Track Part 2 - Codi: 5 passos

Vídeo: Arduino Hot Wheels Speed Track Part 2 - Codi: 5 passos

Vídeo: Arduino Hot Wheels Speed Track Part 2 - Codi: 5 passos
Vídeo: Michael Jackson Anti Gravity Dance Move 🔥😱😱😱🧐 #michaeljackson #antigravitydancemove #shorts 2024, Juliol
Anonim
Image
Image

A la primera part d’aquest projecte vam construir el maquinari per al prototip en dues taules de suport.

I en aquesta part repassarem el codi, com funciona i després el provarem.

Assegureu-vos de veure el vídeo anterior per veure tota la revisió del codi i l’aparador del codi de treball.

Pas 1: Tant MASTER com ESCLAU al mateix codi

El codi està dividit en dues parts, però dins del mateix fitxer. Utilitzo #define i #ifdef per determinar quin codi es compilarà o ignorarà, de manera que puc separar qualsevol codi que sigui només per a la taula de proves MASTER i el codi que sigui només per a la taula de treball SLAVE.

Bàsicament, si es troba la definició MASTER, es compilarà qualsevol codi que estigui dins del bloc de codi MASTER i qualsevol codi que estigui fora d’aquest bloc s’eliminarà en el moment de la compilació.

#ifdef MASTER

// El codi específic principal està aquí

#else

#define ESCLAU

// El codi específic de l'esclau és aquí

#endif

També estic fent servir la mateixa tècnica per definir #SLAVE quan es compila MASTER, de manera que només us heu de preocupar de definir MASTER o de no definir SLAVE habilitat.

Pas 2: els mòduls BLUETOOTH parlen mitjançant lectura i escriptura en sèrie

En aquest projecte, només la taula de treball SLAVE parla amb la taula de treball MASTER. El MASTER no torna a parlar, només escolta i després actua sobre les dades que entren.

Els mòduls parlen i escolten mitjançant la classe Serial integrada a l’ecosistema de codificació Arduino.

Els mòduls Bluetooth es comuniquen a 38400 baud, de manera que tots dos camins de codi inicialitzen les seves comunicacions en sèrie mitjançant:

Serial.begin (38400);

I SLAVE utilitza:

Serial.write (dades aquí);

Per parlar amb el MASTER i el MASTER utilitza:

dades = Serial.read ();

Per escoltar el flux en sèrie i llegir-ne el contingut i emmagatzemar-lo dins d’una variable.

Pas 3: controlar la cursa

L'ESCLAVE li indica al MASTER si està en mode carrera més o llest mitjançant el botó verd connectat al seu microcontrolador. En mode llest, els sensors IR no fan res i el MASTER mostrarà 8 guions a la pantalla per indicar que està en mode llest.

Quan l’ESCLAVE li diu al MÀSTER que començarà una cursa, l’ESCLAVAT comença a sondear els sensors d’IR del seu costat (L’inici de la pista) perquè els cotxes passin per sota.

Quan cada cotxe passa per sota de cada sensor IR, envia un A (cotxe 1) o un B (cotxe 2) al MASTER.

Quan el MASTER rep una A o una B, habilita el temporitzador per a aquest cotxe específic i després espera que el cotxe passi per sota del sensor IR corresponent a la línia de meta.

La pantalla s’actualitza cada 50 ms per mostrar l’hora actual de cada cotxe en segons amb 2 decimals.

Una vegada que tots dos cotxes han arribat a la meta, el MASTER decideix quin és el cotxe més ràpid i llança aquest temps a la pantalla per indicar el guanyador.

Pas 4: la resta del codi

La resta del codi és només un codi d’utilitat que controla la visualització de dades a la pantalla de 8 dígits, o bé gestiona la lògica de premsat de botons, etc.

Al final del vídeo, a la secció d'introducció d'aquest projecte, mostro un exemple del codi que s'executa a les dues taules de suport, així que assegureu-vos de comprovar-ho.

Podeu agafar el codi d’aquest projecte a la meva reposició de github.

Pas 5: què segueix?

Això és tot per ara … a la tercera part, mirarem de moure els components de la taula de treball per aconseguir alguna cosa més permanent … estigueu atents!

Espero que gaudiu d’aquest projecte!

Segueix-me a:

www.youtube.com/c/unexpectedmaker

twitter.com/unexpectedmaker

www.facebook.com/unexpectedmaker

www.instagram.com/unexpectedmaker

www.tindie.com/stores/seonr/

Recomanat: