Sabtu, 14 Juli 2012

ANIMASI LED


Pada Application Note kali ini saya akan membahas bagaimana cara menyalakan LED agar pingpong dari kiri-kanan, kanan-kiri dengan kecepatan yang berbeda. Program ini saya tulis dengan CV AVR. Untuk Minimum Systemnya saya menggunakan DT-AVR LCMS dari Innovative Electronics. Sedangkan untuk Downloadernya pake produk saya sendiri “B10 AVR USB In System Programmer”.


Hubungkan Power Supply 12V DC pada Terminal VIN DT-AVR Low Cost Miro System. Hubungkan LED Tester pada PORT C DT-AVR Low Cost Micro System. Berikut Potongan programnya :

/*****************************************************
Project : Belajar MIKRO dengan CV AVR
Version :
Date    : 16/06/2012
Author  : ANDRI SASMITO
Company : B10 ELECTRONICS
Comments:


Chip type               : ATmega8535
Program type            : Application
AVR Core Clock frequency: 11,059200 MHz
Memory model            : Small
External RAM size       : 0
Data Stack size         : 128
*****************************************************/

#include <mega8535.h>                      //Menggunakan Mikrokontroler AVR ATMega8535
#include <delay.h>                         //Memasukkan fungsi pustaka delay

// Declare your global variables here
unsigned char led;                           //Mendeklarasikan Variable global

void main(void)                            //Program Utama
{

PORTC=0x00;                                //Output pada PORT C Aktif Low
DDRC=0xFF;                                 //PORTC dikonfigurasikan sbg OUTPUT

while (1)                                  //Fungsi looping terus
      {
        led=0x01;                          //nilai awal PORT C
        do
        {
            PORTC=~led;                    //nilai pd PORT C dikomplemen
            delay_ms(50);                  //tunda 50ms
            led <<=1;                      //nilai pd PORT C geser kanan
        }
            while(led!=0x00);              //Fungsi akan berjalan jika nilai led >< 0
       
        led=0x80;                          //nilai awal PORT C
        do
        {
            PORTC=~led;                    //nilai pd PORT C dikomplemen
            delay_ms(100);                 //tunda 100ms
            led >>=1;                                     //nilai pd PORT C geser kiri
        }
            while(led!=0x00);                       //Fungsi akan berjalan jika nilai led >< 0
           
        led=0x08;                                        //nilai awal PORT C
        do
        {
            PORTC=~led;                            //nilai pd PORT C dikomplemen
            delay_ms(150);                        //tunda 150ms
            led <<=1;                                   //nilai pd PORT C geser kanan
        }
            while(led!=0x00);                    //Fungsi akan berjalan jika nilai led >< 0
       
        led=0x80;                                      //nilai awal PORT C
        do
        {
            PORTC=~led;                            //nilai pd PORT C dikomplemen
            delay_ms(200);                        //tunda 200ms
            led >>=1;                                   //nilai pd PORT C geser kiri
        }
            while(led!=0x00);                    //Fungsi akan berjalan jika nilai led >< 0
      };
}

Setelah itu Tekan Ctrl+F9. Lalu pilih “Program the Chip”. Jika benar LED akan menyala satu persatu bolak-balik dari kiri-kanan, kanan-kiri. Begitu seterusnya dengan kecepatan beser yang berubah-ubah.