Pemograman tombol (switch) ATmega 16 menggunakan bahasa C

Pemograman tombol (switch) ATmega 16 menggunakan bahasa C - Hallo sahabat Teknik Elektro, Pada sharing kali ini yang berjudul Pemograman tombol (switch) ATmega 16 menggunakan bahasa C , saya telah menyediakan artikel, ebook dan softwere untuk sahabat teknik elektro. Mudah-mudahan dapat bermanfaat bagi anda.

Judul : Pemograman tombol (switch) ATmega 16 menggunakan bahasa C
Tema : Pemograman tombol (switch) ATmega 16 menggunakan bahasa C

lihat juga


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.

Anda sedang membaca artikel Pemograman tombol (switch) ATmega 16 menggunakan bahasa C dan artikel ini url permalinknya adalah https://teknikelektropakuan.blogspot.com/2018/07/pemograman-tombol-switch-atmega-16.html Semoga artikel ini bisa bermanfaat.

0 Response to "Pemograman tombol (switch) ATmega 16 menggunakan bahasa C "

Posting Komentar