Pelajaran Teach
STM32 dengan API Arduino (2/4): jujukan dan butang
Pelajar mengembangkan atur cara STM32 Arduino dengan beberapa LED dan input butang, kemudian menerangkan bagaimana masa jujukan dan keadaan butang mempengaruhi keluaran.
Log masuk dengan akaun pendidik untuk menyediakan sesi kelas. Pelajar menyertai dengan kod kelas.
Kali pertama menggunakan LabsLand? Cipta akaun guru anda
Hasil pembelajaran
Mencipta jujukan keluaran menggunakan senarai pin.
Membaca butang aktif pada aras LOW dan menggunakannya untuk mengubah tingkah laku.
Merekod dua keadaan ujian dan menerangkan keputusan atur cara.
Pratonton aktiviti pelajar
Kandungan aktiviti
Pratonton sahaja. Dalam sesi kelas, pelajar boleh mengisi jawapan dan menyerahkan hasil kerja mereka kepada guru.
Butang aktif pada aras LOW
8 min
Dalam susunan ini, butang yang akan digunakan disambungkan kepada pin PC5. Butang ini aktif pada aras LOW: apabila ditekan, digitalRead(PC5) mengembalikan LOW; apabila ia tidak ditekan, ia mengembalikan HIGH.
Dalam antara muka makmal, gunakan kawalan berlabel Button 1 atau B1. Tekan dan pegang sambil memerhati sekurang-kurangnya satu jujukan penuh, kemudian lepaskannya sebelum ujian dengan butang dilepaskan. Klik yang terlalu singkat mungkin berakhir sebelum atur cara membacanya.
Apabila butang 1 ditekan, perbandingan manakah yang mewakili input aktif pada aras LOW?
Jujukan dengan mod pantas
27 min
Atur cara ini menggunakan tiga keluaran RGB yang telah disambungkan dalam susunan makmal jarak jauh. setup() menetapkan butang sebagai input dan setiap pin RGB sebagai keluaran. loop() membaca butang sekali pada permulaan setiap kitaran tiga warna, memilih tempoh menunggu dalam milisaat dan menghidupkan setiap saluran mengikut jujukan. Tekanan butang semasa satu kitaran hanya berkuat kuasa pada kitaran seterusnya; tahan B1 sehingga kitaran baharu bermula. Fungsi pembantu turnOffAll() mengumpulkan tiga tindakan berulang di bawah satu nama yang jelas.
Butang menetapkan masa bagi kitaran RGB seterusnya
Atur cara membaca B1 pada permulaan loop(), memilih satu waitTime dan menggunakan nilai itu untuk tiga saluran RGB dalam kitaran itu.
Lancarkan makmal STM32 Arduino daripada blok ini dan buka tab editor
main.inodalam CodeIDE.Tampalkan atur cara pemula di bawah. Gantikan TODO 1 dengan aras perbandingan yang bermaksud “ditekan” dan TODO 2 dengan tempoh menunggu yang jelas lebih pantas, daripada
100 mshingga300 ms. Tempoh biasa ialah500 ms.Cari
TODOdalam fail; gantikan setiap TODO sebelum mengkompil. Simpan, kompil dan tunggu pengesahan berjaya. Kemudian muat naik dan tunggu pengesahan sekali lagi.Ujian 1 — B1 dilepaskan: perhatikan satu jujukan tiga warna penuh dan lengkapkan baris
tidak ditekan.Ujian 2 — B1 ditekan dan ditahan: tahan B1 sepanjang satu jujukan penuh, kemudian lepaskannya dan lengkapkan baris
ditekan. Rekod tempoh menunggu sebenar dalamms.Jangan ubah jujukan sehingga kedua-dua baris awal dan soalan penerangan tepat di bawah jadual telah lengkap.
#include <Arduino.h>
const int RGB_RED = PA8;
const int RGB_GREEN = PA9;
const int RGB_BLUE = PA10;
const int BUTTON_1 = PC5; // Aktif LOW: ditekan == LOW
void turnOffAll() {
analogWrite(RGB_RED, 0);
analogWrite(RGB_GREEN, 0);
analogWrite(RGB_BLUE, 0);
}
void setup() {
pinMode(BUTTON_1, INPUT);
pinMode(RGB_RED, OUTPUT);
pinMode(RGB_GREEN, OUTPUT);
pinMode(RGB_BLUE, OUTPUT);
}
void loop() {
bool pressed = digitalRead(BUTTON_1) == TODO_PRESSED_LEVEL; // TODO 1: aras perbandingan bagi butang aktif pada LOW
int waitTime = 500;
if (pressed) {
waitTime = TODO_FAST_WAIT_MS; // TODO 2: selang pantas yang boleh dilihat, dalam ms
}
turnOffAll();
analogWrite(RGB_RED, 180);
delay(waitTime);
turnOffAll();
analogWrite(RGB_GREEN, 180);
delay(waitTime);
turnOffAll();
analogWrite(RGB_BLUE, 180);
delay(waitTime);
}
Isi jadual selepas memuat naik atur cara dan menguji butang. Gunakan dua baris sahaja dan biarkan baris lain kosong jika TEACH memaparkan lebih banyak:
- Baris 1: butang tidak ditekan.
- Baris 2: butang ditekan.
- Dalam Nilai digitalRead yang dijangkakan, tulis
HIGHatauLOWmengikut logik aktif pada aras LOW. - Dalam Tempoh menunggu, rekod nilai dalam
msyang digunakan oleh atur cara. - Dalam Penjelasan ringkas, sambungkan keadaan butang dengan kelajuan yang diperhatikan.
| Keadaan butang | Nilai digitalRead yang dijangkakan | Tempoh menunggu ms | Jujukan yang diperhatikan | Penerangan ringkas |
|---|---|---|---|---|
Terangkan bagaimana anda mengetahui bahawa butang mengubah tingkah laku atur cara. Gunakan dua baris jadual sebagai bukti.
Ubah suai jujukan selepas ujian awal
10 min
Hanya selepas dua baris awal selesai, tukar blok warna pertama dengan blok warna terakhir supaya jujukan bermula dengan biru dan berakhir dengan merah. Jangan ubah sebarang tempoh menunggu. Simpan, kompil, muat naik dan ulang kedua-dua keadaan butang. Cabaran berasingan ini mengesahkan bahawa susunan warna dan masa yang dikawal oleh butang ialah dua peraturan berbeza.
Dua blok kod yang manakah anda alihkan? Nyatakan susunan warna baharu dan sahkan, dengan satu pemerhatian ketika B1 dilepaskan dan satu ketika B1 ditahan, sama ada peraturan masa masih berfungsi.
Hantar kod anda
10 min
Serahkan main.ino akhir anda
Simpan main.ino sebelum melampirkannya. Tangkapan mesti menunjukkan versi akhir, susunan warna yang telah diubah dan tiada token TODO yang tertinggal.
Mengapakah butang aktif pada aras LOW boleh mengelirukan pada mulanya? Tulis satu peraturan ringkas yang membantu anda mengelakkan kesilapan.
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