Daftar Isi:

Memprogram Mikro:Bit Robot & Joystick:Pengontrol Bit Dengan MicroPython: 11 Langkah
Memprogram Mikro:Bit Robot & Joystick:Pengontrol Bit Dengan MicroPython: 11 Langkah

Video: Memprogram Mikro:Bit Robot & Joystick:Pengontrol Bit Dengan MicroPython: 11 Langkah

Video: Memprogram Mikro:Bit Robot & Joystick:Pengontrol Bit Dengan MicroPython: 11 Langkah
Video: Using Python to interface a Joystick to the micro:bit 2024, November
Anonim
Memprogram Mikro:Bit Robot & Joystick:Bit Controller Dengan MicroPython
Memprogram Mikro:Bit Robot & Joystick:Bit Controller Dengan MicroPython

Untuk Robocamp 2019, kamp robotika musim panas kami, anak muda berusia 10-13 tahun sedang menyolder, memprogram, dan membuat 'robot antweight' berbasis mikro:bit BBC, serta memprogram mikro:bit untuk digunakan sebagai remote control.

Jika Anda saat ini berada di Robocamp, lewati ke Langkah 3, karena kami telah melakukan dua langkah pertama sebagai sebuah grup

Ini adalah panduan langkah demi langkah untuk membuat robot mikro:bit berkomunikasi dengan pengontrol joystick:bit.

Itu tidak mengambil rute tercepat untuk membuat semuanya berfungsi, tetapi mencoba hal-hal dalam potongan kecil sehingga Anda dapat menguji kode saat Anda pergi, menempelkan stempel Anda sendiri di atasnya, dan memahami mengapa kami melakukan hal-hal yang kami lakukan !

Untuk aktivitas ini, kami menggunakan robot kustom kami sendiri, tetapi akan bekerja dengan robot apa pun yang menggunakan driver motor serupa, seperti L9110s.

File desain untuk robot kami dapat ditemukan di sini:

Panduan ini ditulis untuk pemula, tetapi jika Anda belum pernah menggunakan micro:bit dengan MicroPython sebelumnya, kami sarankan Anda mencoba program yang lebih sederhana terlebih dahulu, seperti lencana nama kami Instructable: https://www.instructables.com/id/Felt -Microbit-Nam…

Perlengkapan

2x mikro BBC: bit

Robot yang bekerja dengan micro:bit BBC (lihat penjelasan di atas)

joystick: pengontrol bit (kami mendapatkannya dari Komponen Keren)

Langkah 1: Pengaturan Robot

Anda memiliki beberapa opsi untuk menulis kode MicroPython untuk mikro:bit Anda:

  • Mu, yang dapat Anda unduh dan instal dari sini:
  • Editor online, yang dapat Anda temukan di sini:

Instruksi ini mengasumsikan Anda menggunakan Mu

Buka Mu, dan colokkan micro:bit Anda ke komputer Anda. Mu harus mengenali bahwa Anda menggunakan mikro:bit dan pilih mikro:bit 'Mode', tetapi jika tidak, ubah secara manual.

pilih mode
pilih mode

Dapatkan salinan kode uji motor robot dari sini:

Jika Anda tidak terbiasa dengan Github, itu bisa menjadi tidak intuitif! Dua cara mudah untuk mendapatkan kode ini adalah:

  1. Simpan file Raw ke komputer Anda, lalu Muat ke Mu:
  2. Salin dan tempel semua kode yang diberikan ke file Baru di Mu.
simpan file mentah
simpan file mentah

Sekarang klik tombol 'Flash' dari toolbar Mu, untuk mengirim kode baru Anda ke micro:bit.

Ini tidak akan berfungsi kecuali mikro:bit dicolokkan

Lampu kuning di bagian belakang micro:bit akan mulai berkedip. Setelah selesai, kode Anda telah ditransfer.

MENYIAPKAN ARAH MOTOR

