Spisu treści:

Arduino Hot Wheels Speed Track, część #2 - kod: 5 kroków
Arduino Hot Wheels Speed Track, część #2 - kod: 5 kroków

Wideo: Arduino Hot Wheels Speed Track, część #2 - kod: 5 kroków

Wideo: Arduino Hot Wheels Speed Track, część #2 - kod: 5 kroków
Wideo: Ups. 2024, Lipiec
Anonim
Image
Image

W pierwszej części tego projektu zbudowaliśmy sprzęt dla prototypu na 2 płytkach stykowych.

W tej części omówimy kod, jak to działa, a następnie go przetestujemy.

Koniecznie obejrzyj powyższy film, aby zobaczyć cały przegląd kodu i prezentację działającego kodu.

Krok 1: Zarówno MASTER, jak i SLAVE w tym samym kodzie

Kod składa się z 2 części, ale w tym samym pliku. Używam #define i #ifdef, aby określić, który kod zostanie skompilowany lub zignorowany, dzięki czemu mogę oddzielić dowolny kod przeznaczony tylko dla płytki prototypowej MASTER od kodu przeznaczonego tylko dla płytki prototypowej SLAVE.

Zasadniczo, jeśli zostanie znaleziony zdefiniowany MASTER, każdy kod znajdujący się w bloku kodu MASTER zostanie skompilowany, a każdy kod poza tym blokiem zostanie usunięty w czasie kompilacji.

#ifdef MISTRZ

//Kod główny znajduje się tutaj

#w przeciwnym razie

#define SLAVE

// Specyficzny kod Slave jest tutaj

#endif

Używam tej samej techniki do #define SLAVE, gdy MASTER jest kompilowany, więc musisz się tylko martwić o zdefiniowanie MASTER lub nie włączenie SLAVE do zdefiniowania.

Krok 2: Moduły BLUETOOTH rozmawiają przez szeregowy odczyt i zapis

W tym projekcie tylko płytka stykowa SLAVE komunikuje się z płytką stykową MASTER. MASTER nigdy nie odpowiada, tylko słucha, a następnie działa na napływających danych.

Moduły rozmawiają i słuchają za pomocą wbudowanej klasy Serial w ekosystemie kodowania Arduino.

Moduły Bluetooth komunikują się z prędkością 38400 bodów, więc obie ścieżki kodu inicjują komunikację szeregową za pomocą:

Serial.początek(38400);

A SLAVE wykorzystuje:

Serial.write(dane tutaj);

Aby porozmawiać z MASTEREM, MASTER używa:

dane = Serial.odczyt();

Odsłuchiwanie strumienia szeregowego i odczytywanie jego zawartości oraz przechowywanie go w zmiennej.

Krok 3: Kontrolowanie wyścigu

SLAVE informuje MASTER'a, czy jest w trybie wyścigu więcej, czy w trybie gotowości za pomocą zielonego przycisku podłączonego do jego mikrokontrolera. W trybie gotowości czujniki podczerwieni nic nie robią, a MASTER pokaże 8 kresek na wyświetlaczu, aby wskazać, że jest w trybie gotowości.

Kiedy SLAVE mówi MASTERowi, że wyścig ma się rozpocząć, SLAVE zaczyna odpytywać czujniki podczerwieni po swojej stronie (początek toru wyścigowego), aby samochody przejechały pod spodem.

Gdy każdy samochód przechodzi pod każdym czujnikiem podczerwieni, wysyła A (samochód 1) lub B (samochód 2) do MASTER.

Gdy MASTER otrzyma A lub B, włącza licznik czasu dla tego konkretnego samochodu, a następnie czeka, aż samochód przejedzie pod odpowiednim czujnikiem podczerwieni na mecie.

Wyświetlacz jest aktualizowany co 50 ms, aby wyświetlać aktualny czas dla każdego samochodu w sekundach z 2 miejscami po przecinku.

Gdy oba samochody dotrą do mety, MISTRZ decyduje, który samochód był najszybszy i wyświetla ten czas na wyświetlaczu, aby wskazać zwycięzcę.

Krok 4: Reszta Kodeksu

Reszta kodu to tylko kod użytkowy, który steruje wyświetlaniem danych na 8-cyfrowym wyświetlaczu lub obsługuje logikę naciśnięcia przycisku itp.

Na końcu filmu w sekcji wprowadzającej do tego projektu pokazuję przykład kodu działającego na 2 płytkach prototypowych, więc koniecznie to sprawdź!

Możesz pobrać kod tego projektu z mojego repozytorium github.

Krok 5: Co dalej?

Na razie to wszystko… w części 3 przyjrzymy się przeniesieniu komponentów z płytki prototypowej na coś bardziej trwałego… bądźcie czujni!

Mam nadzieję, że podoba Ci się ten projekt!

Śledź mnie na:

www.youtube.com/c/unexpectedmaker

twitter.com/unexpectedmaker

www.facebook.com/unexpectedmaker

www.instagram.com/unexpectedmaker

www.tindie.com/stores/seonr/

Zalecana: