Inhoudsopgave:

Arduino Hot Wheels Speed Track Deel #2 - Code - Ajarnpa
Arduino Hot Wheels Speed Track Deel #2 - Code - Ajarnpa

Video: Arduino Hot Wheels Speed Track Deel #2 - Code - Ajarnpa

Video: Arduino Hot Wheels Speed Track Deel #2 - Code - Ajarnpa
Video: Multi track hot wheels timer.(1) 2024, Juli-
Anonim
Image
Image

In het eerste deel van dit project hebben we de hardware voor het prototype opgebouwd op 2 breadboards.

En in dit deel zullen we de code bespreken, hoe het werkt en het dan testen.

Bekijk zeker de video hierboven voor de volledige code review en showcase van de werkende code.

Stap 1: Zowel MASTER als SLAVE in dezelfde code

De code is in 2 delen, maar in hetzelfde bestand. Ik gebruik #define en #ifdef om te bepalen welke code wordt gecompileerd of genegeerd, zodat ik elke code kan scheiden die alleen voor het MASTER-broodbord is en code die alleen voor het SLAVE-broodbord is.

Kortom, als de gedefinieerde MASTER wordt gevonden, wordt elke code die zich in het MASTER-codeblok bevindt, gecompileerd en elke code buiten dat blok wordt tijdens het compileren verwijderd.

#ifdef MASTER

// Master-specifieke code staat hier

#anders

#define SLAVE

// Slave-specifieke code staat hier

#stop als

Ik gebruik dezelfde techniek ook om SLAVE te #definiëren wanneer MASTER is gecompileerd, dus je hoeft je alleen maar zorgen te maken over het definiëren van MASTER of het niet inschakelen van SLAVE om te worden gedefinieerd.

Stap 2: BLUETOOTH-modules praten via serieel lezen en schrijven

In dit project praat alleen het SLAVE breadboard met het MASTER breadboard. De MASTER praat nooit terug, hij luistert alleen en handelt vervolgens naar de binnenkomende data.

De modules praten en luisteren met behulp van de ingebouwde seriële klasse in het Arduino-coderingsecosysteem.

Bluetooth-modules communiceren op 38400 baud, dus beide codepaden initialiseren hun seriële communicatie met behulp van:

Serieel.begin(38400);

En de SLAVE gebruikt:

Serial.write (gegevens hier);

Om met de MASTER te praten, en de MASTER gebruikt:

data = Serieel.lezen();

Om naar de seriële stream te luisteren en de inhoud ervan te lezen en op te slaan in een variabele.

Stap 3: Controle over de race

De SLAVE vertelt de MASTER of hij in race more of ready-modus is via de groene knop die op zijn microcontroller is aangesloten. In de gereedmodus doen de IR-sensoren niets en de MASTER toont 8 streepjes op het display om aan te geven dat deze zich in de gereedmodus bevindt.

Wanneer de SLAVE de MASTER vertelt dat er een race gaat beginnen, begint de SLAVE de IR-sensoren aan zijn kant (het begin van de racebaan) te peilen om auto's eronder te laten passeren.

Terwijl elke auto onder elke IR-sensor door rijdt, stuurt deze een A (auto 1) of B (auto 2) naar de MASTER.

Wanneer de MASTER een A of B ontvangt, activeert hij de timer voor die specifieke auto en wacht hij tot de auto onder de corresponderende IR-sensor doorgaat bij de finish.

Het display wordt elke 50 ms bijgewerkt om de huidige tijd voor elke auto in seconden weer te geven met 2 decimalen.

Zodra beide auto's de finishlijn hebben bereikt, beslist de MASTER welke auto de snelste was en knippert die tijd op het display om de winnaar aan te geven.

Stap 4: De rest van de code

De rest van de code is slechts een hulpprogrammacode die ofwel de weergave van gegevens op het 8-cijferige display bestuurt, ofwel de logica van het indrukken van een knop enz.

Aan het einde van de video in het intro-gedeelte van dit project laat ik een voorbeeld zien van de code die op de 2 breadboards draait, dus zorg ervoor dat je dat eens bekijkt!

Je kunt de code voor dit project uit mijn github-repo halen.

Stap 5: Wat nu?

Dat was het voor nu … in deel 3 zullen we kijken naar het verplaatsen van de componenten van het breadboard naar iets meer permanents … blijf op de hoogte!

Ik hoop dat je geniet van dit project!

Volg me op:

www.youtube.com/c/unexpectedmaker

twitter.com/unexpectedmaker

www.facebook.com/unexpectedmaker

www.instagram.com/unexpectedmaker

www.tindie.com/stores/seonr/

Aanbevolen: