Setelah dapat menggunakan Arduino dan sensor LM35, saatnya kita bermain dengan display. Saya memilih untuk menggunakan LED 7-segment. Saya memilih menggunakan 7-segment karena 7-segment biasa digunakan ketika pertama kali belajar rangkaian elektronik. Langsung saja ya.
Penjelasan 7-segment
7-segment adalah display yang terdiri dari 7 LED untuk menampilkan angka maupun huruf. Biasanya 7-segment juga dilengkapi dengan sebuah LED titik di kanan bawah, sehingga dapat digunakan untuk menampilkan bilangan desimal.
Gambar 1 - 7-segment
7-segment yang banyak ditemui dipasaran ada 2 jenis yaitu common cathode7-segment dan common anode 7-segment. Perbedaannya adalah pada common cathode, semua katoda 7 LED yang terdapat pada 7-segment tersambung menjadi satu, sedangan pada common anode, tersambung pada anoda nya.
Gambar 2 - common cathode 7-segment dan common anode 7-segment
Gambar 3 - rangkaian dalam LED 7-segment
Setelah mengetahui tentang 7-segment, sekarang saatnya melakukan percobaan.
Percobaan #1
Menampilkan Angka pada 1 Buah 7-segment dengan Menggunakan Arduino
Pada percobaan ini akan dihubugkan 1 buah 7-segment common anode dengan arduino. Bagian 7-segment yang dihubungkan semua LED nya kecuali titik yang terletak di kanan bawah. Setelah 7-segment terhubung dengan Arduino, akan dibuat program untuk menghitung mundur dari 9 ke 0 kemudian akan kedap kedip di angka 0, lalu kembali ke 9, hitung mundur ke 0, dan seterusnya
Alat dan komponen yang dibutuhkan:
board Arduino x1
kabel USB untuk power Arduino x1
common anode 7-segment x1
breadboard x1
resistor 1k ohm x 7
kabel (untuk jumper) secukupnya
Skema rangkaian dapat dilihat pada gambar 4.
Gambar 4 - skema rangkaian percobaan 1
Hasil akhir rangkaian yang saya buat dapat dilihat pada gambar 5.
Gambar 5 - Rangkaian yang sudah saya buat untuk percobaan 1
Setelah membuat rangkaian, selanjutnya saya menggunggah kode program ke dalam Arduino, kode program yang saya gunakan sebagai berikut
Setelah program dijalankan akan didapatkan hasil seperti pada gambar 6.
Gambar 6 - Arduino sudah dimasukkan kode program diatas dan dijalankan
Percobaan #2
Menampilkan Suhu yang dibaca dengan LM35 pada 4 Buah 7-segment dengan Menggunakan Arduino
Pada percobaan 2 akan digunakan 4 buah 7-segment untuk menampilkan hasil pengukuran dari LM35, dengan menggabungkan kode dari percobaan membuat rangkaian dengan LM35 sebelumnya dengan percobaan #1. Alat dan komponen yang dibutuhkan:
board Arduino x1
kabel USB untuk power Arduino x1
common anode 7-segment x4
breadboard x2
resistor 1k ohm x 11
transistor NPN x4
LM35 x1
kabel (untuk jumper) secukupnya
skema rangkaian dapat dilihat pada gambar 7.
Gambar 7 - skema rangkaian percobaan 2
Hasil akhir rangkaian yang saya buat dapat dilihat pada gambar 8.
Gambar 8 - Rangkaian yang sudah saya buat untuk percobaan 2
Setelah membuat rangkaian, selanjutnya saya menggunggah kode program ke dalam Arduino, kode program yang saya gunakan sebagai berikut
int LM35Pin = 0; //pin input sensor suhu LM35
//Arduino pin: 2,3,4,5,6,7,8
//mendefinisikan seven segment yang nyala untuk menampilkan
//angka tertentu
byte numeral[10][7] = { { 0,0,0,0,0,0,1 }, // = 0
{ 1,1,0,0,1,1,1 }, // = 1
{ 0,0,1,0,0,1,0 }, // = 2
{ 1,0,0,0,0,1,0 }, // = 3
{ 1,1,0,0,1,0,0 }, // = 4
{ 1,0,0,1,0,0,0 }, // = 5
{ 0,0,0,1,0,0,0 }, // = 6
{ 1,1,0,0,0,1,1 }, // = 7
{ 0,0,0,0,0,0,0 }, // = 8
{ 1,0,0,0,0,0,0 } // = 9
};
//mendefinisikan seven segment untuk menampilkan derajat
byte degree[] = {1,1,1,0,0,0,0};
//mendefinisikan seven segment untuk menampilkan derajat
byte celcius[] = {0,0,1,1,0,0,1};
//Arduino pin: 2,3,4,5,6,7,8
const int segmentPins[] = {2,3,4,5,6,7,8};
//jumlah seven segment yang digunakan
const int nDigit = 4;
//pin untuk setiap seven segment
const int digitPins[nDigit] = {9,10,11,12};
//variabel untuk menyimpan suhu sementara
int currentTemp = readTemp();
void setup() {
//mendefinisikan pin untuk 7 LED pada seven segment
for(int i=0; i<7; i++){
pinMode(segmentPins[i], OUTPUT);
}
//mendefinsikan pin untuk seven segment
for(int i=0; i<nDigit; i++){
pinMode(digitPins[i], OUTPUT);
}
}
void loop(){
int currentTemp = readTemp();
int startTime = millis();
int duration;
//looping selama program berjalan < 1s
while(duration < 1000){
//menghitung waktu berjalannya program
duration = millis() - startTime;
//menampilkan suhu sekarang
showNumber(currentTemp);
//menampilkan satuan
showUnit();
}
}
int readTemp(){
int value = analogRead(LM35Pin);
float millivolts = (value / 1024.0) * 5000;//konversi perhitungan dari input
//analog ke digital
int celcius = millivolts / 10; //output sensor sebesar 10mV per derajat celsius
return celcius;
}
//prosedur untuk menentukan seven segment mana yang menampilkan angka
void showNumber(int number){
//kondisi apabila angka yang ingin ditampilkan = 0
if(number == 0){
showDigit(0, nDigit-3);
}//kondisi lainnya
else{
for(int digit=nDigit-3; digit>=0; digit--){
if(number>0){
showDigit(number%10, digit);
number=number/10;
}
}
}
}
//prosedur untuk menampilkan angka pada seven segment
void showDigit(int number, int digit){
digitalWrite(digitPins[digit], HIGH);
for(int segment=0; segment<7; segment++){
digitalWrite(segmentPins[segment], numeral[number][segment]);
}
delay(5);
digitalWrite(digitPins[digit], LOW);
}
//prosedur untuk menampilkan satuan
void showUnit(){
digitalWrite(digitPins[2], HIGH);
for(int segment=0; segment<7; segment++){
digitalWrite(segmentPins[segment], degree[segment]);
}
delay(5);
digitalWrite(digitPins[2], LOW);
digitalWrite(digitPins[3], HIGH);
for(int segment=0; segment<7; segment++){
digitalWrite(segmentPins[segment], celcius[segment]);
}
delay(5);
digitalWrite(digitPins[3], LOW);
}
Setelah program dijalankan akan didapatkan hasil seperti pada gambar 9.
Gambar 9 - Arduino sudah dimasukkan kode program diatas dan dijalankan
Demikian postingan kali ini, semoga bermanfaat dan selamat mencoba!
mas, saya tertarik menggunakan arduino, sekarang saya punya IRremote, adruino uno r3 dan 3 led 7segmen. boleh ndak saya minta tolong dibuatkan programnya aar jika kita tekan angka pada remote maka akan tampil pada 7 segment tersebut? (misalnya ditekan angka 123 pada remote maka akan tampil angka 123 pada 7 segment) terimakasih.
Menarik , , ,pingin coba rencana mau buattimer mundur dari 60 menit sampai 0 , stiap 15 menit buzer menyala , saat 5 menit lagi berahir buzer akan bunyi panjang, itu bisa di aplikasi ke bahasaprigramnya ya ,??
ada skemanya ngga gan? itu kurang jelas skemanya.... :D
BalasHapusnanti kalo sempat ane coba buat gan.. thx udah mampir :)
HapusMas Chris, itu coding untuk yang menampilkan satuan di rangkaian gabungan nya, selalu error? kenapa ya mas?
BalasHapuscodingannya ada yang keubah sndiri di blogspotnya, sudah saya perbaharui mas, silahkan dicoba. thx
Hapusmasih error bang
Hapusmenarik, pingin coba tp sayang saya awam bahasa program...
BalasHapusmas, saya tertarik menggunakan arduino, sekarang saya punya IRremote, adruino uno r3 dan 3 led 7segmen. boleh ndak saya minta tolong dibuatkan programnya aar jika kita tekan angka pada remote maka akan tampil pada 7 segment tersebut? (misalnya ditekan angka 123 pada remote maka akan tampil angka 123 pada 7 segment) terimakasih.
BalasHapusMenarik , , ,pingin coba rencana mau buattimer mundur dari 60 menit sampai 0 , stiap 15 menit buzer menyala , saat 5 menit lagi berahir buzer akan bunyi panjang, itu bisa di aplikasi ke bahasaprigramnya ya ,??
BalasHapusbang, aku kurang ngerti deh sa,a rangkaian yang realnya.
BalasHapuspas aku coba malah ada error.
bang, aku kurang ngerti deh sama rangkaian yang realnya.
BalasHapuspas aku coba malah ada error.
mas, kirimin skematik nya ke email saya yaa. saya lagi ngerjain tugas nih.. benny.ragar@gmail.com
BalasHapusbenny.regar@gmail.com ini yang bener mas
BalasHapus