Pelajaran Teach
Robot Arduino Visual (3/4): jarak tanpa pelanggaran
Murid menggunakan bacaan penderia jarak dalam kod visual untuk mengelakkan pelanggaran, menguji nilai ambang dan menerangkan perubahan tingkah laku robot.
Log masuk dengan akaun pendidik untuk menyediakan sesi kelas. Pelajar menyertai dengan kod kelas.
Kali pertama menggunakan LabsLand? Cipta akaun guru anda
Hasil pembelajaran
Membaca penderia jarak sebelum membuat keputusan.
Memilih nilai ambang ringkas berdasarkan pemerhatian.
Memprogram tindak balas yang selamat terhadap halangan berdekatan.
Pratonton aktiviti pelajar
Kandungan aktiviti
Pratonton sahaja. Dalam sesi kelas, pelajar boleh mengisi jawapan dan menyerahkan hasil kerja mereka kepada guru.
Kesan dahulu sebelum membuat keputusan
8 min
Penderia tidak membuat keputusan sendiri. Program membaca, membandingkan dengan nilai ambang dan memilih tindak balas yang selamat.
Daripada bacaan kepada tindak balas
Sensor mengukur sesuatu dan menghasilkan bacaan. Kiraan jarak bertindak balas terhadap cahaya inframerah pantulan; ia bukan jarak dalam sentimeter. Permukaan, sudut dan kedudukan mempengaruhinya. Bandingkan bacaan sebenar pada kedudukan selamat sebelum menentukan sama ada kiraan lebih tinggi menunjukkan jarak lebih dekat dalam ujian anda.
Nilai ambang ialah nombor pemisah antara "selamat" dengan "terlalu dekat". Program akan:
- Membaca penderia.
- Membandingkan bacaan dengan nilai ambang.
- Memilih tindak balas.
- Memerhatikan sama ada tindak balas itu selamat.
Jika bacaan jarak meningkat apabila objek semakin dekat, apakah maksud syarat bacaan >= 3? Mengapakah anda perlu memerhatikan bacaan sebelum memilih nilai ambang?
Ukur sebelum bertindak
20 min
Kedudukan jauh: gerakkan robot; anda tidak boleh menggerakkan objek fizikal di bilik jauh. Semasa memuat naik, pilih Only robots on 8-shaped circuits (litar berbentuk lapan). Lantai putih, garisan hitam dan dinding ialah rujukan tetap. Kenal pasti hadapan robot pada kamera dan semak ruang kosong. Tambahkan rangka kawalan di bawah. Setiap tekanan baharu B menghasilkan satu gerakan ke hadapan selama 100 ms; lepaskan sebelum menekan lagi. A dan C boleh menggunakan pola tekanan tunggal yang sama untuk membelok (−125,125 atau 125,−125). Ambil bacaan hanya selepas kedua-dua motor berhenti. Jangan menghampiri dinding semata-mata untuk mendapatkan bacaan tinggi; kekalkan jurang yang kelihatan dan laporkan kedudukan yang tidak dapat diuji dengan selamat.
[Button B as stepButton] (Buttons)
[Setup Serial speed 9600]
Arduino run first:
[Change two motors speed] Left: 0 Right: 0
Arduino loop forever:
if [stepButton single press]:
[Change two motors speed] Left: 125 Right: 125
[wait] 100 milliseconds
[Change two motors speed] Left: 0 Right: 0
... baca sensor dan paparkan nilainya di sini ...
[wait] 50 milliseconds
Gunakan single press, bukan is pressed: ia dicetuskan sekali bagi setiap tekanan baharu walaupun butang ditahan. Kekalkan blok berasingan Button B as stepButton dalam ruang kerja dan pilih stepButton dalam syarat. Arahan berhenti berada dalam syarat selepas gerakan bermasa. Uji sekali di ruang kosong dan perhatikan selama tiga saat: robot mesti kekal berhenti sehingga tekanan baharu. Jika tiada gerakan, semak muat naik, butang dan ruang sebelum memanjangkan gerakan.
Editor bahasa Inggeris melabel blok tengah/kiri sebagai center sensor detect on his left; pilih center dan left dalam dua menunya.
Selepas syarat kedudukan, tambah
Read proximity sensors, cetakcenter sensor detect on his leftdan tunggu 300 ms. Gunakan sisi sensor yang sama. Dengan motor berhenti, ukur tiga kedudukan selamat pada jarak berbeza dari dinding yang sama; huraikan kedudukan kamera tanpa mereka jarak sentimeter. Jika serial tiada, bina keputusan LED di bawah sekarang dengan ambang percubaan 3, lalu rekod LED hidup/mati dan ambang itu tanpa mereka nombor. Kemudian pilih ambang berdasarkan jadual. Jika bacaan tidak membezakan kedudukan, rekodkan keputusan itu dan jelaskan mengapa penentukuran belum muktamad.```text
[Read proximity sensors]
if [center sensor detect on his left >= nombor pilihan anda]: [Set red led to HIGH] [Set blue led to LOW]
else: [Set red led to LOW] [Set blue led to HIGH]
[Change two motors speed] Left: 0 Right: 0
```
| Keadaan yang diperhatikan | Penderia yang digunakan | Bacaan (nombor atau kedudukan LED bertindak) | Perlu bertindak? | Catatan |
|---|---|---|---|---|
Pilih ambang amaran sementara menggunakan dua pemerhatian. Jika kedudukan tidak dapat dibezakan, jelaskan mengapa ambang belum disokong dan namakan ujian selamat seterusnya.
Program tindak balas yang selamat
18 min
Bina amaran jarak dengan robot pegun menggunakan ambang yang ditentukur. Hanya syarat kedudukan dibenarkan menggerakkan robot. Kedua-dua cabang amaran mengekalkan motor berhenti. Uji kedudukan lebih jauh dan lebih dekat yang selamat; tentukan sama ada LED membezakannya. Ambang yang tidak membezakan pemerhatian bermaksud penentukuran belum muktamad, bukan bukti pemanduan autonomi selamat.
[Read proximity sensors]
if [center sensor detect on his left >= nombor pilihan anda]:
[Set red led to HIGH]
[Set blue led to LOW]
else:
[Set red led to LOW]
[Set blue led to HIGH]
[Change two motors speed] Left: 0 Right: 0Adakah tindak balas berlaku terlalu awal, terlalu lewat atau tepat pada masanya? Nyatakan perkara yang akan anda laras: nilai ambang, kelajuan atau masa tunggu.
Huraikan satu batasan penderia atau ujian anda: kedudukan objek, bacaan tidak stabil, kedudukan robot, masa menunggu giliran atau pandangan kamera.
Hantaran bukti
9 min
Program tindak balas jarak
Hantar nilai ambang anda, tangkap layar atau huraian program dan satu pemerhatian daripada ujian ketika robot bertindak atau sepatutnya bertindak.
Jadikan pratonton ini satu sesi kelas sebenar
Teruskan ke LabsLand Teach untuk menggunakan pelajaran ini bersama pelajar dan menyemak akses akaun anda.
Kali pertama menggunakan LabsLand? Cipta akaun guru anda