• Tidak ada hasil yang ditemukan

PERCOBAAN SEVEN SEGMEN

Dalam dokumen Buku Petunjuk Praktikum Mikrokontroler (Halaman 26-34)

TUJUAN :

1. Mahasiswa memahami rangkaian interface mikrokontroller dengan 7 segmen

2. Mahasiswa dapat memahami program Arduino untuk menampilkan data ke 7 segment 3. Mahasiswa memahami beberapa instruksi Arduino dasar, array data dan bitRead.

PERALATAN

1. Sebuah Komputer

2. Satu set trainer mikrokontroler

TEORI DASAR

Seven segment merupakan segment-segment yang digunakan untuk menampilkan angka-angka atau huruf. Seven segment ini tersusun atas 7 buah LED yang membentuk membentuk angka atau huruf dimana penyusunnya menggunakan label dari ‘a’ sampai ‘g’ dan satu lagi untuk dot point (DP). Salah satu terminal LED dihubungkan menjadi satu sebagai kaki common (biasanya pin-nya berada ditengah)

Gambar 4.1. Skematik Sebuah Seven Segment

Pin 3 dan 8 = untuk mengaktifkan seven segment diberikan logika high (common anode) dan logika low (common cathode). Jenis-jenis Seven Segment:

1. Common Anoda

Semua anoda dari LED dalam seven segment disatukan secara parallel dan semua itu dihubungkan ke VCC, dan kemudian LED dihubungkan melalui tahanan pembatas arus keluar dari penggerak LED. Karena dihubungkan ke VCC, maka COMMON ANODA ini berada pada kondisi AKTIF LOW (led akan menyala/aktif bila diberi logika 0).

27 LABORATORIUM MIKROKONTROLER UNIVERSITAS NAROTAMA SURABAYA

Merupakan kebalikan dari Common Anoda. Disini semua katoda disatukan secara parallel dan dihubungkan ke GROUND. Karena seluruh katoda dihubungkan ke GROUND, maka COMMON KATODA ini berada pada kondisi AKTIF HIGH (led akan menyala/aktif bila diberi logika 1).

Gambar 4.2. Bentuk Fisik Seven Segment CC dan CA Prinsip Kerja :

Prinsip kerja seven segment ialah input biner pada switch dikonversikan masuk ke dalam decoder, baru kemudian decoder mengkonversi bilangan biner tersebut menjadi decimal, yang nantinya akan ditampilkan pada seven segment.

Seven segment dapat menampilkan angka-angka desimal dan beberapa karakter tertentu melalui kombinasi aktif atau tidaknya LED dalam seven segment. Untuk memudahkan penggunaan seven segment, umumnya digunakan sebuah decoder( mengubah/ mengkoversi input bilangan biner menjadi decimal) atau seven segment driver yang akan mengatur aktif tidaknya led-led dalam seven segment sesuai dengan nilai biner yang diberikan.

Dekoder BCD ke seven segment digunakan untuk menerima masukan BCD 4-bit dan memberikan keluaran yang melewatkan arus melalui segmen untuk menampilkan angka desimal. Jenis dekoder BCD ke seven segment ada dua macam yaitu dekoder yang berfungsi untuk menyalakan seven segment mode common anoda dan dekoder yang berfungsi untuk menyalakan seven segment mode common katoda. Percobaan 5.

Buatlah rangkaian seperti dibawah ini untuk sebuah seven segment

28 LABORATORIUM MIKROKONTROLER UNIVERSITAS NAROTAMA SURABAYA