Program ini akan menyalakan motor ke arah yang berbeda ketika Anda menekan tombol 'A' pada mikro:bit.

Apa yang Anda inginkan terjadi adalah:

  • Saat 'A' ditampilkan, motor kiri ke depan
  • Ketika 'B' ditampilkan, motor kiri mundur
  • Saat 'C' ditampilkan, motor kanan ke depan
  • Saat 'D' ditampilkan, motor kanan mundur

Ini mungkin tidak akan terjadi, karena itu tergantung pada bagaimana Anda menghubungkan robot Anda!

Di bagian atas kode, Anda akan menemukan daftar variabel, yang menentukan pin mana pada mikro:bit yang mengontrol arah motor mana.

Jika Anda menggunakan salah satu robot kami (file), tukar nama variabel di sekitar untuk membuat robot bergerak ke arah yang benar:

tukar pin variabel
tukar pin variabel

Jika Anda menggunakan robot Anda sendiri, periksa pin mana yang terhubung dengan driver motor sebelum mengedit kode.

MENGUJI DRIVE

Sekarang periksa bagaimana robot Anda mengemudi dengan mengganti kode uji di loop utama dengan beberapa kode Anda sendiri.

Anda memberi tahu robot untuk mengemudi dengan memanggil fungsi drive(). Ini membutuhkan dua argumen - nilai untuk motor kiri dan nilai untuk motor kanan, antara 0 (mati) dan 1023 (kecepatan maksimal).

Dengan memanggil drive (500, 500), misalnya, Anda memberi tahu kedua motor untuk dihidupkan, ke arah depan, dengan kecepatan sekitar setengah.

Cobalah beberapa opsi untuk merasakan seberapa lurus dan seberapa baik putarannya.

Petunjuk: tes motor berada di dalam loop True while, dan pernyataan if - motor tidak akan berputar sampai Anda menekan tombol A pada mikro:bit, dan selamanya memeriksa apakah Anda telah menekan tombol A.

Petunjuk: motor tidak akan mati sampai Anda menyuruhnya! Mereka akan selalu terus melakukan instruksi terakhir mereka.

OPSIONAL: MENINGKATKAN MENGEMUDI DI GARIS LURUS

Jika robot Anda tidak akan mengemudi dalam garis lurus, salah satu motor Anda mungkin berputar lebih cepat dari yang lain.

Setelah memeriksa bahwa tidak ada yang secara fisik menghentikan roda berputar dengan bebas, Anda dapat mengedit kode di fungsi penggerak untuk mengurangi kecepatan motor yang lebih cepat.

Gulir ke atas untuk menemukan definisi fungsi drive, dan lihat dua instruksi teratas:

def drive (L, R):

# Di bawah ini adalah penyesuaian untuk mengoreksi perbedaan kecepatan motor L = int(L*1) R = int(R*1)

Kedua garis tersebut saat ini mengambil nilai L dan R, kalikan dengan 1, lalu pastikan masih bilangan bulat (int).

Misalnya, jika motor kiri Anda lebih cepat, ubah *1 pada barisnya menjadi *0,9, dan lihat apakah itu memperbaiki keadaan.

Anda tidak akan dapat membuatnya sempurna, tetapi Anda dapat terus menyesuaikan sampai drive lebih lurus.

MENYIAPKAN RADIO

Sekarang atur radio, dengan menambahkan baris berikut ke bagian atas kode Anda:

impor radio

radio.config(channel=7, grup=0, antrian=1) radio.on()

Ini akan memungkinkan robot Anda menerima instruksi dari mikro:bit lain, tetapi saat ini robot akan menerima instruksi dari mikro:bit lainnya.

Ini karena saluran 7 dan grup 0 adalah saluran default.

Ubah angka-angka ini, pilih saluran antara 0-82 dan grup antara 0-255. Sekarang mikro:bit Anda hanya akan menerima instruksi dari orang lain dengan informasi konfigurasi yang sama.

