Semua Tentang Belajar Teknologi Digital Dalam Kehidupan Sehari - Hari

  • IC Timer 555 yang Multifungsi

    IC timer 555 adalah sirkuit terpadu (chip) yang digunakan dalam berbagai pembangkit timer, pulsa dan aplikasi osilator. Komponen ini digunakan secara luas, berkat kemudahan dalam penggunaan, harga rendah dan stabilitas yang baik

  • Ayo Migrasi TV Digital

    Kami bantu anda untuk memahami lebih jelas mengenai migrasi tv digital, apa sebabnya dan bagaimana efek terhadap kehidupan. Jasa teknisi juga tersedia dan siap membantu instalasi - setting perangkat - pengaturan antena dan distribusi televisi digital ke kamar kos / hotel

  • Bermain DOT Matrix - LOVEHURT

    Project Sederhana dengan Dot Matrix dan Attiny2313. Bisa menjadi hadiah buat teman atau pacarmu yang ulang tahun dengan tulisan dan animasi yang dapat dibuat sendiri.

  • JAM DIGITAL 6 DIGIT TANPA MICRO FULL CMOS

    Jika anda pencinta IC TTL datau CMOS maka project jam digital ini akan menunjukkan bahwa tidak ada salahnya balik kembali ke dasar elektronika digital , sebab semuanya BISA dibuat dengan teknologi jadul

  • Node Red - Kontrol Industri 4.0

    Teknologi kontrol sudah melampaui ekspektasi semua orang dan dengan kemajuan dunia elektronika, kini semakin leluasa berkreasi melalui Node Red

Tampilkan postingan dengan label lcd. Tampilkan semua postingan
Tampilkan postingan dengan label lcd. Tampilkan semua postingan

Jumat, 20 Desember 2013

[TUTORIAL] Keypad + LCD + Password



Tutorial berikut ini merupakan kelanjutan dari pembahasan sebelumnya mengenai keypad dan lcd dengan menitikberatkan pada proses input dan pengecekan password. Prinsipnya mudah saja hanya dengan memindahkan penekanan tombol ke array memory dan kemudian membandingkannya dengan password yg diinginkan. Untuk itu agar diperhatikan juga pembahasan mengenai ARRAY.



uint8_t pas[6];  // ARRAY untuk menyimpan inputan tombol
uint8_t pase[6]={ 1,2,3,4,5,6 } ; //ARRAY password yg akan dibandingkan




Langkah pertama mendeklarasikan ARRAY yg akan menyimpan inputan tombol. Kita batasi jumlah password yg diinput 6 angka sehingga array ini memiliki panjang 6. Setiap tombol ditekan maka array pas[ ] akan dimasukkan nilai dari variabel keypad.



Untuk menampilkan karakter diatas scriptnya adalah :


lcd_init(LCD_DISP_ON_CURSOR);  //inisialisasi LCD
lcd_puts(" Input Password:");
lcd_gotoxy(4,1);              //pindah baris



Sedangkan untuk memindahkan inputan keypad seperti berikut:


//jika tombol ditekan (bukan * dan # )
if(keypad!= 100 && keypad !=21 && keypad !=20 ) 
 {  
  

   if( posisi < 6 ) {    //ada 6 buah password
   lcd_putc('*') ; // tampilkan asterix untuk password
   pas[posisi]=keypad; //pindahkan nilai keypad ke array
      posisi++; //tambahkan nilai posisi
 
      }

 

 _delay_ms(150);   
   

   }






 Jika ingin mengoreksi password yg telah dimasukkan , maka cancel diwakili oleh tombol '*' dan scriptnya seperti berikut :


if(keypad == 21 )  // penekanan * berarti hapus 1 kebelakang
 {  
  

 
 if(posisi != 0)  posisi--;  //posisi kursor dikurangi



  

  lcd_gotoxy((posisi +4),1); //mundur 1 posisi 
  lcd_putc(' '); //bersihkan kursor
  lcd_gotoxy((posisi +4),1); //balik lagi


 
 _delay_ms(150);   
   

   }