Ketik program berikut dikomputer kemudian lakukan upload pada mikrokontroler const byte numeral[10] = {

//ABCDEFG /dp B11111100, // 0 B01100000, // 1 B11011010, // 2 B11110010, // 3 B01100110, // 4 B10110110, // 5 B00111110, // 6 B11100000, // 7 B11111110, // 8 B11100110, // 9 };

// pins segment dp,G,F,E,D,C,B,A

const int segmentPins[8] = { 5,9,8,7,6,4,3,2}; void setup(){

for(int i=0; i < 8; i++){

pinMode(segmentPins[i], OUTPUT); } }

void loop(){

for(int i=0; i <= 10; i++){ showDigit(i);

delay(1000); }

delay(2000); }

void showDigit( int number){ boolean isBitSet;

for(int segment = 1; segment < 8; segment++){ if( number < 0 || number > 9){

isBitSet = 0; // turn off all segments } else{

// isBitSet will be true if given bit is 1 isBitSet = bitRead(numeral[number], segment);} isBitSet = !isBitSet; //

digitalWrite( segmentPins[segment], isBitSet); }

} Percobaan 6.

Untuk percobaan berikut ini hubungkan rangkaian seven segment 4 bit dengan pin mikrokontroler. Sambungkan C1 dengan dengan pin 11, C2 dengan pin 10, C3 dengan pin 9, dan C4 dengan pin 6, sedangkan datanya pada masing-masing segmen dihubungkan seperti dibawah ini :

Pin pada seven segmen = pin di Arduino segA = A1; //Display pin 14

segB = 3; //Display pin 16

segC = 4; //Display pin 13

segD = 5; //Display pin 3

segE = A0; //Display pin 5

segF = 7; //Display pin 11

29 LABORATORIUM MIKROKONTROLER UNIVERSITAS NAROTAMA SURABAYA

Gambar 4.4. Rangkaian Seven Segment 4 bit

Ketiklah program dibawah ini kemudian lakukan upload pada mikrokontroler :

int digit1 = 11; //PWM Display pin 1

int digit2 = 10; //PWM Display pin 2

int digit3 = 9; //PWM Display pin 6

int digit4 = 6; //PWM Display pin 8

int segA = A1; //Display pin 14

int segB = 3; //Display pin 16

int segC = 4; //Display pin 13

int segD = 5; //Display pin 3

int segE = A0; //Display pin 5

int segF = 7; //Display pin 11

int segG = 8; //Display pin 15

void setup() { pinMode(segA, OUTPUT); pinMode(segB, OUTPUT); pinMode(segC, OUTPUT); pinMode(segD, OUTPUT); pinMode(segE, OUTPUT); pinMode(segF, OUTPUT); pinMode(segG, OUTPUT); pinMode(digit1, OUTPUT); pinMode(digit2, OUTPUT); pinMode(digit3, OUTPUT); pinMode(digit4, OUTPUT); pinMode(13, OUTPUT); }

30 LABORATORIUM MIKROKONTROLER UNIVERSITAS NAROTAMA SURABAYA

void loop() {

displayNumber(millis()/1000); }

void displayNumber(int toDisplay) { #define DISPLAY_BRIGHTNESS 500 #define DIGIT_ON HIGH

#define DIGIT_OFF LOW

long beginTime = millis();

for(int digit = 4 ; digit > 0 ; digit--) { //Turn on a digit for a short amount of time

switch(digit) { case 1: digitalWrite(digit1, DIGIT_ON); break; case 2: digitalWrite(digit2, DIGIT_ON); break; case 3: digitalWrite(digit3, DIGIT_ON); break; case 4: digitalWrite(digit4, DIGIT_ON); break; }

//Turn on the right segments for this digit

lightNumber(toDisplay % 10); toDisplay /= 10;

delayMicroseconds(DISPLAY_BRIGHTNESS);

//Display digit for fraction of a second (1us to 5000us, 500 is pretty good)

//Turn off all segments

lightNumber(10); //Turn off all digits

digitalWrite(digit1, DIGIT_OFF); digitalWrite(digit2, DIGIT_OFF); digitalWrite(digit3, DIGIT_OFF); digitalWrite(digit4, DIGIT_OFF); }

while( (millis() - beginTime) < 10) ;

//Wait for 20ms to pass before we paint the display again

}

//Given a number, turns on those segments //If number == 10, then turn off number

void lightNumber(int numberToDisplay) { #define SEGMENT_ON LOW

31 LABORATORIUM MIKROKONTROLER UNIVERSITAS NAROTAMA SURABAYA

switch (numberToDisplay){ case 0: digitalWrite(segA, SEGMENT_ON); digitalWrite(segB, SEGMENT_ON); digitalWrite(segC, SEGMENT_ON); digitalWrite(segD, SEGMENT_ON); digitalWrite(segE, SEGMENT_ON); digitalWrite(segF, SEGMENT_ON); digitalWrite(segG, SEGMENT_OFF); break; case 1: digitalWrite(segA, SEGMENT_OFF); digitalWrite(segB, SEGMENT_ON); digitalWrite(segC, SEGMENT_ON); digitalWrite(segD, SEGMENT_OFF); digitalWrite(segE, SEGMENT_OFF); digitalWrite(segF, SEGMENT_OFF); digitalWrite(segG, SEGMENT_OFF); break; case 2: digitalWrite(segA, SEGMENT_ON); digitalWrite(segB, SEGMENT_ON); digitalWrite(segC, SEGMENT_OFF); digitalWrite(segD, SEGMENT_ON); digitalWrite(segE, SEGMENT_ON); digitalWrite(segF, SEGMENT_OFF); digitalWrite(segG, SEGMENT_ON); break; case 3: digitalWrite(segA, SEGMENT_ON); digitalWrite(segB, SEGMENT_ON); digitalWrite(segC, SEGMENT_ON); digitalWrite(segD, SEGMENT_ON); digitalWrite(segE, SEGMENT_OFF); digitalWrite(segF, SEGMENT_OFF); digitalWrite(segG, SEGMENT_ON); break; case 4: digitalWrite(segA, SEGMENT_OFF); digitalWrite(segB, SEGMENT_ON); digitalWrite(segC, SEGMENT_ON); digitalWrite(segD, SEGMENT_OFF); digitalWrite(segE, SEGMENT_OFF); digitalWrite(segF, SEGMENT_ON); digitalWrite(segG, SEGMENT_ON); break; case 5: digitalWrite(segA, SEGMENT_ON); digitalWrite(segB, SEGMENT_OFF); digitalWrite(segC, SEGMENT_ON); digitalWrite(segD, SEGMENT_ON); digitalWrite(segE, SEGMENT_OFF); digitalWrite(segF, SEGMENT_ON); digitalWrite(segG, SEGMENT_ON); break;

32 LABORATORIUM MIKROKONTROLER UNIVERSITAS NAROTAMA SURABAYA

case 6: digitalWrite(segA, SEGMENT_ON); digitalWrite(segB, SEGMENT_OFF); digitalWrite(segC, SEGMENT_ON); digitalWrite(segD, SEGMENT_ON); digitalWrite(segE, SEGMENT_ON); digitalWrite(segF, SEGMENT_ON); digitalWrite(segG, SEGMENT_ON); break; case 7: digitalWrite(segA, SEGMENT_ON); digitalWrite(segB, SEGMENT_ON); digitalWrite(segC, SEGMENT_ON); digitalWrite(segD, SEGMENT_OFF); digitalWrite(segE, SEGMENT_OFF); digitalWrite(segF, SEGMENT_OFF); digitalWrite(segG, SEGMENT_OFF); break; case 8: digitalWrite(segA, SEGMENT_ON); digitalWrite(segB, SEGMENT_ON); digitalWrite(segC, SEGMENT_ON); digitalWrite(segD, SEGMENT_ON); digitalWrite(segE, SEGMENT_ON); digitalWrite(segF, SEGMENT_ON); digitalWrite(segG, SEGMENT_ON); break; case 9: digitalWrite(segA, SEGMENT_ON); digitalWrite(segB, SEGMENT_ON); digitalWrite(segC, SEGMENT_ON); digitalWrite(segD, SEGMENT_ON); digitalWrite(segE, SEGMENT_OFF); digitalWrite(segF, SEGMENT_ON); digitalWrite(segG, SEGMENT_ON); break; case 10: digitalWrite(segA, SEGMENT_OFF); digitalWrite(segB, SEGMENT_OFF); digitalWrite(segC, SEGMENT_OFF); digitalWrite(segD, SEGMENT_OFF); digitalWrite(segE, SEGMENT_OFF); digitalWrite(segF, SEGMENT_OFF); digitalWrite(segG, SEGMENT_OFF); break; } }

LANGKAH-LANGKAH PERCOBAAN

1. Nyalakan computer dengan program Arduino !

2. Sambungkan Trainer mikrokontroler dengan computer menggunakan kabel USB ! 3. Sambungkan kabel-kabel jumper sesuai dengan praktikum yang dilaksanakan ! 4. Ketiklah program yang diatas pada software Arduino !

33 LABORATORIUM MIKROKONTROLER UNIVERSITAS NAROTAMA SURABAYA

6. Jika tidak terjadi error lanjutkan dengan mengupload program ke dalam mikrokontroler ! 7. Amati hasilnya apakah sudah sesuai dengan perintah instruktur atau belum, kalau belum

34 LABORATORIUM MIKROKONTROLER UNIVERSITAS NAROTAMA SURABAYA

Dalam dokumen Buku Petunjuk Praktikum Mikrokontroler (Halaman 26-34)

Dokumen terkait