Teach Pelajaran dengan makmal jarak jauh

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.

  • STM32 Nucleo (Arduino)
  • 55 min
  • Tingkatan 4–5 / pengenalan elektronik vokasional
  • Bahasa Melayu
  • Sistem terbenam

Log masuk dengan akaun pendidik untuk menyediakan sesi kelas. Pelajar menyertai dengan kod kelas.

Laluan isyarat daripada butang B1 pada PC5 melalui digitalRead pada permulaan gelung, pemilihan waitTime untuk delay dan keluaran RGB pada PA8, PA9 serta PA10.
STM32 Nucleo (Arduino)

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.

1

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?

2

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

Laluan isyarat daripada butang B1 pada PC5 melalui digitalRead pada permulaan gelung, pemilihan waitTime untuk delay dan keluaran RGB pada PA8, PA9 serta PA10.

Atur cara membaca B1 pada permulaan loop(), memilih satu waitTime dan menggunakan nilai itu untuk tiga saluran RGB dalam kitaran itu.

  1. Lancarkan makmal STM32 Arduino daripada blok ini dan buka tab editor main.ino dalam CodeIDE.

  2. 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 ms hingga 300 ms. Tempoh biasa ialah 500 ms.

  3. Cari TODO dalam fail; gantikan setiap TODO sebelum mengkompil. Simpan, kompil dan tunggu pengesahan berjaya. Kemudian muat naik dan tunggu pengesahan sekali lagi.

  4. Ujian 1 — B1 dilepaskan: perhatikan satu jujukan tiga warna penuh dan lengkapkan baris tidak ditekan.

  5. Ujian 2 — B1 ditekan dan ditahan: tahan B1 sepanjang satu jujukan penuh, kemudian lepaskannya dan lengkapkan baris ditekan. Rekod tempoh menunggu sebenar dalam ms.

  6. 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 HIGH atau LOW mengikut logik aktif pada aras LOW.
  • Dalam Tempoh menunggu, rekod nilai dalam ms yang 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.

3

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.

4

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.