Cuprins:

Arduino Hot Wheels Speed Track Partea # 2 - Cod: 5 pași
Arduino Hot Wheels Speed Track Partea # 2 - Cod: 5 pași

Video: Arduino Hot Wheels Speed Track Partea # 2 - Cod: 5 pași

Video: Arduino Hot Wheels Speed Track Partea # 2 - Cod: 5 pași
Video: Can You Reattach a Severed Finger? 🤔 2024, Noiembrie
Anonim
Image
Image

În prima parte a acestui proiect am construit hardware-ul pentru prototip pe 2 panouri.

Și în această parte vom trece peste cod, cum funcționează și apoi îl vom testa.

Asigurați-vă că urmăriți videoclipul de mai sus pentru întreaga revizuire a codului și prezentarea codului de lucru.

Pasul 1: Atât MASTER, cât și SLAVE în același cod

Codul este în 2 părți, dar în interiorul aceluiași fișier. Folosesc #define și #ifdef pentru a determina codul care va fi compilat sau ignorat, astfel încât să pot separa orice cod care este doar pentru panoul MASTER și codul care este doar pentru panoul SLAVE.

Practic, dacă se găsește definirea MASTER, atunci orice cod care se află în interiorul blocului de cod MASTER va fi compilat și orice cod din afara acelui bloc va fi eliminat la momentul compilării.

#ifdef MASTER

// Codul master specific este aici

#else

#define SLAVE

// Codul specific pentru sclav este aici

#endif

De asemenea, folosesc aceeași tehnică pentru a #define SLAVE când MASTER este compilat, deci trebuie doar să vă faceți griji cu privire la definirea MASTER sau să nu activați SLAVE.

Pasul 2: modulele BLUETOOTH vorbesc prin citire și scriere în serie

În acest proiect, numai placa de discurs SLAVE vorbește cu placa de masă MASTER. MASTER nu vorbește niciodată, doar ascultă și apoi acționează asupra datelor care intră.

Modulele vorbesc și ascultă folosind clasa Serial încorporată din ecosistemul de codare Arduino.

Modulele Bluetooth comunică la 38400 baud, astfel încât ambele căi de cod inițializează comunicațiile seriale utilizând:

Serial.begin (38400);

Iar SLAVE folosește:

Serial.write (date aici);

Pentru a vorbi cu MASTER, iar MASTER folosește:

date = Serial.read ();

Pentru a asculta fluxul serial și a citi conținutul acestuia și a-l stoca într-o variabilă.

Pasul 3: Controlul cursei

SLAVE îi spune MASTER-ului dacă este în cursă mai mult sau gata prin butonul verde conectat la microcontrolerul său. În modul gata, senzorii IR nu fac nimic și MASTER va afișa 8 liniuțe pe afișaj pentru a indica faptul că este în modul gata.

Când SLAVE îi spune lui MASTER că va începe o cursă, SLAVE începe să sondeze senzorii IR de pe partea laterală (Startul pistei de curse) pentru ca mașinile să treacă pe dedesubt.

Pe măsură ce fiecare mașină trece sub fiecare senzor IR, trimite un A (mașina 1) sau B (mașina 2) către MASTER.

Când MASTER primește un A sau B, acesta activează cronometrul pentru mașina respectivă și apoi așteaptă ca mașina să treacă sub senzorul IR corespunzător la linia de sosire.

Afișajul este actualizat la fiecare 50 ms pentru a afișa ora curentă pentru fiecare mașină în câteva secunde, cu 2 zecimale.

Odată ce ambele mașini au ajuns la linia de sosire, MASTER decide care mașină a fost cea mai rapidă și afișează momentul pe afișaj pentru a indica câștigătorul.

Pasul 4: Restul codului

Restul codului este doar un cod utilitar care fie controlează afișarea datelor pe afișajul de 8 cifre, fie gestionează logica apăsării butonului etc.

La sfârșitul videoclipului din secțiunea introductivă a acestui proiect, vă arăt un exemplu de cod care rulează pe cele două panouri, așa că asigurați-vă că verificați acest lucru!

Puteți prelua codul pentru acest proiect din repo-ul meu github.

Pasul 5: Ce urmează?

Asta e deocamdată … în partea a 3-a ne vom uita la mutarea componentelor de pe panou și pe ceva mai permanent … rămâneți la curent!

Sper că vă place acest proiect!

Urmăriți-mă pe:

www.youtube.com/c/unexpectedmaker

twitter.com/unexpectedmaker

www.facebook.com/unexpectedmaker

www.instagram.com/unexpectedmaker

www.tindie.com/stores/seonr/

Recomandat: