Sadržaj:
2025 Autor: John Day | [email protected]. Zadnja izmjena: 2025-01-13 06:57
U prvom dijelu ovog projekta izgradili smo hardver za prototip na 2 ploče.
U ovom dijelu ćemo proći kroz kod, kako funkcionira, a zatim ga testirati.
Obavezno pogledajte gornji video zapis za cijeli pregled koda i prikaz radnog koda.
Korak 1: I MASTER i SLAVE u istom kodu
Kôd se sastoji od 2 dijela, ali unutar iste datoteke. Koristim #define i #ifdef da odredim koji će se kod sastaviti ili zanemariti, tako da mogu odvojiti bilo koji kôd koji je samo za MASTER matičnu ploču i kod koji je samo za SLAVE matičnu ploču.
U osnovi, ako se pronađe definirani MASTER, tada će se prevesti bilo koji kôd koji se nalazi unutar bloka koda MASTER, a bilo koji kôd izvan tog bloka bit će uklonjen u vrijeme kompajliranja.
#ifdef MASTER
// Ovdje je glavni kod
#else
#define SLAVE
// Ovdje je specifičan kod za slave
#endif
Istu tehniku koristim i za #definiranje SLAVE -a kada se sastavlja MASTER, tako da morate brinuti samo o definiranju MASTER -a ili o onemogućavanju definiranja SLAVE -a.
Korak 2: Moduli BLUETOOTH razgovaraju putem serijskog čitanja i pisanja
U ovom projektu samo SLAVE matična ploča razgovara s MASTER matičnom pločom. MASTER nikada ne odgovara, on samo sluša, a zatim reagira na podatke koji dolaze.
Moduli govore i slušaju koristeći ugrađenu serijsku klasu u Arduino kodirajućem ekosistemu.
Bluetooth moduli komuniciraju brzinom od 38400 baud, pa oba puta koda inicijaliziraju svoju serijsku komunikaciju koristeći:
Serial.begin (38400);
I SLAVE koristi:
Serial.write (podaci ovdje);
Za razgovor s MASTER -om, a MASTER koristi:
data = Serial.read ();
Da biste slušali serijski tok i čitali njegov sadržaj i spremili ga u varijablu.
Korak 3: Kontrola trke
SLAVE govori MASTER-u ako je u utrci više ili u stanju pripravnosti putem zelenog gumba spojenog na mikrokontroler. U pripravnom načinu rada, IR senzori ne rade ništa, a MASTER će prikazati 8 crtica na zaslonu kako bi označio da je u načinu rada spreman.
Kad SLAVE kaže MASTER -u da će utrka početi, SLAVE počinje anketirati IR senzore sa svoje strane (početak trkaće staze) kako bi automobili prošli ispod.
Kako svaki automobil prolazi ispod svakog IR senzora, šalje MASTERU A (automobil 1) ili B (automobil 2).
Kad MASTER primi A ili B, on omogućuje mjerač vremena za taj automobil, a zatim čeka da automobil prođe ispod odgovarajućeg IC senzora na ciljnoj liniji.
Zaslon se ažurira svakih 50 ms kako bi prikazao trenutno vrijeme za svaki automobil u sekundama sa 2 decimalna mjesta.
Nakon što su oba automobila stigla na cilj, MASTER odlučuje koji je automobil bio najbrži i treperi to vrijeme na ekranu kako bi označio pobjednika.
Korak 4: Ostatak koda
Ostatak koda je samo pomoćni kod koji ili kontrolira prikaz podataka na osmeroznamenkastom zaslonu ili upravlja logikom pritiskanja gumba itd.
Na kraju videa u uvodnom dijelu ovog projekta pokazujem primjer koda koji se izvodi na dvije ploče, pa provjerite to!
Kod za ovaj projekt možete preuzeti iz mog github repoa.
Korak 5: Šta je sljedeće?
To je to za sada … u trećem dijelu ćemo pogledati premještanje komponenti s matične ploče na nešto trajnije … ostanite s nama!
Nadam se da uživate u ovom projektu!
Pratite me na:
www.youtube.com/c/unexpectedmaker
twitter.com/unexpectedmaker
www.facebook.com/unexpectedmaker
www.instagram.com/unexpectedmaker
www.tindie.com/stores/seonr/