queue=1 berarti mikro:bit hanya akan menyimpan satu pesan masuk pada satu waktu - ini memberikan waktu respons yang sedikit lebih cepat daripada default, yaitu 3.

Sekarang Anda perlu mengedit kode loop utama Anda, alih-alih menjalankan instruksi saat Anda menekan tombol, menunggu pesan radio masuk dan merespons dengan tepat.

Coba kode berikut sebagai tes (tidak akan melakukan apa pun sampai Anda mengatur joystick di Langkah 2):

sementara Benar:

pesan = radio.receive() jika pesan == 'teruskan': drive(500, 500)

Langkah 2: Pengaturan Joystick

Cabut mikro:bit robot Anda, dan colokkan mikro:bit joystick Anda sebagai gantinya

Dapatkan salinan kode pengaturan joystick dari sini:

Atur radio menggunakan konfigurasi yang sama (nomor saluran dan grup) seperti yang Anda lakukan untuk robot - ini akan memungkinkan keduanya untuk berkomunikasi satu sama lain.

Di akhir program, mulai loop utama Anda:

sementara Benar:

if button_a.was_pressed(): radio.send('maju')

Kode ini belum menggunakan joystick:bit. Menggunakan tombol A pada mikro:bit untuk mengirim pesan.

Pastikan robot dan mikrokontroler Anda memiliki daya, lalu tekan tombol untuk mengirim pesan Anda.

Jika pesan berhasil diterima, dan robot Anda bergerak… selamat! Anda telah selesai dengan petunjuk pengaturan.

TIPS PEMECAHAN MASALAH

Jika Anda mendapatkan pesan kesalahan pada pengontrol mikro: bit… debug kode pengontrol Anda

Jika Anda mendapatkan pesan kesalahan pada robot micro:bit… pesan radio Anda berhasil terkirim! Tetapi robot tidak dapat memahaminya, jadi periksa apakah pesan yang Anda kirim, dan pesan yang Anda suruh robot untuk mendengarkan cocok.

Jika tidak ada yang terjadi sama sekali

  • Pastikan Anda mem-flash kode yang benar ke setiap mikro: bit - mudah untuk secara tidak sengaja mem-flash kode yang salah!
  • Pastikan nomor saluran dan grup Anda cocok di setiap mikro:bit

Langkah 3: Memeriksa Nilai Joystick

Beberapa langkah selanjutnya semuanya menggunakan kode pengontrol

Sebelum Anda dapat menggunakan joystick pada pengontrol, Anda perlu mengetahui jenis nilai apa yang Anda dapatkan saat menekan stik.

Ganti loop utama Anda dengan kode berikut:

sementara Benar:

joystick = joystick_push() print(joystick) sleep(500)

Flash kode ini ke micro:bit Anda, lalu klik tombol REPL pada toolbar Mu. Ini akan membuka terminal di bagian bawah editor, yang memberi Anda tautan waktu nyata ke mikro:bit.

buka REPLnya
buka REPLnya

Ini tidak akan berfungsi kecuali mikro:bit dicolokkan

Dengan REPL terbuka, tekan tombol reset di bagian belakang micro:bit Anda.

Gambar
Gambar

Anda akan melihat beberapa nilai membawa 'dicetak' ke layar Anda:

nilai di terminal
nilai di terminal

Dorong tongkat joystick dan lihat apa yang terjadi pada angka-angkanya.

Catat nilai yang diberikan saat joystick berada di posisi tengah - dalam kasus saya (518, 523).

Klik tombol REPL pada toolbar Mu lagi untuk menutupnya - Anda tidak akan dapat mem-flash kode baru ke micro:bit saat sedang terbuka.

Langkah 4: Menyesuaikan Variabel X dan Y

Anda ingin mengubah nilai yang diberikan oleh fungsi joystick, sehingga:

  • di tengah itu adalah nol
  • naik positif
  • bawah adalah negatif.

