Proses manufaktur
| × | 1 | ||||
| × | 1 | ||||
| × | 1 |
Ikhtisar
Jika Anda perlu menghitung waktu dengan akurat, Anda perlu menggunakan timer, tetapi biasanya tidak mudah menggunakan timer internal Arduino, jadi dalam tutorial ini saya mencoba menjelaskan cara menggunakannya dengan cara yang mudah.
Sangat penting untuk menggunakan timer karena selama fungsi delay() Anda tidak dapat melakukan apa-apa, tetapi dengan timer Anda dapat melakukan segalanya karena ketika saatnya tiba, itu akan mengaktifkan interupsi.
Saya menggunakan TIMER0 karena merupakan timer yang paling mudah, mungkin kedepannya saya akan menjelaskan tentang timer lainnya.
Cara Kerja
Hal pertama yang perlu Anda lihat adalah datasheet ATmega328P.
Ini adalah diagram blok penghitung, dan dengan melihat ini Anda dapat memahami cara kerjanya.
Prescaler menerima pulsa dari siklus clock dan kemudian meneruskannya ke Logika Kontrol, oleh karena itu Logika Kontrol menambah register TCNTn sebesar 1.
Sekarang kita dapat membandingkan nilai TCNTn dengan nilai tertentu. Ketika register TCNTn mencapai nilai ini, Anda tahu bahwa itu melewati waktu tertentu.
Metode ini disebut mode CTC untuk "Hapus Timer saat Bandingkan". Nilai register TCNTn dibandingkan dengan register OCRn, ketika terjadi kecocokan perbandingan, TOVn menghasilkan interupsi.
Hal penting lainnya adalah prescaler, dengan ini Anda dapat membuat pembagian jam yang berbeda, sebenarnya 16MHz terlalu banyak tetapi, berkat prescaler, Anda dapat membuat beberapa submultiple darinya. Ini tergantung pada konfigurasi register TCCR0B.
Hal penting lainnya adalah menentukan nilai register OCRn untuk menghitung waktu tertentu, Anda memerlukan sedikit matematika.
Saya tahu bahwa semua ini mungkin tampak terlalu rumit, tetapi saya yakin kode di bawah ini akan menjawab setiap pertanyaan.
Dalam hal ini, kami mengaktifkan permintaan interupsi setiap 0,001 detik.
TCCR0A|=(1<
Penting untuk mengatur prescaler di akhir karena setelah instruksi ini timer mulai menghitung, jika Anda perlu menghentikannya, Anda harus mereset semua bit TCCR0B.
Di bawah ini ada contohnya.
/*Program ini menghidupkan dan mematikan LED pada pin 13 setiap 1 detik menggunakan timer internal*/int timer=0;bool state=0;void setup() { pinMode(13,OUTPUT); TCCR0A=(1<=1000){ state=!state; pengatur waktu =0; } digitalWrite(13,status); }ISR(TIMER0_COMPA_vect){ //Ini adalah timer permintaan interupsi++;}
Proses manufaktur
Komponen dan persediaan Arduino UNO × 1 Sensor Kedekatan × 1 Kabel jumper (generik) × 1 Tentang proyek ini Halo, teman-teman! Hari ini saya akan menunjukkan kepada Anda bagaimana menghubungkan sensor IR dengan Arduino UNO. Jadi mari kita mulai! Komp
Komponen dan persediaan Arduino MKR GSM 1400 × 1 SORACOM Air Global IoT SIM × 1 Arduino MKR MEM Shield × 1 Suhu dan Kelembaban GY21 × 1 Sensor Sinar UV SI1145 Adafruit × 1 Sensor Kelembaban Tanah SparkFun (dengan Terminal Sekrup) × 1
Komponen dan persediaan Arduino UNO × 1 Sensor Ultrasonik - HC-SR04 (Generik) × 1 Tentang proyek ini Visualisasi Layar Radar untuk HC-SR04 Kode Arduino: Mengirim pembacaan sensor untuk setiap derajat yang digerakkan oleh nilai servo yang dikirim ke port serial un
Selamat datang di Tutorial Arduino ketujuh dari Seri Tutorial Arduino kami. Dalam tutorial ini kita akan belajar bagaimana menghubungkan Arduino ke Matlab dan bagaimana mereka berkomunikasi menggunakan Port Serial. Kami juga akan membuat contoh di mana kami akan menggunakan Matlab untuk mengontrol A