Berikut ini adalah script untuk membandingkan password :


 if(keypad == 20 )  // penekanan # berarti password bisa dicek
 { 


  if(posisi == 5) { //jika sudah semua password dimasukkan
//berikut ini pembanding
   if( pas[0] == pase[0] && pas[1] == pase[1] && pas[2] == pase[2] && pas[3] == pase[3] && pas[4] == pase[4] && pas[5] == pase[5]  )

    {

     lcd_gotoxy(1,0);
  lcd_puts(" Password Benar "); //jika benar

 }
   else
   {
   
     lcd_gotoxy(1,0);
  lcd_puts(" Password Salah "); //jika salah
   }   
  
  
  }




 _delay_ms(150); 

 }





Hasilnya seperti berikut :





Script selengkapnya dapat didownload disini.



SELAMAT MENCOBA


Share:

Kamis, 19 Desember 2013

[TUTORIAL] KEYPAD to 16 x 2 LCD MATRIX



Sebelum melanjutkan ke tutorial berikut ada baiknya membaca pembahasan terdahulu mengenai keypad dan menulis ke lcd


Episode berikut dari pembahasan mengenai keypad akan membahas mengenai pemindahan data dari keypad menuju LCD Matrix 16x2 . Display LCD yang umum didapatkan di toko hoby elektronika ini berharga dikisaran 40-60 ribu. Sedangkan modul keypad dijual dengan harga 30 ribu (keypad keras) dan 20 ribu untuk keypad pita/tipis. 


Pembahasan mengenai penulisan LCD pernah ditulis dalam blog ini, dimana akan digunakan library langsung pakai yang sangat simple yaitu pfleury. Ada 2 file yang harus dicopykan yaitu lcd.h dan lcd.c yang kemudian akan ditambahkan pada script. Untuk lcd.h perlu dilakukan penyesuaian terhadap penempatan kaki-kaki pin dari lcd terhadap microcontroller yang digunakan. Perhatikan skematik yg digunakan dalam tutorial ini.


klik pada gambar untuk memperjelas



Rangkaian diatas menggunakan AVR ATMEGA8535 , dengan PortA sebagai kontrol LCD dan mode data yg digunakan 4 bit. Jadi pada file lcd.h diubah sebagai berikut :





#define XTAL 1000000 //default clock adalah 1Mhz

#define LCD_LINES 2      // jumlah line LCD
#define LCD_DISP_LENGTH 16 // jumlah karakter per line


#define LCD_IO_MODE 1    // mode 0=8bit, 1=4 bit

// selanjutnya adalah definisi pin yang dipakai, berikut ini hasil edit yang sesuai skematik diatas

#define LCD_PORT PORTA
#define LCD_DATA0_PORT LCD_PORT
#define LCD_DATA1_PORT LCD_PORT
#define LCD_DATA2_PORT LCD_PORT
#define LCD_DATA3_PORT LCD_PORT
#define LCD_DATA0_PIN 3
#define LCD_DATA1_PIN 2
#define LCD_DATA2_PIN 1
#define LCD_DATA3_PIN 0
#define LCD_RS_PORT 
LCD_PORT
#define LCD_RS_PIN 6
#define LCD_RW_PORT 
LCD_PORT
#define LCD_RW_PIN 5
#define LCD_E_PORT 
LCD_PORT

#define LCD_E_PIN 4 

Jangan lupa juga dengan cara menambahkan library lcd.c seperti gambar berikut (AVR STUDIO 4)



Karena penulisan LCD matrix sangat simple , maka script pun menjadi semakin simple. Hanya dengan menggunakan logika sederhana untuk menentukan baris yang akan ditulis maka didapatkan script utama seperti berikut :




int main(void)