Ini sesuai dengan instruksi yang dibutuhkan robot - angka positif untuk maju, dan angka negatif untuk mundur.

Lihatlah angka yang Anda dapatkan di langkah terakhir. Bilangan pertama adalah x, dan bilangan kedua adalah y.

Edit definisi joystick_push() yang sudah ada dalam program, untuk mengurangi nilai Anda dari aslinya:

def joystick_push():

x = pin0.read_analog() - 518 y = pin1.read_analog() - 523 pengembalian x, y

Gunakan nomor Anda sendiri, mungkin berbeda dengan nomor saya

Flash kode baru Anda, buka REPL, tekan tombol reset mikro:bit dan periksa nilai Anda.

Apakah Anda mendapatkan (0, 0)?

Langkah 5: Mengubah X dan Y Menjadi Nilai untuk Motor Kiri dan Kanan

Saat ini, joystick ini tidak akan terlalu berguna untuk mengemudikan robot. Didorong ke depan sepenuhnya, Anda akan mendapatkan nilai seperti (0, 500).

Jika Anda memberikan angka-angka ini ke robot, itu akan menghidupkan motor kanan tetapi bukan yang kiri, yang tidak Anda inginkan terjadi!

Diagram ini menunjukkan apa yang terjadi pada nilai x dan y saat Anda menggerakkan joystick, dan apa yang kami ingin robot lakukan saat Anda menggerakkan joystick.

diagram
diagram

Anda perlu menggunakan beberapa matematika untuk mencampur nilai x dan y, untuk memberi Anda sesuatu yang lebih berguna.

n

MATEMATIKA

Mari kita mulai dengan mendorong joystick ke depan.

Contoh nilai yang mungkin Anda dapatkan adalah:

x = 0

y = 500

Agar berguna bagi robot, Anda ingin mendapatkan nilai seperti ini:

kiri = 500

kanan = 500

Mari kita coba menjumlahkan x dan y dengan cara yang berbeda untuk melihat bilangan apa yang kita peroleh:

x + y = 0 + 500 = 500

x - y = 0 - 500 = -500 y + x = 500 + 0 = 500 y - x = 500 - 0 = 500

Sekarang mari kita lihat apa yang terjadi jika kita mendorong joystick sepenuhnya ke kanan.

Contoh nilai yang mungkin Anda dapatkan adalah:

x = 500

y = 0

Untuk membuat robot berbelok ke kanan, Anda ingin motor kiri bergerak maju, dan motor kanan bergerak mundur:

kiri = 500

kanan = -500

Mari kita coba rumus kita lagi:

x + y = 500 + 0 = 500

x - y = 500 - 0 = 500 y + x = 0 + 500 = 500 y - x = 0 - 500 = -500

Bandingkan dua rangkaian rumus untuk mencari tahu opsi mana yang akan memberi Anda nilai kiri yang benar, dan opsi mana yang akan memberi Anda nilai kanan yang benar.

Cobalah dengan beberapa nilai yang Anda dapatkan dari joystick Anda sendiri, untuk memastikan formula yang Anda pilih berfungsi sepanjang waktu.

n

MEMPERLUAS FUNGSI JOYSTICK

Perluas dan edit fungsi joystick untuk membuat dua variabel baru untuk kiri dan kanan, dan untuk mengembalikan nilai tersebut alih-alih x dan y:

def joystick_push():

x = pin0.read_analog() - 518 y = pin1.read_analog() - 523 kiri = kanan = kembali kiri, kanan

Flash kode baru Anda, buka REPL, tekan tombol reset mikro:bit dan periksa nilai Anda.

Apakah Anda mendapatkan nilai yang Anda harapkan?

Jika Anda memerlukan bantuan lebih lanjut, lihat kode contoh kami di sini:

Langkah 6: Mengirim Nilai Sebagai Pesan Radio

Sekarang Anda memiliki beberapa nilai yang siap dikirim ke robot Anda.

