Upload
ar-linto
View
9
Download
0
Embed Size (px)
Citation preview
Minggu, 16 Maret 2014
Arduino dan 7-Segment
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 cathode 7-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
Show/Hide Code
//Arduino pin: 2,3,4,5,6,7,8
//mendefinisikan seven segment yang nyala untuk menampilkan
//angka tertentu
byte seven_seg_digits[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
};
void setup() {
//setting setiap pin sebagai OUTPUT
pinMode(2, OUTPUT);
pinMode(3, OUTPUT);
pinMode(4, OUTPUT);
pinMode(5, OUTPUT);
pinMode(6, OUTPUT);
pinMode(7, OUTPUT);
pinMode(8, OUTPUT);
}
void loop() {
//lakukan looping untuk menampilkan angka 9 sampai ke 0
for (byte count = 10; count > 0; --count) {
delay(1000);
sevenSegWrite(count - 1);
}
//membuat 7-segment kedap kedip ketika menunjukkan angka 0
for(int i=0; i<4; i++){
clear();
delay(250);
sevenSegWrite(0);
delay(250);
}
clear();
}
//prosedur untuk menampilkan angka pada 7-segment
void sevenSegWrite(byte digit) {
byte pin = 2;
for (byte segCount = 0; segCount < 7; ++segCount) {
digitalWrite(pin, seven_seg_digits[digit][segCount]);
pin++;
}
}
//prosedur untuk mematikan semua LED pada 7-segment
void clear(){
byte pin = 2;
for (byte segCount = 0; segCount < 7; ++segCount) {
digitalWrite(pin, HIGH);
pin++;
}
}
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
Show/Hide Code
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!
http://christianhendy.blogspot.com/2014/03/arduino-dan-7-segment_16.html
http://www.rustamaji.net/id/arduino/mengenal-arduino
Voltage Divider dan Sensor Analog
DITULIS OLEH TRAS RUSTAMAJI PADA SAB, 12/13/2014 - 17:20
Untuk bisa memahami cara kerja dan penggunaan sensor analog, tidak akan lengkap tanpa paham voltage divider (pembagi tegangan).
Sesuai dengan namanya, voltage divider akan membagi tegangan yang diberikan sesuai dengan perbandingan resistor (hambatan) yang dipasang.
Jadi pada gambar di atas, karena hambatan R1 dan R2 sama (1 kOhm), maka tegangan batere 3V akan dibagi menjadi sama besar masing2 1,5V yang jatuh di R1 dan R2.
Dengan mengubah-ubah perbandingan R1 dan R2 kita bisa mengubah-ubah tegangan yang jatuh baik di R1 maupun R2. Misalnya, jika R1 = 2 kOhm sedangkan R2 = 1 kOhm, maka tegangan di R1 (VR1) menjadi 2V dan VR2 = 1 V. Atau secara umum bisa dituliskan :
VR1=R1R1+R2×VCC
dan
VR2=R2R1+R2×VCC
Ada satu komponen elektronika yang dibuat khusus untuk berfungsi sebagai voltage divider, namanya potensiometer seperti gambar di bawah ini. Di dalamnya mengandung R1 dan R2 dengan susunan seperti gambar di atas. Dan nilai R1 dan R2 nya bisa diubah-ubah dengan cara memutar knob. Hasilnya kita bisa mengatur tegangan di titik tengah dengan mengatur knob!
Potensiometer ini bisa kita gunakan sebagai analog sensor! Bahkan hampir semua sensor analog bekerja seperti potensiometer ini. Cuma bedanya sensor-sensor tersebut tidak perlu secara manual kita putar, melainkan "diputar" oleh keadaan tertentu. Misalnya sensor cahaya (LDR), bekerja seperti potensiometer yang berputar otomastis tergantung besarnya intensitas cahaya. Kalau cahaya bertambah terang, kita seperti memutar potensiometer ke kanan. Dan kalau cahaya menjadi gelap, seperti memutar potensiometer ke kiri.
Mari ambil Arduino Uno dan potensiometer dan kita mulai bikin sketch dengan Arduino!