Judul : Pemograman tombol (switch) ATmega 16 menggunakan bahasa C
Tema : Pemograman tombol (switch) ATmega 16 menggunakan bahasa C
Pemograman tombol (switch) ATmega 16 menggunakan bahasa C
Pemograman tombol (switch) ATmega 16 menggunakan bahasa C - Pada aplikasi mikrokontroller, Tombol sering digunakan sebagi input untuk menjalankan fungsi program lain. Misal tombol a ditekan untuk menyalakan buzzer atau memutar motor DC. Tombol memiliki banyak jenis, namun yang paling sering digunakan pada aplikasi mikrokontroller ATmega 16 adalah push button switch. Partnya pun banyak ditemui dipasaran daengan harga yang sangat murah
Skematik Program
Skematik Switch |
Pada skematik program diatas tombol yang digunakan dihubungkan langsung ke ground, tanpa resistor pull up. Mengapa ? kerena pada dasarnya setiap pinout dari IC ATmega 16 sudah dilengkapi internal Pull up resistor didalamnya. Maka, tinggal diatur dalam program untuk mengaktifkan pull upnya. Saklar push button terhubung pada PORTD, nantinya akan digunakan untung menyalakan LED pada PORTB.
Program tombol terdapat beberapa cara, semua akan dibahas dibawah. Software yang digunakan adalah AVR studio 5. Bisa juga menggunakan Codevision AVR dengan menggunakan sedikit modifikasi pada “penulisan” program, namun logikanya tetap sama.
Tombol yang digunakan adalah push button (push button switch). Prinsipnya sederhana yaitu jika saklar ditekan maka saklar akan terhubung dan jika dilepas maka akan terputus kembali.
Listing program adalah seperti berikut :
Cara 1
Listing programnya adalah sebagai berikut:
#include <avr/io.h> // header standard AVR
#define F_CPU 12000000UL // set clock 12mhz
#include <util/delay.h> // delay
void led (void)
{
while (1)
{
PORTB=0x00; //led nyala
_delay_ms(1000); // delay 1S
PORTB=0xff; // LED mati
_delay_ms(1000);
}
}
void main (void)
{ DDRB=0xf0;; // set portd.0 - portt.3 = input
PORTD=0xff; // mengaktifkan Pull up resistor internal
DDRB=0xff;// set portb = output
char kondisi;
while (1)
{
if (PORTD==0b11111110) kondisi=1; //jika portd.0=0 (sw1 ditekan) // maka kondisi =1
if ((PORTD==0b11111111) &&(kondisi==1))kondisi=0; led();
// jika saklar dilepas dan kondisi=1,kondisi=0 dan jalankan led()
}
}
CARA 2 (menggunakan lock)
#include <avr/io.h> // header standard AVR
#define F_CPU 12000000UL // set clock 12mhz
#include <util/delay.h> // delay
void lock() // sub program LOck
{
while(PIND==0b11111110){ } // sw 1 ditekan
while(PIND==0b11111101){ } // sw 2 ditekan
while(PIND==0b11111011){ } // sw 3 ditekan
while(PIND==0b11110111){ } // sw 4 ditekan
};
void main (void)
{ DDRD=0xf0;; // set portd.0 - portt.3 = input
PORTD=0xff; // mengaktifkan Pull up resistor internal
DDRB=0xff;// set portb = output
char kondisi;
while (1)
{
if(PIND==0b11111110){lock();kondisi=1;}; //jika sw 1 ditekan,
while (kondisi==1)
{
PORTB=0x00; //led nyala
_delay_ms(1000); // delay 1s
PORTB=0xff; // LED mati
_delay_ms(1000);
}
}
Cara 3 (bit_is_clear)
#include <avr/io.h> // header standard AVR
#define F_CPU 12000000UL // set clock 12mhz
#include <util/delay.h> // delay
void led (void)
{
while (1)
{
PORTB=0x00; //led nyala
_delay_ms(1000); // delay 1S
PORTB=0xff; // LED mati
_delay_ms(1000);
}
}
void main (void)
{ DDRD=0xf0;; // set portd.0 - portt.3 = input
PORTD=0xff; // mengaktifkan Pull up resistor internal
DDRB=0xff;// set portb = output
char kondisi;
while (1)
{
if (bit_is_clear(PIND,0)){while (bit_is_clear(PIND,0)) kondisi=0; led(); }
}
}
Ketiga program diatas hanya menggunakan 1 switch sedangkan pada skema ada 4 switch. Tugas anda adalah menjalankan 3 switch lainnya secara bervariasi. Tujuannya adalah mengembangkan logika program sehingga otak semakin terasah dan terbiasa untuk “pusing”. Tetap semangat dan berusaha jangan menyerah.
Demikianlah Artikel Pemograman tombol (switch) ATmega 16 menggunakan bahasa C
materi teknik elektro tentang Pemograman tombol (switch) ATmega 16 menggunakan bahasa C , mudah-mudahan bisa memberi manfaat untuk anda semua. baiklah, sekian postingan kali ini.
0 Response to "Pemograman tombol (switch) ATmega 16 menggunakan bahasa C "
Posting Komentar