Edit loop utama Anda, sehingga memeriksa nilai joystick, tetapi alih-alih mencetak nilai, ia menyiapkannya untuk dikirim sebagai pesan radio.

sementara Benar:

joystick = joystick_push() pesan = str(joystick[0]) + " " + str(joystick[1])

Ini belum benar-benar mengirim pesan!

Apa yang terjadi di baris kode baru ini?

  • joystick[0] berarti informasi pertama yang keluar dari fungsi joystick (kiri)
  • joystick[1] adalah informasi selanjutnya (kanan)
  • str() mengubah kedua angka ini menjadi format string (teks, bukan angka) - ini diperlukan untuk dapat mengirim informasi melalui radio.

Anda akan terbiasa melihat + berarti penambahan - ini dapat menambahkan angka bersama-sama dan menggabungkan string, yang berarti akan menyatukan dua bit informasi.

Contoh:

150 + 100 = 250

str(150) + str(100) = 150100

Jadi penggabungan akan menyatukan nilai kiri dan kanan Anda.

Untuk memaksa pemisahan antara dua bit informasi (agar robot mengetahui bahwa keduanya adalah dua bit informasi), gabungkan string tambahan di antara keduanya menggunakan " ". Tanda bicara di sekitar ruang berarti sudah menjadi string.

Terakhir, perpanjang kode Anda untuk mengirim pesan yang baru dibuat ini melalui radio:

radio.send(pesan)

tidur(10)

Tidur memperlambat pengiriman pesan sehingga mikro: bit penerima tidak kelebihan beban dengan terlalu banyak informasi!

Flash kode ini ke mikro:bit pengontrol Anda dan debug kesalahan apa pun sebelum melanjutkan ke langkah berikutnya

Langkah 7: Menerima Pesan di Robot Anda

Kembali ke kode robot Anda dari awal - ingatlah untuk mencabut mikrokontroler Anda: bit sehingga Anda tidak secara tidak sengaja mem-flash kode robot ke sana

Gulir ke bawah ke loop utama Anda - hapus kode pengujian dan tambahkan ini sebagai gantinya:

sementara Benar:

pesan = radio.receive() print(pesan) sleep(100)

Ini menetapkan variabel yang sama dengan pesan masuk, dan mencetak pesan ke REPL - untuk memeriksa apakah pesan masuk seperti yang diharapkan.

Flash kode baru Anda, terhubung ke REPL, lalu tekan joystick.

Anda harus mendapatkan sesuatu seperti ini:

nilai REPL
nilai REPL

TIPS PEMECAHAN MASALAH

Jika Anda mendapatkan pesan kesalahan pada pengontrol mikro: bit… debug kode pengontrol Anda

Jika Anda mendapatkan pesan kesalahan pada robot micro:bit… pesan radio Anda berhasil terkirim! Tetapi robot tidak dapat memahaminya, jadi periksa apakah pesan yang Anda kirim, dan pesan yang Anda suruh robot untuk mendengarkan cocok.

Jika tidak ada yang terjadi sama sekali

  • Pastikan Anda mem-flash kode yang benar ke setiap mikro: bit - mudah untuk secara tidak sengaja mem-flash kode yang salah!
  • Pastikan nomor saluran dan grup Anda cocok di setiap mikro:bit

Langkah 8: Menggunakan Pesan Masuk untuk Mengontrol Motor Robot

Anda sekarang mendapatkan dua nomor yang dikirim melalui radio sebagai string.

Anda perlu membagi pesan ini menjadi dua string, lalu mengubah string kembali menjadi angka lagi, dan meneruskannya ke fungsi drive. Banyak yang terjadi sekaligus!

Sebelum melakukan ini, Anda perlu memeriksa apakah pesan yang Anda terima dalam format yang benar.

Jika tidak ada pesan yang dikirim, Anda akan menerima 'Tidak Ada' sebagai gantinya. Jika Anda mencoba dan membagi ini, Anda akan mendapatkan pesan kesalahan.