{

uint8_t keypad,posisi;
 
DDRA |= _BV(PA0) | _BV(PA1) | _BV(PA2) | _BV(PA3) | _BV(PA4) | _BV(PA5) | _BV(PA6)  ; //LCD PORT yg digunakan
  
    
   //keypad     
    DDRD &= ~_BV(PD0) & ~_BV(PD1) & ~_BV(PD2); //col 
    DDRD |= _BV(PD3) | _BV(PD4) | _BV(PD5) | _BV(PD6); //row


posisi=0; //variabel penanda posisi kursor


lcd_init(LCD_DISP_ON_CURSOR); //inisialisasi LCD

 while(1)

 {
   
keypad=tombol(); //fungsi keypad, silahkan baca pembahasan sebelumnya

if(keypad!= 100 && keypad !=21 && keypad !=20 ) //jika tombol ditekan
 {  
  

   if( posisi < 32 ) {    //ada 32 buah ruang untuk menulis  (16 x 2 )
      lcd_putc( keypad + 48 ) ; //48 adalah ascii dari angka 0
      posisi++; //tambahkan nilai posisi
 
      }

 
 if(posisi == 16){ //jika melewati 16 karakter di baris 1
 
 lcd_gotoxy(0,1); //pindah ke baris kedua

 } 


 _delay_ms(150);   
   

   }
   



if(keypad == 21 )  // penekanan * berarti hapus 1 kebelakang
 {  
  

 
 if(posisi != 0)  posisi--;  //posisi kursor dikurangi



 if(posisi < 16 ){ //baris 1

  lcd_gotoxy(posisi,0); //mundur 1 posisi di baris 1
  lcd_putc(' '); //bersihkan kursos
  lcd_gotoxy(posisi,0); //balik lagi


 } 

 else { //baris 2

  lcd_gotoxy((posisi - 16),1); //mundur 1 posisi di baris 2
  lcd_putc(' '); //bersihkan angka
  lcd_gotoxy((posisi - 16),1); //balik lagi

 }
 
 _delay_ms(150);   
   

   }


else if(keypad == 20 )  // penekanan # berarti bersihkan layar lcd
 { 

posisi = 0;

lcd_clrscr();


 _delay_ms(150); 

 }



}

return 0;

}



Yang menarik dari script diatas adalah karena yg ditampilkan berupa angka saja sedangkan LCD menerima input karakter ASCII, maka untuk merubah dari integer ke ascii cukup dengan menambahkan angka 48. Kenapa ? Karena ascii dari angka 0-9 berurutan dari 48-57 jadi simple saja menggunakan script  lcd_putc( keypad + 48)  Script selengkapnya dapat didownload di sini.


SELAMAT MENCOBA
Share:

Kontak Penulis



12179018.png (60×60)
+628155737755

Mail : ahocool@gmail.com

Site View

Categories

555 (8) 7 segmen (3) adc (4) amplifier (2) analog (19) android (12) antares (11) arduino (27) artikel (11) attiny (3) attiny2313 (19) audio (5) baterai (5) blog (1) bluetooth (1) chatgpt (2) cmos (2) crypto (2) dasar (46) digital (11) dimmer (5) display (3) esp8266 (26) euro2020 (13) gcc (1) gsm (1) iklan (1) infrared (2) Input Output (3) iot (73) jam (7) jualan (12) kereta api (1) keyboard (1) keypad (3) kios pulsa (2) kit (6) komponen (17) komputer (3) komunikasi (1) kontrol (8) lain-lain (8) lcd (2) led (14) led matrix (6) line tracer (1) lm35 (1) lora (11) lorawan (2) MATV (1) memory (1) metal detector (4) microcontroller (70) micropython (6) mikrokontroler (1) mikrokontroller (14) mikrotik (5) modbus (9) mqtt (3) ninmedia (5) ntp (1) paket belajar (19) palang pintu otomatis (1) parabola (88) pcb (2) power (1) praktek (2) project (33) proyek (1) python (8) radio (28) raspberry pi (9) remote (1) revisi (1) rfid (1) robot (1) rpm (2) rs232 (1) script break down (3) sdcard (3) sensor (2) sharing (3) signage (1) sinyal (1) sms (6) software (18) solar (1) solusi (1) tachometer (2) technology (1) teknologi (2) telegram (2) telepon (9) televisi (167) television (28) telkomiot (4) transistor (2) troubleshoot (3) tulisan (93) tutorial (108) tv digital (6) tvri (2) vu meter (2) vumeter (2) wav player (3) wayang (1) wifi (3) yolo (7)

Arsip Blog

Diskusi


kaskus
Forum Hobby Elektronika