Di jejakku sebelumnya sudah pernah membuat running led atau led berjalan Berbasis PLC dengan menggunakan program ladder CX-Programmer dan Zelio Soft. Pada jejak kali ini akan mencoba membuat running led berbasis mikrokontroler yang memiliki dua moda running led.
Membuat Running LED tanpa Tombol
List Program :
#include <mega16.h> #include <delay.h> #define LED1 PORTA.3 #define LED2 PORTA.4 #define LED3 PORTC.1 #define LED4 PORTC.0 void main(void) { DDRA=0xFF; PORTA=0x18; DDRC=0xFF; PORTC=0x03; while (1) { LED1=0; LED2=1; LED3=1; LED4=1; delay_ms(500); LED1=1; LED2=0; LED3=1; LED4=1; delay_ms(500); LED1=1; LED2=1; LED3=0; LED4=1; delay_ms(500); LED1=1; LED2=1; LED3=1; LED4=0; delay_ms(500); } }
Membuat Running LED dengan Tombol
List Program :
#include <mega16.h> #include <delay.h> int i=0; #define LED1 PORTA.3 #define LED2 PORTA.4 #define LED3 PORTC.1 #define LED4 PORTC.0 #define START PIND.6 void main(void) { DDRA=0xFF; PORTA=0x18; DDRC=0xFF; PORTC=0x03; DDRD=0x00; PORTD=0x40; while (i<1) { if (START==0) { while (i<1) { LED1=0; LED2=1; LED3=1; LED4=1; delay_ms(500); LED1=1; LED2=0; LED3=1; LED4=1; delay_ms(500); LED1=1; LED2=1; LED3=0; LED4=1; delay_ms(500); LED1=1; LED2=1; LED3=1; LED4=0; delay_ms(500); } } else { LED1=1; LED2=1; LED3=1; LED4=1; } } }
Membuat Running LED dengan Moda yang Berbeda
Moda 1 dirancang agar ketiga led menyala bergantian atau setelah led 1 menyala lalu padam, kemudian led 2 menyala lalu padam, kemudian led 3 menyala lalu padam, dan kemudian kembali ke led 1.
Moda 2 dirancang agar ketiga led menyala berurutan atau setelah led 1 menyala, kemudian led 2 menyala, kemudian led 3 menyala, dan kemudian kembali ke led 1.
Berikut ini bentuk flowchart program dari running led yang akan dibuat.
Rangkaian pengendali Running LED yang akan dibuat sebagai berikut:
Atau rangkaian pengawatannya seperti pada gambar di bawah ini.
Kemuadian dibuatlah program Pengendali sesuai diagram alir di atas, untuk jejak ini menggunakan Bahasa C dengan menggunakan bantuan perangkat lunak CodeVision AVR seperti daftar program di bawah.
List Program :
#include <mega16.h> #include <delay.h> int i=0; #define MODA1 PINA.0 #define MODA2 PINA.1 #define STOP PINA.2 #define LEDM1 PORTC.0 #define LEDM2 PORTC.1 #define LED1 PORTD.0 #define LED2 PORTD.1 #define LED3 PORTD.2 #define ON 0 #define OFF 1 void main(void) { DDRA=0x00; PORTA=0x07; DDRC=0x03; PORTC=0x03; DDRD=0x07; PORTD=0x07; while (1) { if (MODA1 == 0) { LEDM1 = ON; LEDM2 = OFF; while (i<1) { LED1 = ON; LED2 = OFF; LED3 = OFF; delay_ms(1000); if (STOP == 0){break;} LED1 = OFF; LED2 = ON; LED3 = OFF; delay_ms(1000); if (STOP == 0){break;} LED1 = OFF; LED2 = OFF; LED3 = ON; delay_ms(1000); if (STOP == 0){break;} } } if (MODA2 == 0) { LEDM1 = OFF; LEDM2 = ON; while (i<1) { LED1 = ON; LED2 = OFF; LED3 = OFF; delay_ms(1000); if (STOP == 0){break;} LED1 = ON; LED2 = ON; LED3 = OFF; delay_ms(1000); if (STOP == 0){break;} LED1 = ON; LED2 = ON; LED3 = ON; delay_ms(1000); if (STOP == 0){break;} LED1 = OFF; LED2 = OFF; LED3 = OFF; delay_ms(100); } } } }
Setelah program dibuat di aplikasi CodeVision AVR kemudian masukan file program format EXE ke komponen ATMEGA seperti gambar di bawah.
Masukan link file format EXE bagian Program File. Pilih CKSEL Fuses : (0000) Ext Clock dan Clock Frekuensi sesuai besar Kristal yang digunakan pada jejak ini sebesar 12MHz. Terakhir klik OK.
Hasilnya bisa dilihat dapat video simulasi di bawah ini.