Daftar Isi:

Arduino Hot Wheels Speed Track Bagian #2 - Kode: 5 Langkah
Arduino Hot Wheels Speed Track Bagian #2 - Kode: 5 Langkah

Video: Arduino Hot Wheels Speed Track Bagian #2 - Kode: 5 Langkah

Video: Arduino Hot Wheels Speed Track Bagian #2 - Kode: 5 Langkah
Video: HotWheels Speed Track - Part #2 - The code and Testing 2024, Juli
Anonim
Image
Image

Pada bagian pertama dari proyek ini kami membangun perangkat keras untuk prototipe pada 2 papan tempat memotong roti.

Dan di bagian ini kita akan membahas kodenya, cara kerjanya dan kemudian mengujinya.

Pastikan untuk menonton video di atas untuk keseluruhan tinjauan kode dan tampilan kode kerja.

Langkah 1: MASTER dan SLAVE dalam Kode yang Sama

Kode dalam 2 bagian, tetapi di dalam file yang sama. Saya menggunakan #define dan #ifdef untuk menentukan kode mana yang akan dikompilasi atau diabaikan sehingga saya dapat memisahkan kode apa pun yang hanya untuk papan tempat memotong roti MASTER dan kode yang hanya untuk papan tempat memotong roti SLAVE.

Pada dasarnya, jika definisi MASTER ditemukan, maka kode apa pun yang berada di dalam blok kode MASTER akan dikompilasi dan kode apa pun di luar blok itu akan dihapus pada waktu kompilasi.

#ifdef MASTER

//Kode khusus master ada di sini

#lain

#definisikan BUDAK

// Kode khusus budak ada di sini

#berakhir jika

Saya juga menggunakan teknik yang sama untuk #define SLAVE ketika MASTER dikompilasi sehingga Anda hanya perlu khawatir tentang mendefinisikan MASTER atau tidak mengaktifkan SLAVE untuk didefinisikan.

Langkah 2: Modul BLUETOOTH Berbicara Melalui Serial Baca & Tulis

Dalam proyek ini hanya papan tempat memotong roti SLAVE yang berbicara dengan papan tempat memotong roti MASTER. MASTER tidak pernah berbicara kembali, ia hanya mendengarkan dan kemudian bertindak berdasarkan data yang masuk.

Modul berbicara dan mendengarkan menggunakan kelas Serial bawaan di ekosistem pengkodean Arduino.

Modul Bluetooth berkomunikasi pada 38400 baud, sehingga kedua jalur kode menginisialisasi komunikasi Serial mereka menggunakan:

Serial.begin(38400);

Dan SLAVE menggunakan:

Serial.write(data di sini);

Untuk berbicara dengan MASTER, dan MASTER menggunakan:

data = Serial.read();

Untuk mendengarkan aliran serial dan membaca isinya dan menyimpannya di dalam variabel.

Langkah 3: Mengontrol Balapan

SLAVE memberitahu MASTER jika sedang dalam mode race more atau ready melalui tombol hijau yang terhubung ke mikrokontrolernya. Dalam mode siap, sensor IR tidak melakukan apa-apa dan MASTER akan menampilkan 8 garis putus-putus pada layar untuk menunjukkan mode siap.

Ketika SLAVE memberi tahu MASTER bahwa balapan akan dimulai, SLAVE mulai melakukan polling pada sensor IR di sisinya (Awal trek balap) agar mobil dapat lewat di bawahnya.

Saat setiap mobil lewat di bawah setiap sensor IR, ia mengirimkan A (mobil 1) atau B (mobil 2) ke MASTER.

Ketika MASTER menerima A atau B, itu mengaktifkan timer untuk mobil tertentu dan kemudian menunggu mobil lewat di bawah sensor IR yang sesuai di garis finish.

Layar diperbarui setiap 50 ms untuk menampilkan waktu saat ini untuk setiap mobil dalam hitungan detik dengan 2 tempat desimal.

Setelah kedua mobil mencapai garis finis, MASTER memutuskan mobil mana yang tercepat dan berkedip saat itu di layar untuk menunjukkan pemenangnya.

Langkah 4: Sisa Kode

Kode lainnya hanyalah kode utilitas yang mengontrol tampilan data pada tampilan 8 digit, atau menangani logika tekan tombol, dll.

Di akhir video di bagian intro proyek ini, saya menunjukkan contoh kode yang berjalan di 2 papan tempat memotong roti, jadi pastikan Anda memeriksanya!

Anda dapat mengambil kode untuk proyek ini dari repo github saya.

Langkah 5: Apa Selanjutnya?

Itu saja untuk saat ini… di bagian 3 kita akan melihat memindahkan komponen dari papan tempat memotong roti dan ke sesuatu yang lebih permanen… tetap disini!

Saya harap Anda menikmati proyek ini!

Ikuti saya di:

www.youtube.com/c/unexpectedmaker

twitter.com/unexpectedmaker

www.facebook.com/unexpectedmaker

www.instagram.com/unexpectedmaker

www.tindie.com/stores/seonr/

Direkomendasikan: