Pelajaran Teach
Arduino asas 4/4: bina pengawal mini
Gabungkan potensiometer, servo, keputusan dan LED dalam pengawal kecil yang dijalankan pada Arduino Uno sebenar.
Kali pertama menggunakan LabsLand? Cipta akaun guru anda
Hasil pembelajaran
Menggabungkan input analog, pernyataan bersyarat dan dua output.
Menggunakan pustaka Servo dalam atur cara ringkas.
Menerangkan tingkah laku sistem yang diprogramkan.
Pratonton aktiviti pelajar
Kandungan aktiviti
Pratonton sahaja. Dalam sesi kelas, pelajar boleh mengisi jawapan dan menyerahkan hasil kerja mereka kepada guru.
Rancang sebelum mengubah kod
8 min
Anda mempunyai tiga komponen: potensiometer 1, sebuah servo dan LED 1. Dalam projek ini, potensiometer akan mengawal kedudukan servo, manakala LED akan bertindak sebagai amaran apabila servo melepasi sudut tertentu.
Sudut servo bergerak dari 0 hingga 180 darjah. Ambang rendah seperti 60 darjah akan menyalakan LED lebih awal, berhampiran satu pertiga pertama pergerakan. Ambang 90 darjah akan menyalakannya pada pertengahan pergerakan. Ambang lebih tinggi seperti 120 darjah hanya akan menyalakannya apabila servo sudah berada dalam satu pertiga terakhir pergerakan. Sebelum mula mengatur cara, pilih ambang yang menjadikan LED berguna untuk jenis amaran yang anda mahu.
Penukar analog-ke-digital lalai Arduino Uno menggunakan skala 0-1023 untuk 0-5 V. Potensiometer makmal ini mencapai 3.3 V, dengan bacaan kira-kira 675. Atur cara menentukur nilai maksimum sebenar ini kepada julat penuh servo, iaitu 0-180 darjah.
Pada sudut berapakah anda akan menyalakan LED: 60, 90, 120 darjah atau nilai lain? Terangkan sebab ambang itu berguna.
Atur cara pengawal
22 min
Sekarang bandingkan idea anda dengan penyelesaian ini: potensiometer mengawal sudut servo dari 0 hingga 180 darjah, dan LED 1 menyala apabila sudut melebihi 90 darjah. Muat naik atur cara. Kemudian ubah syarat supaya LED hanya menyala mulai 120 darjah. Baris utama terletak dalam if: jangan ubah pin LED atau pin servo kecuali anda tahu sebabnya.
#include <Servo.h>
const int pot1 = A0;
const int servoPin = 3;
const int led1 = 8;
const int potMaxReading = 675;
Servo servo;
void setup() {
pinMode(led1, OUTPUT);
servo.attach(servoPin);
}
void loop() {
int reading = analogRead(pot1);
int calibratedReading = constrain(reading, 0, potMaxReading);
int angle = map(calibratedReading, 0, potMaxReading, 0, 180);
servo.write(angle);
if (angle > 90) {
digitalWrite(led1, HIGH);
} else {
digitalWrite(led1, LOW);
}
delay(20);
}Buka makmal Arduino.
Muat naik atur cara asas dan perhatikan servo.
Putar potensiometer 1 secara perlahan-lahan.
Tukar
angle > 90kepadaangle > 120, kemudian muat naik semula.Simpan fail sebelum mengambil petikan kod.
Hantar kod anda
Ambil petikan kod akhir yang menggunakan ambang 120 darjah. Sebelum melampirkannya, simpan main.ino dalam persekitaran makmal. Petikan itu mesti menunjukkan atur cara yang benar-benar mahu anda serahkan untuk semakan guru.
Rumuskan projek
10 min
Terangkan sistem menggunakan tiga perkataan ini: input, keputusan dan output. Anda juga boleh menyatakan perkara yang ingin anda tambah baik jika mempunyai lebih banyak masa.