Spisu treści:
- Krok 1: Zarówno MASTER, jak i SLAVE w tym samym kodzie
- Krok 2: Moduły BLUETOOTH rozmawiają przez szeregowy odczyt i zapis
- Krok 3: Kontrolowanie wyścigu
- Krok 4: Reszta Kodeksu
- Krok 5: Co dalej?
Wideo: Arduino Hot Wheels Speed Track, część #2 - kod: 5 kroków
2024 Autor: John Day | [email protected]. Ostatnio zmodyfikowany: 2024-01-30 11:31
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:
Łatwy BLE o bardzo niskim poborze mocy w Arduino Część 2 -- Monitor temperatury / wilgotności -- Rev 3: 7 kroków
Easy Very Low Power BLE w Arduino Część 2 -- Monitor temperatury / wilgotności -- Wersja 3: Aktualizacja: 23 listopada 2020 r. – Pierwsza wymiana 2 baterii AAA od 15 stycznia 2019 r., tj. 22 miesiące na 2 baterie alkaliczne AAA Aktualizacja: 7 kwietnia 2019 r. – Wersja 3 z lp_BLE_TempHumidity, dodaje wykresy Data/Czas, używając pfodApp V3.0.362+ i auto throttling
Arduino-tomation Część 4: TRI DE BRIQUE: 5 kroków
Arduino-tomation Część 4: TRI DE BRIQUE: W tym Instructables opowiem o innej maszynie zmodernizowanej i kontrolowanej przez płytkę klonu Arduino wykonaną z Atmega1284p. Ta płyta może obsługiwać osłonę Ethernet i może być nadzorowana przez SCADA (AdvancedHMI, Unigo) lub przemysłowy
Arduino LTC6804 BMS - Część 2: Płytka równoważąca: 5 kroków
Arduino LTC6804 BMS - Część 2: Balance Board: Część 1 jest tutajSystem zarządzania baterią (BMS) zawiera funkcję wykrywania ważnych parametrów baterii, w tym napięcia ogniw, prądu baterii, temperatury ogniw itp. zdefiniowany zakres, opakowanie może być dysk
Jak zmienić standardowe Hot Wheels na R/C Hot Wheels:D: 6 kroków (ze zdjęciami)
Jak przerobić standardowe Hot Wheels na R/C Hot Wheels:D: Od dziecka uwielbiam Hot Wheels Cars. To dało mi inspirację do projektowania pojazdów fantasy. Tym razem przeszli samych siebie dzięki Star War Hot Wheels, C-3PO. Jednak chcę czegoś więcej niż tylko pchania lub podróżowania po torze, zdecydowałem: „L
Tor prędkości Arduino Hot Wheels - część 1 - prototyp: 4 kroki
Arduino Hot Wheels Speed Track - Część 1 - Prototyp: Nie powinno dziwić, że mój syn uwielbia gorące koła i ściga się swoimi samochodami po całym domu! Jedną z jego ulubionych rzeczy do zrobienia jest ściganie się wszystkimi swoimi samochodami (obecnie ponad 100), aby ustalić, który jest najszybszym samochodem. W tej chwili robi to wszystko na oko i