sementara Benar:

message = radio.receive() jika pesan bukan None: message = message.split() drive(int(message[0]), int(message[1]))

Apa yang terjadi disini?

  • Kode baru akan berjalan jika pesannya selain 'Tidak Ada'.
  • message.split() memeriksa spasi dalam pesan (yang kami tambahkan di langkah terakhir), dan menggunakannya untuk membagi pesan menjadi dua.
  • int(message[0]), int(message[1]) melakukan kebalikan dari apa yang kita lakukan pada langkah sebelumnya - mendapatkan setiap informasi satu per satu dan mengubahnya menjadi bilangan bulat (bilangan bulat).
  • int(message[0]) digunakan sebagai nilai untuk motor kiri dalam fungsi drive, dan int(message[1]) digunakan sebagai nilai untuk motor kanan.

Periksa apakah berfungsi - apakah motor berputar saat Anda menekan joystick?

Jika tidak - waktu untuk beberapa debugging!

Jika ya, fantastis! Anda memiliki robot remote control yang berfungsi!

Luangkan waktu untuk berlatih dengan robot Anda sebelum melanjutkan ke langkah berikutnya. Apakah itu mengemudi seperti yang Anda harapkan?

Langkah selanjutnya akan menunjukkan cara menggunakan tombol pada joystick untuk menambahkan fungsionalitas ekstra ke robot Anda

Jika Anda ingin melihat versi kode ini sejauh ini:

  • Robot:
  • Pengontrol:

Langkah 9: Menggunakan Tombol -- Menerima Pesan Tambahan

Saat ini, kode Anda akan mencoba membagi pesan apa pun yang bukan Tidak Ada. Artinya jika menerima, misalnya, 'halo', maka Anda akan mendapatkan pesan kesalahan.

Untuk mengizinkan mikro:bit Anda menafsirkan pesan lain, ia perlu memeriksa setiap pesan yang diharapkan terlebih dahulu, lalu membagi pesan hanya jika belum diperintahkan untuk melakukan hal lain dengannya.

Perluas kode Anda seperti ini:

jika pesan tidak Tidak ada:

if message == 'hello': display.show(Image. HAPPY) elif message == 'duck': display.show(Image. DUCK) else: message = message.split() drive(int(message[0]), int(pesan[1]))

Pertama, ia akan memeriksa apakah ia telah menerima pesan 'halo'. Jika sudah, itu akan menampilkan gambar bahagia, lalu kembali ke atas loop dan periksa pesan berikutnya.

Jika pesannya bukan halo, selanjutnya akan memeriksa apakah pesannya 'bebek'.

Jika pesannya bukan 'halo' ATAU 'bebek, itu akan melakukan hal terakhir dalam daftar, yaitu membagi pesan dan menyalakan motor. Itu tidak akan mencoba untuk membagi pesan jika telah menerima 'halo' atau 'bebek', yang berarti Anda tidak akan mendapatkan pesan kesalahan dari salah satu dari dua pesan ini.

Tanda sama dengan ganda itu penting - artinya 'sama dengan', dibandingkan dengan satu tanda sama dengan, yang mengatur sesuatu (jadi message = 'hello' berarti kita menyetel variabel ke 'hello', message == 'hello' berarti kami menanyakan apakah pesan sama dengan 'halo').

Cobalah hanya dengan dua opsi untuk saat ini, untuk mengujinya - Anda dapat menambahkan pesan lain sebanyak yang Anda suka nanti.

Tautan ke kode kerja:

Langkah 10: Mengirim Pesan Tambahan Menggunakan Tombol Pengontrol

Cabut mikro:bit robot Anda, dan colokkan mikro:bit joystick Anda sebagai gantinya

Kembali ke kode pengontrol Anda untuk mengedit.

