21/10/2022
Artikel ini adalah pengembangan dari artikel “Lampu Kedip Dengan Model Finite State Machine“.
Pada artikel tersebut pewaktuan 1 detik menggunakan fungsi delay() dari Arduino. Pada artikel ini
digunakan Timer 1 untuk mendapatkan perioda 1 detik untuk eksekusi Finite State Machine (FSM).
Spesifikasi
Sistem yang dibuat adalah lampu kedip, dengan perioda 2 detik.
Perangkat Keras
Perangkat lunak dengan Arduino Nano ATmega328. Output dengan LED yang diseri dengan resistor
pembatas arus. Nilai resistor tidak kritis. Pada percobaan ini dipakai nilai resistor 1000 ohm. LED
disambung ke port D3 pada Arduino Nano.
Model Sistem
Model FSM untuk lampu kedip adalah sebagai berikut.
Perangkat Lunak
Pada sistem ini diperlukan pewaktuan (timing) agar lampu berkedip dengan frekuensi 0,5 Hz. Untuk itu
diperlukan FSM yang dihitung/dipanggil setiap 1 detik. Untuk membuat pemanggilan periodik seperti ini
dapat dilakukan dengan beberapa cara sebagai berikut:
interupsi timer
Interupsi Timer 1 dipanggil setiap detik oleh periferal Timer 1 pada Arduino.
Untuk instalasi dengan library manager, cari library timerone dari Sketch -> Include Library -> Manage
Libraries
Bagian Awal
#include <TimerOne.h>
#define ON 100
#define OFF 101
#define LED_OUTPUT 3
int state = OFF;
Implementasi Inisialisasi
void setup() {
int output = 0;
pinMode(LED_BUILTIN, OUTPUT);
pinMode(LED_OUTPUT, OUTPUT);
Serial.begin(115200);
fsm_init(&state,&output);
fsm_output(output);
Timer1.initialize(1000000); // delay dalam microsecond
Timer1.attachInterrupt(ISR_Timer1);
}
Implementasi FSM
Implementasi ini serupa dengan di artikel “Lampu Kedip Dengan Model Finite State Machine“
pada sistem sesungguhnya (production), bagian monitoring ini tidak wajib ada.
void ISR_Timer1(void)
{
int output = 0;
fsm(&state, &output);
fsm_output(output);
Serial.print("state: ");
Serial.print(state);
Serial.print(" output: ");
Serial.print( output);
Serial.println();
}
Pengujian
Pengujian dilakukan dengan menjalankan program, kemudian mengamati kedipan lampu dan output ke
port serial.
Pada serial monitor Arduino kita dapat mengaktifkan timestamp, sehingga kita dapat mengecek apakah
pewaktuan pada sistem ini sudah sesuai dengan yang spesifikasi.
Related Posts:
1. Lampu Kedip Dengan Model Finite State Machine
2. Prosesor untuk kuliah Pengolahan Sinyal Digital
3. Lampu On Off Dengan 1 Sakelar
4. Lampu Penyeberangan Jalan Dengan Extended State Machine
5. Lampu kedip dengan duty cycle tertentu menggunakan model finite state machine
6. Lampu kedip dengan extended state machine