FALLING, RISING, dan CHANGE
Termasuk bagian Pengaturan Waktu Tanpa Delay dalam perjalanan Arduino di Coddy. Pelajaran 13 dari 18.
Uno memiliki dua pin yang dapat memicu interupsi: pin 2 dan pin 3. Tombol yang membutuhkan interupsi harus dihubungkan ke salah satunya. Di dalam chip, keduanya adalah interupsi 0 dan interupsi 1, jadi biarkan digitalPinToInterrupt() mengubah pin menjadi nomornya. attachInterrupt(3, ...) meminta interupsi 3, yang tidak dimiliki Uno, sehingga tidak terjadi apa-apa.
Bagian terakhir dari attachInterrupt() menentukan perubahan yang akan ditanggapi:
FALLING: pin berubah dariHIGHkeLOW(dengan pull-up, saat tombol ditekan)RISING: pin berubah dariLOWkeHIGH(saat tombol dilepas)CHANGE: salah satu perubahan tersebut
Dengan CHANGE, ISR berjalan saat tombol ditekan dan saat tombol dilepas. ISR membaca pin untuk mengetahui perubahan mana yang terjadi:
void onChange() {
if (digitalRead(buttonPin) == LOW) {
// tombol ditekan
} else {
// tombol dilepas
}
}
attachInterrupt(digitalPinToInterrupt(buttonPin), onChange, CHANGE);Tantangan
MudahTombol terhubung ke pin 3, dan loop() sibuk dengan pekerjaan yang lambat. Buat LED pada pin 13 mengikuti tombol seketika:
- di
onChange(), baca tombolnya:LOWmenyalakan LED,HIGHmematikannya - pasang
onChange()ke pin tombol denganCHANGE
Tekan Jalankan, tahan dan lepaskan tombol, lalu tekan Periksa.
Coba sendiri
const int ledPin = 13;
const int buttonPin = 3;
// Berjalan setiap kali pin tombol berubah.
void onChange() {
// Nyalakan LED saat tombol ditekan, matikan saat tombol dilepas.
}
void setup() {
pinMode(ledPin, OUTPUT);
pinMode(buttonPin, INPUT_PULLUP);
Serial.begin(9600);
// Hubungkan onChange() ke pin tombol di sini.
}
void loop() {
// Proses yang lambat: biarkan seperti ini.
Serial.println("working");
delay(2000);
}
Pelajaran ini berisi kuis singkat. Mulai pelajarannya untuk menjawab kuis dan melacak progresmu.
Semua pelajaran di Pengaturan Waktu Tanpa Delay
1millis()
Jam millis()Waktu dalam unsigned longLED Berkedip Tanpa JedaDua LED, Dua KecepatanLED Berkedip Saat Tombol Mengubah StatusLampu dengan Pengatur Waktu4Pengaturan Waktu yang Presisi
Mengukur dengan micros()Saat millis() Berputar KembaliStopwatch Tombol3Interupsi
Tekanan Tombol yang Luput dari LoopFALLING, RISING, dan CHANGEBerbagi dengan volatileHitung Tekanan Tombol dengan InterupsiLatihan sendiri: Playground Arduino