Mirip dengan kode robot, kami ingin pengontrol memeriksa apakah Anda mencoba mengirim pesan lain, sebelum mengirim nilai joystick.

Di bagian atas loop, kami masih ingin memeriksa nilai joystick saat ini, tetapi kami juga ingin memeriksa apakah tombol sedang ditekan:

sementara Benar:

joystick = joystick_push() tombol = button_press()

button_press() mengembalikan nilai A, B, C, D, E atau F tergantung pada tombol mana yang sedang ditekan (jika tidak ada yang ditekan, ia mengembalikan None).

Sekarang kita dapat membuat pernyataan if-elif-else, seperti yang kita lakukan untuk kode robot - menggunakan dua tombol, dan mengirimkan nilai joystick jika tidak ada tombol yang ditekan.

jika tombol == 'A':

radio.send('hello') sleep(500) tombol elif == 'B': radio.send('duck') sleep(500) else: message = str(joystick[0]) + " " + str(joystick [1]) radio.send(pesan) tidur(10)

Saat tombol ditekan, kirim salah satu pesan yang Anda suruh robot untuk diwaspadai pada langkah sebelumnya.

Pesan akan dikirim setiap kali tombol ditekan, dan komputer jauh lebih cepat daripada manusia! Jadi itu mungkin mengirim pesan berkali-kali sebelum Anda berhasil melepaskan jari Anda dari tombol.

Tidur setelah mengirim pesan memperlambatnya, sehingga tidak akan memeriksa tombol lagi begitu cepat - coba beberapa angka di sini untuk mendapatkan jumlah waktu yang tepat untuk Anda - terlalu lambat dan tidak akan responsif juga dengan cepat dan robot Anda akan menerima begitu banyak pesan tombol yang mungkin berhenti merespons joystick!

Apakah itu bekerja?

Jika Anda mendapatkan pesan kesalahan, pikirkan baik-baik tentang apa yang baru saja Anda ubah, dan apa yang terjadi.

Jika Anda mendapatkan kesalahan pada robot saat Anda menekan tombol pada pengontrol Anda - Anda tahu bahwa pesannya tersampaikan, tetapi itu membingungkan robot. Periksa apakah pesan yang Anda kirim, dan pesan yang Anda minta agar dicari robot adalah sama.

Tautan ke kode kerja:

Langkah 11: Langkah Selanjutnya

Anda sekarang memiliki pengetahuan yang Anda butuhkan untuk bekerja dengan motor robot Anda, dan dengan joystick:bit controller

Gunakan pengetahuan ini untuk meningkatkan kedua program dan menjadikannya milik Anda sendiri. Beberapa ide di bawah ini!

Anda memiliki enam tombol pada pengontrol Anda! Apa yang Anda ingin mereka lakukan?

  • Bagaimana dengan memprogram rutinitas tarian untuk robot Anda lakukan sesuai perintah? Tulis algoritme perintah drive(), dipisahkan oleh perintah sleep()!
  • Apakah Anda ingin mengubah arah gerakan robot sehingga dapat dengan mudah mengemudi terbalik? Pikirkan tentang nilai x dan y joystick Anda. Apa yang mereka wakili dan bagaimana Anda bisa memanipulasinya?
  • Apakah robot Anda memiliki (atau dapatkah Anda menambahkan!) fitur tambahan seperti LED, speaker, atau sensor?

Ide untuk meningkatkan kode

  • Bisakah Anda membantu robot Anda mengatasi pesan yang tidak dikenal dengan menggunakan kode coba/kecuali?
  • Matematika yang digunakan untuk menghitung nilai kiri dan kanan dari joystick tidak memberi kita rentang nilai penuh (drive robot dapat menerima angka hingga 1023). Bisakah Anda mengedit kode ini untuk mendapatkan rentang yang lebih baik?
  • Ada metode lain untuk mencampur nilai joystick - dapatkah Anda menemukan cara yang lebih baik untuk melakukannya?

Direkomendasikan: