Pelajaran 3: Menggunakan Sensor dan Elektromagnet untuk Menempatkan Cakram di Gawang
Menambahkan Sensor Jarak ke Proyek
Pada Pelajaran 2, Robot VR bergerak mundur kembali ke titik awal untuk menurunkan cakram. Hal ini mengharuskan pengguna untuk menghitung jarak pasti yang harus ditempuh oleh Robot VR. Hal ini mungkin tidak selalu memungkinkan. Sebaliknya, Robot VR dapat menggunakan nilai sensor yang dilaporkan untuk mengambil dan menjatuhkan cakram dengan presisi yang konsisten.
Dalam pelajaran ini, Sensor Jarak akan digunakan untuk menentukan di mana Robot VR harus berhenti bergerak saat kembali ke tujuan. Sensor ini melaporkan jarak dari bagian depan Robot VR ke objek terdekat menggunakan perintahget_distance. Untuk menggunakan Sensor Jarak guna mengarahkan Robot VR kembali ke tujuan, hal-hal berikut perlu dilakukan:
- Robot VR perlu berputar 180 derajat agar Sensor Jarak menghadap ke sasaran. Perintah turn_to_heading dapat digunakan untuk memastikan Robot VR berbelok ke arah yang benar.
- Robot VR akan menggunakan Sensor Jarak dengan dinding belakang Area Bermain untuk menentukan di mana cakram akan dijatuhkan.
- Robot VR akan melaju menuju garis finish.

Untuk Informasi Anda
Perintah turn_to_heading memutar Robot VR ke arah tertentu menggunakan Sensor Gyro. Arah putaran Robot VR (kiri atau kanan) ditentukan berdasarkan arah pergerakan Sensor Giroskop saat ini. 
Perintah turn_to_headingdigunakan untuk mengarahkan Robot VR ke arah tertentu tanpa memperhatikan posisi Robot VR. Saat Anda mengambil atau menjatuhkan cakram, Robot VR mungkin akan terlempar dari jalurnya. Menggunakan perintah turn_to_heading memastikan bahwa Robot VR akan berbelok ke posisi absolut, bukan posisi relatif terhadap arah sebelumnya.

Lanjutkan pengembangan proyek
- Lanjutkan mengerjakan proyekUnit8Lesson3.
-
Tambahkan perintah turn_to_heading setelah komentar ketiga. Atur parameter menjadi 180 derajat, sehingga proyek sekarang terlihat seperti ini:
def main(): #1. Drive to the first disk while not down_eye.near_object(): drivetrain.drive(FORWARD) wait(5, MSEC) drivetrain.stop() # 2. Ambil disk pertama magnet.energize(BOOST) # 3. Berkendara menuju tujuan drivetrain.turn_to_heading(180, DEGREES) # 4. Masukkan cakram ke dalam gawang. -
Setelah robot VR diarahkan ke tujuan, robot VR perlu kembali ke tujuan tersebut. Tambahkan perulanganwhile di bawah perintah turn_to_heading , sehingga bagian ketiga proyek terlihat seperti ini:
# 3. Berkendara menuju tujuan drivetrain.turn_to_heading(180, DEGREES) while condition: wait(5, MSEC) - Untuk kembali ke gawang, Robot VR akan menggunakan data dari Sensor Jarak untuk menentukan kapan Robot VR berada di dalam gawang. Seperti yang dibahas pada pelajaran sebelumnya, setiap kotak grid pada Disk Mover Playground berukuran 200 milimeter (mm) x 200 milimeter (mm).

-
Dengan menggunakan pengukuran tersebut, pusat gawang dapat ditentukan berada sekitar 200 milimeter (mm) dari dinding Taman Bermain.

-
Robot VR harus bergerak ke arah sementaraadalah nilai sensor jarak yang melaporkan bahwa Robot VR berada lebih dari 200 milimeter (mm) dari dinding area bermain. Tetapkan kondisi loop while ke perintah get_distance dengan parameter milimeter (mm). Kemudian tambahkan operator perbandingan ke lebih besar dari (>) 200. Bagian ketiga dari proyek ini sekarang seharusnya terlihat seperti ini:
# 3. Berkendara menuju tujuan drivetrain.turn_to_heading(180, DEGREES) while front_distance.get_distance(MM) > 200: wait(5, MSEC) -
Tambahkan perintah driveke dalam loop while ini, sehingga bagian ketiga dari proyek ini terlihat seperti ini. Ini akan menginstruksikan Robot VR untuk bergerak maju sementara Sensor Jarak melaporkan jarak lebih dari 200 milimeter (mm).
# 3. Berkendara menuju tujuan drivetrain.turn_to_heading(180, DEGREES) while front_distance.get_distance(MM) > 200: drivetrain.drive(FORWARD) wait(5, MSEC) -
Setelah Robot VR mencapai tujuan (200 mm dari dinding), Robot VR perlu berhenti bergerak. Tambahkan perintah stopdi luar loop while , sehingga bagian ketiga proyek terlihat seperti ini:
# 3. Berkendara menuju tujuan drivetrain.turn_to_heading(180, DEGREES) while front_distance.get_distance(MM) > 200: drivetrain.drive(FORWARD) wait(5, MSEC) drivetrain.stop() -
Sekarang setelah Robot VR berhenti di garis gawang, ia dapat menjatuhkan cakram. Tambahkan perintah energize di bawah komentar keempat dan atur parameternya menjadi 'DROP.' Bagian keempat dari proyek ini sekarang seharusnya terlihat seperti ini:
# 4. Jatuhkan cakram ke magnet tujuan (DROP) -
Robot VR perlu bergerak mundur dalam jarak pendek untuk menghindari menabrak atau melukai cakram apa pun. Bertabrakan dengan cakram berpotensi membuat Robot VR keluar jalur. Robot VR tersebut kemudian perlu berputar sehingga menghadap cakram sekali lagi. Tambahkan perintah berikut setelah perintah akhir energize seperti yang ditunjukkan, untuk menginstruksikan Robot VR untuk bergerak mundur sejauh 100 milimeter (mm) dan berbalik ke arah 0 derajat. Pastikan perintah-perintah tersebut diberi indentasi dengan benar di dalam proyek Anda.
# 4. Jatuhkan cakram ke magnet tujuan (DROP) drivetrain.drive_for(REVERSE, 100, MM) drivetrain.turn_to_heading(0, DEGREES) - Buka Disk Mover Playground jika belum terbuka dan jalankan proyeknya.
-
Robot VR bergerak maju, mengambil cakram pertama, lalu berputar 180 derajat untuk menghadap ke sasaran. Robot VR kemudian menggunakan nilai dari Sensor Jarak untuk menentukan kapan harus berhenti bergerak dan menjatuhkan cakram.

Alur Proyek untuk Menempatkan Disk Pertama di Tujuan
Perhatikan bagaimana fungsi loop while bekerja dengan Sensor Jarak di bagian proyek ini.
- Robot VR akan bergerak maju saatSensor Jarak berada lebih dari 200 milimeter dari dinding.
- Ketika Sensor Jarak mendeteksi bahwa dinding Taman Bermain berjarak kurang dari 200 milimeter (mm), proyek akan beralih ke perintah berikutnya di luar loop while, dan Robot VR akan berhenti bergerak.
- Proyek ini akan berlanjut, untuk mengaktifkanElektromagnet untuk menjatuhkan cakram ke sasaran.
- Kemudian Robot VR akan berbalik dan berputar 180 derajat untuk bersiap menghadapi cakram berikutnya.
Pilih tombol Berikutnya untuk melanjutkan ke bagian selanjutnya dari Pelajaran ini.