Daftar Isi:

Arduino - Interupsi Berkala: 4 Langkah
Arduino - Interupsi Berkala: 4 Langkah

Video: Arduino - Interupsi Berkala: 4 Langkah

Video: Arduino - Interupsi Berkala: 4 Langkah
Video: Tutorial Pemrograman Arduino [Medium] - Cara Kerja Interrupt di Arduino (1) 2024, November
Anonim
Arduino - Interupsi Berkala
Arduino - Interupsi Berkala

Instruksi ini adalah tentang menggunakan interupsi periodik untuk pengaturan waktu dalam program Arduino. Ini adalah langkah untuk programmer Arduino pemula yang tahu bahwa Arduino dapat melakukan lebih banyak, tetapi tidak cukup tahu bagaimana mewujudkannya.

Jika ada masalah kinerja, saya berasumsi bahwa Anda menggunakan satu atau lebih fungsi delay(). Triknya adalah dengan menyingkirkan fungsi delay() dan menggantinya dengan interupsi. Fungsi delay() memaksa Arduino untuk tidak melakukan apa-apa sambil menunggu delay() selesai. Menggunakan interupsi memungkinkan program Anda untuk melakukan hal-hal lain sambil menunggu akhir penundaan. Biasanya ada banyak waktu mati yang tidak digunakan yang dapat digunakan untuk hal-hal lain saat menggunakan delay(). Menggunakan interupsi memecahkan masalah ini.

Langkah 1: Interrupt Handler

1. Tambahkan pengendali interupsi ke program Anda. Cukup salin dan tempel di suatu tempat di atas setup();

const unsigned long TIMER0_COUNT = 500; // Interval pengatur waktu 500 mdtk

// TIMER0 interrupt handler volatil waktu bool = false; ISR(TIMER0_COMPA_vect) { hitung panjang statis tanpa tanda tangan = 0; if (++hitungan > TIMER0_COUNT) { hitung = 0; waktu = benar; // waktu disetel ke true setiap TIMER0_COUNT md } // (waktu perlu dihapus dalam rutinitas utama) }

Langkah 2: Tetapkan Interval Waktu Berkala

2. Atur interval waktu. Rutinitas ini mendukung interupsi TIMER0, yang diatur untuk diaktifkan setiap ~1 mdtk.

"Interval" Anda adalah jumlah interupsi TIMER0 untuk diproses. Setiap interval adalah ~1 mdtk, jadi Anda benar-benar mengatur berapa banyak interupsi TIMER0 untuk dihitung sebelum mengaktifkan interval Anda. TKI, atur variabel TIMER0_COUNT ke berapa milidetik yang ingin Anda tunggu. Misalnya, gunakan 500 untuk satu setengah detik. Gunakan 3000 selama 3 detik.

Langkah 3: Inisialisasi Interupsi

3. Tambahkan kode "Inisialisasi TIMER0" ke metode setup() Anda. Sekali lagi, cukup salin dan tempel di setup().

// *** inisialisasi TIMER0 ***

kli(); // matikan semua interupsi TIMSK0 = 0; // matikan timer0 untuk jitter yang lebih rendah OCR0A = 0xBB; // jumlah interupsi sewenang-wenang TIMSK0 |= _BV(OCIE0A); // kembali ke interupsi sei(); // nyalakan kembali interupsi

Langkah 4: Tempat Menambahkan Kode Anda

4. Tambahkan kode "time check" ke metode loop() Anda. Salin dan tempel di loop().

jika (waktu) {

waktu = salah; // lakukan sesuatu di sini }

"Waktu = salah;" garis itu penting. Tanpa baris ini, baris "lakukan sesuatu di sini" akan dieksekusi setiap kali program mengeksekusi loop().

Tentu saja, Anda mengganti aktivitas Anda sendiri di baris "lakukan sesuatu di sini". Mulailah dengan mencetak beberapa teks atau mem-flash LED.

Kamu sudah selesai!

Direkomendasikan: