Pelajaran Teach
Pengaturcaraan visual dengan Arduino sebenar (3/4): input dan keputusan
Murid menggunakan blok visual untuk membaca input, membuat keputusan berdasarkan nilai ambang dan mengesahkan tingkah laku LED pada papan Arduino sebenar.
Kali pertama menggunakan LabsLand? Cipta akaun guru anda
Hasil pembelajaran
Membaca input dan memastikan nilainya berubah sebelum menentukan output.
Menggunakan syarat
if / elsedengan perbandingan dan nilai ambang.Membezakan input digital dengan input analog melalui contoh sebenar.
Pratonton aktiviti pelajar
Kandungan aktiviti
Pratonton sahaja. Dalam sesi kelas, pelajar boleh mengisi jawapan dan menyerahkan hasil kerja mereka kepada guru.
Input, nilai ambang dan keputusan
10 min
Input ialah maklumat dari dunia luar yang dibaca oleh papan. Terdapat dua
jenis:
- Input digital: hanya mempunyai dua keadaan, seperti butang ditekan / tidak ditekan (atau HIGH / LOW).
- Input analog: mempunyai banyak nilai yang mungkin. Pada papan Arduino Uno, bacaan analog memberikan nombor antara 0 hingga 1023 (contohnya kedudukan potensiometer, iaitu tombol yang diputar).
Penderia ialah komponen yang menghasilkan salah satu bacaan tersebut.
Nilai ambang ialah nilai pemisah yang menukar bacaan analog (banyak nombor)
kepada keputusan ya/tidak. Contoh: "jika bacaan lebih besar atau sama dengan
500, nyalakan LED; jika tidak, padamkan LED." Dalam contoh ini, 500 ialah nilai
ambang.
Ingat struktur editor: Arduino run first berjalan sekali pada permulaan;
Arduino loop forever berulang tanpa henti. Bacaan input dan keputusan perlu
diletakkan dalam gelung supaya papan menyemak nilai berkali-kali.
Apakah maksud menggunakan nilai ambang 500 bagi bacaan analog yang berjulat dari 0 hingga 1023?
Nyatakan satu perbezaan antara input digital dengan input analog.
Baca dan semak input
16 min
Sebelum membuat keputusan, pastikan anda dapat membaca input dan nilainya berubah. Semakan ini penting: jika input tidak berubah, keputusan program juga
tidak akan berfungsi.
Buka
arduino-visual-board.Laluan utama (analog): dalam
Input/Output, gunakanread analog pin#dan mulakan dengan pinA0.Untuk *melihat* bacaan, anda boleh menggunakan
Commssecara pilihan: tambahSetup serial 9600 bpsdan blokprintyang mengandungi bacaan. Jika makmal tidak memaparkan output bersiri, itu tidak menjadi masalah: dalam langkah seterusnya anda akan menggunakan LED sebagai isyarat.Tekan
Verify / compiledanUpload into device.Ubah input melalui kawalan makmal (putar potensiometer / gerakkan kawalan input) dan semak sama ada bacaan berubah.
Jika bacaan tidak berubah apabila input digerakkan, cuba pin analog lain (
A0hinggaA5) sehingga bacaan berubah. Ini mengesahkan pin yang membaca input anda.
Isi jadual dengan satu baris bagi setiap kedudukan input yang diuji. Gunakan
sekurang-kurangnya tiga baris: rendah, pertengahan dan tinggi; biarkan baris
tambahan kosong. Dalam setiap baris, rekod kedudukan input, pin yang digunakan,
bacaan atau kesan yang dapat dilihat, dan sama ada nilainya berubah apabila anda
menggerakkan input.
| Kedudukan / keadaan input | Pin yang digunakan | Bacaan atau kesan yang diperhatikan | Berubah apabila input digerakkan? |
|---|---|---|---|
Buat keputusan
22 min
Sekarang, tambah syarat if / else daripada kategori Logic yang
menggunakan bacaan dan nilai ambang untuk menyalakan atau memadamkan LED terbina
dalam.
Tambah blok
if / else.Dalam syarat, bandingkan bacaan analog yang telah disahkan dengan nilai ambang, contohnya
read analog pin# A0≥500. Jika anda mengesahkan pin analog lain, gunakan pin itu dan bukannyaA0.Di dalam ruang
do(jika benar), letakkanset built-in LEDkepadaHIGH.Di dalam ruang
else, letakkanset built-in LEDkepadaLOW.Tambah
wait 100 millisecondsdi hujung supaya bacaan diulang secara stabil.Tekan
Verify / compile, kemudianUpload into device, dan uji dengan menggerakkan input.Tentukur: jika LED tidak bertukar pada kedudukan yang anda mahu, laraskan nilai ambang (naikkan atau turunkan 500) dan ulangi sehingga LED menyala dan padam pada kedudukan yang dijangka.
Program anda sepatutnya lebih kurang seperti berikut:
Rajah rujukan bagi keputusan. Bacaan A0 dibandingkan dengan nilai ambang,
dan LED berubah mengikut cabang do atau else.
Arduino loop forever:
if [read analog pin# [A0]] [≥] [500]
do:
[set built-in LED] [HIGH]
else:
[set built-in LED] [LOW]
[wait] 100 milliseconds
Rujukan ini menggunakan A0 kerana itulah titik mula yang biasa. Jika
semakan input menunjukkan pin analog lain, kekalkan bentuk program yang sama
tetapi gantikan A0 dengan pin yang telah anda sahkan.
Terangkan syarat penuh anda: input yang dibaca, nilai ambang (atau keadaan) yang dibandingkan, dan output yang berubah.
Huraikan dua ujian: satu ujian yang menyalakan LED dan satu ujian yang memadamkannya. Sertakan kedudukan/keadaan input dan, jika anda menentukurnya, nilai ambang akhir.
Jika tiada perubahan, nyahpepijat
7 min
Jika LED tidak berubah apabila anda menggerakkan input, tulis tiga semakan mengikut urutan yang akan anda lakukan sebelum meminta bantuan (fikirkan pin bacaan, nilai ambang dan sama ada program telah dimuat naik).