Pada artikel ini saya akan membahas tentang seven segment dan keypad. Sesuai dengan judul nya yaitu “Display Seven Segment Keypad” kita akan membuat sebuah alat yang mampu menampilkan angka pada seven segment dengan inputan berupa keypad.
Jadi nanti dengan menekan keypad maka di display akan tampil angka sesuai dengan nomor keypad yang ditekan.
Sebenarnya alat ini akan jadi sangat sederhana, karena dengan 8 digit display, kita hanya perlu 3 kabel saja untuk mengontrol keseluruhan 8 digit display.
Hal tersebut bisa diterapkan berkat sebuah IC driver dengan kode MAX7219. IC ini dapat membuat kita menyalakan 8 digit seven segment hanya dengan 3 kabel saja dari mikrokontroller atmega328 atau arduino ini.
Contoh produk atau module nya adalah seperti berikut ini yang dijual dipasaran.
Skematik
Nah display 8 digit tersebut bisa di sambung sambung hingga menjadi satu kesatuan display yang panjang. Dan untuk skematik alat tersebut bisa kalian lihat pada referensi skematik dari IC driver MAX7219 berikut.
Nah berdasarkan skematik diatas saya lalu membuat sendiri produk display saya sendiri yang lebih ringkas dengan menggunakan IC SMD untuk driver nya.
Nah display ini nantinya terhubung hanya tiga kabel saja ke arduino beserta jalur supply menjadi 5 kabel saja kita sudah bisa menampilkan 8 angka secara individu.
Program
Untuk coding atau program nya, sebenarnya sangat sederhana sekali. Karena kita juga akan menggunakan keypad sebagai inputan, maka coding pembacaan keypad harus kita tulis terlebih dahulu.
Setelah coding tersebut berhasil, barulah kita gabungkan dengan coding display max7219 nya. Sehingga hasil dari inputan keypad nilainya akan ditampilkan kebentuk angka di seven segment.
Berikut ini adalah full coding yang saya gunakan :
#include "LedControl.h"
#include <Keypad.h>
const byte ROWS = 4; //four rows
const byte COLS = 4; //three columns
char keys[ROWS][COLS] = {
{'1','2','3','A'},
{'4','5','6','B'},
{'7','8','9','D'},
{'*','0','#','E'}
};
byte a,b=0;
byte rowPins[ROWS] = {5, 6, 7, 8}; //connect to the row pinouts of the keypad
byte colPins[COLS] = {9, 10, 11, 12}; //connect to the column pinouts of the keypad
Keypad keypad = Keypad( makeKeymap(keys), rowPins, colPins, ROWS, COLS );
/*
Now we need a LedControl to work with.
***** These pin numbers will probably not work with your hardware *****
pin 12 is connected to the DataIn
pin 11 is connected to the CLK
pin 10 is connected to LOAD
We have only a single MAX72XX.
*/
LedControl lc=LedControl(2,4,3,1);
/* we always wait a bit between updates of the display */
unsigned long delaytime=250;
void setup() {
/*
The MAX72XX is in power-saving mode on startup,
we have to do a wakeup call
*/
Serial.begin(9600);
lc.shutdown(0,false);
/* Set the brightness to a medium values */
lc.setIntensity(0,8);
/* and clear the display */
lc.clearDisplay(0);
}
/*
This method will display the characters for the
word "Arduino" one after the other on digit 0.
*/
void writeArduinoOn7Segment() {
/*
lc.setChar(0,0,'a',false);
delay(delaytime);
lc.setRow(0,0,0x05);
delay(delaytime);
lc.setChar(0,0,'d',false);
delay(delaytime);
lc.setRow(0,0,0x1c);
delay(delaytime);
lc.setRow(0,0,B00010000);
delay(delaytime);
lc.setRow(0,0,0x15);
delay(delaytime);
lc.setRow(0,0,0x1D);
delay(delaytime);
lc.clearDisplay(0);
delay(delaytime);
*/
}
/*
This method will scroll all the hexa-decimal
numbers and letters on the display. You will need at least
four 7-Segment digits. otherwise it won't really look that good.
*/
void scrollDigits() {
for(int i=0;i<13;i++) {
lc.setDigit(0,3,i,false);
lc.setDigit(0,2,i+1,false);
lc.setDigit(0,1,i+2,false);
lc.setDigit(0,0,i+3,false);
delay(delaytime);
}
lc.clearDisplay(0);
delay(delaytime);
}
void loop() {
char key = keypad.getKey();
if (key){
Serial.println(key);
if(key!='#'){
Serial.println(a);
b=key-'0';
Serial.println(b);
lc.setDigit(0,a,b,false);
a++;
}
else{a=0;lc.clearDisplay(0);}
}
//writeArduinoOn7Segment();
//scrollDigits();
}
Silahkan dicoba upload dan jangan lupa untuk menyesuaikan pin yang digunakan. Kalian bisa lihat pin tersebut di baris coding sebelum void setup()
Eksplorasi konten lain dari Duwi Arsana
Berlangganan untuk dapatkan pos terbaru lewat email.