Skip to content Skip to sidebar Skip to footer

Pemograman LED ATmega 16 menggunakan bahasa C (Antarmuka LED dengan C AVR )




Pemograman LED ATmega 16 menggunakan  bahasa C � pada artikel kali ini membahas tentang  cara pemograman LED menggunakan ATmega mulai dari LED berkedip, Running LED dan Animasi LED variatif. Skefo, LED (Light emitting dioda) adalah piranti elektronika yang prinsipnya memancarkan cahaya.  

LED banyak digunakan karena efisiensinya yang tinggi alias Intensitas cahayanya yang tinggi namun konsumsi arus yang rendah dibandingkan dengan lampu pijar maupun lampu CFL (compact Flourescent lamp) . 

LED memiliki 2 elekroda yaitu anoda dan katoda. Prinsipnya sederhana, ketika LED diberi bias maju (anoda terhubung dengan VCC dan katoa terhubung ke Ground)  maka LED akan menyala. Pada aplikasi mikrokontroller yang berbasis ATmega 16 LED digunakan sebagai media edukasi dengan visualisasi maupun penerapan pada alat uji.

AVR studio

Untuk aplikasi compiler digunakan aplikasi AVR studio. AVR studio dipilih karena lebih mudah dalam menulis listing program dan menyimpan project, didukung tools yang lengkap,Walaupun ukuran (size) dari avr studio lebih besar dari Codevision AVR. 

Dalam penulisannya AVR studio terdapat sedikit perbedaan, misal pada AVR studio untuk menggunakan delay maka penulisannya adalah �_delay_ms()� sedangkan Codevision AVR dituliskan �delay_ms()� saja. Namun perbedaan ini dapat dengan mudah disesuikan dengan cara penulisan Codevision avr




Skematik LED

Pada skema diatas menggunakan konfigurasi common anoda (anoda yang saling terhubung). Sehingga untuk menyalakan led harus diberi logika 0 atau negatif. Istilah lainnya LED tersebut adalah Aktif Low (aktif ketika diberi logika low). LED terhubung dengan PORTB atmega 16 namun dapat disesuikan pada project masing-masing

Skematik LED


Program Led Berkedip

Listing programnya adalah seperti berikut :

#include <avr/io.h>         // header standard AVR
#define F_CPU 12000000UL   //  set clock 12mhz
#include <util/delay.h>   //   delay

void main (void)
{
      
       DDRB=0xff;// set portb = output
       while (1)  //perulangan terus menerus

       {
        PORTB=0x00;      // LED nyala
        _delay_ms(1000); // delay 1000ms (1 detik)
        PORTB=0xff;
        _delay_ms(1000); // LED mati
       }
      
} // end program

FYI : tanda �//� adalah komentar program, artinya bukan bagian dari tubuh program hanya sebagai keterangan saja. Tdk ditulis maka tidak masalah

Program running led manual

Listing programnya adalah seperti ini :

#include <avr/io.h>         // header standard AVR
#define F_CPU 12000000UL   //  set clock 12mhz
#include <util/delay.h>   //   delay

void main (void)
{
      
       DDRB=0xff;// set portb = output
       while (1)
       {
        PORTB=0xfe;
        _delay_ms(1000);
        PORTB=0xfd;
        _delay_ms(1000);
        PORTB=0xfb;
        _delay_ms(1000);
        PORTB=0xf7;
        _delay_ms(1000);
        PORTB=0xef;
        _delay_ms(1000);
        PORTB=0xdf;
        _delay_ms(1000);
        PORTB=0xbf;
        _delay_ms(1000);
        PORTB=0x7f;
        _delay_ms(1000);
       }
      
}// end program

Pada Program diatas LED dinyalakan satu persatu mulai dari LED 1 sampai LED 8 dan akan berulang terus menerus (while). Program diatas langsung mengisi semua port (PORTB). Namun bisa juga diisi pe PORT misal PORTB.0=0; untuk menyalakan LED 1, dan PORTB.1=0;  untuk menyalakan LED 2 dan seterusnya. Cara seperti ini biasanya digunakan pada Codevision AVR.

Pemograman Running LED dengan variabel Array

Variabel Array adalah Variabel dengan satu nama namun memiliki banyak nilai di dalamnya. Fungsinya adalah menghemat dan memudahkan penulisan program. Misalnya :

Unsigned Char array[8]={a,b,c,d,e,f,g,h};

Pada contoh diatas terdapat variabel bernama array yang bertipe data unsigned char. Array tersebut berisi 8 nilai �[8]�  yaitu a,b,c,d,e,f,g,h yang disimpan mulai dari array[0] sampai array[7]. Misalkan kita menggunakan array[0], maka nilainya adalah �a� dan seterusnya.

Listing programnya adalah seperti ini :

#include <avr/io.h>         // header standard AVR
#define F_CPU 12000000UL   //  set clock 12mhz
#include <util/delay.h>   //   delay

unsigned char LED[8]={0xfe,0xfd,0xfb,0xf7,0xef,0xdf,0xbf,0x7f}; // variabel array LED

void main (void)
{     
       DDRB=0xff;// set portb = output
       char a=0; // membuat variabel a bernilai awal 0
      
              while (1)
              {
                     PORTB=LED[a];     // portb diisi nilai sesuai nilai variabel "a"
                     _delay_ms(1000); // delai 1 detik
                     a++;            // variabel a bertambah 1 (a=a+1) alias increment
                     if a(>7)a=0 ;  //  jika nilai a lebih dari 7 maka a=0        
              }
      
}// end program

Program animasi LED

Setelah menguasai 3 program sebelumnya sekarang adalah tugas anda membuat program LED animasi sendiri, tujuannya adalah untuk mengembangkan dan mengasah logika program. Banyak mastah berkata, pemograman itu gampang, LOGIKANYA yang susah. Kalau bukan kita sendiri yang berlatih program, maka akibatnya  akan terus menerus bergantung pada internet. Tetap semangat dalam mempelajari program, terima kasih.