Let’s Get Pro With Arduino! - Chapter 2

Playing with 7Segment

By: Ahmad Idham T Lubis / 18214027

Holla! Selamat datang kembali pada blog ini. Setelah sebelumnya kita menjelajah Arduino dengan menggunakan LED dan PushButton serta mengenal debounce, kini kita akan mengenal kinerja Seven Segment. Apa yang dimaksud dengan Seven Segment? Seven Segment (7Segment aja deh biar tidak terlalu panjang hihihi~) adalah perangkat elektronik yang mampu menampilka 10 simbol numeral dengan menggunakan kombinasi 10 buah lampu LED. Perangkat ini banyak digunakan dalam berbagai barang yang menggunakan rangkaian elektronika dalam penunjukkan angka.

Sumber: http://www.tandyonline.co.uk/media/catalog/product/cache/1/image/9df78eab33525d08d6e5fb8d27136e95/7/-/7-segment-led.png

Tugas kedua kami kali ini adalah membuat 7Segment yang dihubungkan pada PushButton. Maksud dari tugas ini adalah memperkenalkan perangkat 7Segment mengajarkan bahwa kita dapat mengendalikan perilaku 7Segment dengan menggunakan perangkat lainnya. Pada percobaan ini akan digunakan push button. Ide utama saya adalah 7Segment akan meningkat nilainya (dari 0 sampai 9 lalu kembali ke 0) berdasarkan perintah pengguna. Perintah pengguna dibaca menggunakan Push Button. Nah sekianlah pembukanya, sekarang mari kita mulai percobaan ini~

Alat dan bahan yang akan digunakan adalah:

· 1 buah Arduino UNO

· 1 buah Breadboard

· 1 buah 7Segment Katoda

· 3 buah resistor 1K Ohm

· 1 buah Push Button

· Kabel Jumper Male2Male secukupnya

Sumber: http/www.learningaboutelectronics.com/images/arduino-7-segment-LED-display-circuit.png

Source Code

// LED as 7Segment
/*
const int segment1 = 2;
const int segment2 = 3;
const int segment3 = 4;
const int segment4 = 5;
const int segment5 = 6;
const int segment6 = 7;
const int segment7 = 8;

const int segmentDot = 9; //Khusus pada 7Segment

const int buttonPin = 11;

int buttonState;
int prev;

int segmentState = 0;

// the follow variables are long’s because the time, measured in miliseconds,
// will quickly become a bigger number than can be stored in an int.
long time = 0; // the last time the output pin was toggled
long debounce = 100; // the debounce time, increase if the output flickers

void setup() {
 // put your setup code here, to run once:
 pinMode(segment1, OUTPUT);
 pinMode(segment2, OUTPUT);
 pinMode(segment3, OUTPUT);
 pinMode(segment4, OUTPUT);
 pinMode(segment5, OUTPUT);
 pinMode(segment6, OUTPUT);
 pinMode(segment7, OUTPUT);
 pinMode(segmentDot, OUTPUT);

pinMode(buttonPin, INPUT);
 buttonState = LOW;
 prev = LOW;
}

void loop() {

// read the state of the pushbutton value:
 buttonState = digitalRead(buttonPin);
 
 // check if the pushbutton is pressed.
 // if it is, the buttonState is HIGH
 // buttonState == HIGH means lightState go it reverse condition
 if (buttonState == HIGH && prev == LOW && millis() — time > debounce) {
 ++segmentState; // Jika PushButton ditekan, angka pada 7Segment naik satu

if(segmentState == 10){
 segmentState = 0;
 }
 
 time = millis(); 
 }
 
 
 switch (segmentState) {
 case 0:
 //nilai 0
 digitalWrite(segment1, HIGH);
 digitalWrite(segment2, HIGH);
 digitalWrite(segment3, HIGH);
 digitalWrite(segment4, HIGH);
 digitalWrite(segment5, HIGH);
 digitalWrite(segment6, HIGH);
 digitalWrite(segment7, LOW);
 break;
 case 1:
 //nilai 1
 digitalWrite(segment1, LOW);
 digitalWrite(segment2, LOW);
 digitalWrite(segment3, HIGH);
 digitalWrite(segment4, HIGH);
 digitalWrite(segment5, LOW);
 digitalWrite(segment6, LOW);
 digitalWrite(segment7, LOW);
 break;
 case 2:
 //nilai 2
 digitalWrite(segment1, HIGH);
 digitalWrite(segment2, HIGH);
 digitalWrite(segment3, HIGH);
 digitalWrite(segment4, LOW);
 digitalWrite(segment5, HIGH);
 digitalWrite(segment6, LOW);
 digitalWrite(segment7, HIGH);
 break;
 case 3:
 //nilai 3
 digitalWrite(segment1, HIGH);
 digitalWrite(segment2, HIGH);
 digitalWrite(segment3, HIGH);
 digitalWrite(segment4, HIGH);
 digitalWrite(segment5, LOW);
 digitalWrite(segment6, LOW);
 digitalWrite(segment7, HIGH);
 break;
 case 4:
 //nilai 4
 digitalWrite(segment1, LOW);
 digitalWrite(segment2, LOW);
 digitalWrite(segment3, HIGH);
 digitalWrite(segment4, HIGH);
 digitalWrite(segment5, LOW);
 digitalWrite(segment6, HIGH);
 digitalWrite(segment7, HIGH);
 break;
 case 5:
 //nilai 5
 digitalWrite(segment1, HIGH);
 digitalWrite(segment2, HIGH);
 digitalWrite(segment3, LOW);
 digitalWrite(segment4, HIGH);
 digitalWrite(segment5, LOW);
 digitalWrite(segment6, HIGH);
 digitalWrite(segment7, HIGH);
 break;
 case 6:
 //nilai 6
 digitalWrite(segment1, HIGH);
 digitalWrite(segment2, HIGH);
 digitalWrite(segment3, LOW);
 digitalWrite(segment4, HIGH);
 digitalWrite(segment5, HIGH);
 digitalWrite(segment6, HIGH);
 digitalWrite(segment7, HIGH);
 break;
 case 7:
 //nilai 7
 digitalWrite(segment1, HIGH);
 digitalWrite(segment2, LOW);
 digitalWrite(segment3, HIGH);
 digitalWrite(segment4, HIGH);
 digitalWrite(segment5, LOW);
 digitalWrite(segment6, LOW);
 digitalWrite(segment7, LOW);
 break;
 case 8:
 //nilai 8
 digitalWrite(segment1, HIGH);
 digitalWrite(segment2, HIGH);
 digitalWrite(segment3, HIGH);
 digitalWrite(segment4, HIGH);
 digitalWrite(segment5, HIGH);
 digitalWrite(segment6, HIGH);
 digitalWrite(segment7, HIGH);
 break;
 case 9:
 //nilai 9
 digitalWrite(segment1, HIGH);
 digitalWrite(segment2, HIGH);
 digitalWrite(segment3, HIGH);
 digitalWrite(segment4, HIGH);
 digitalWrite(segment5, LOW);
 digitalWrite(segment6, HIGH);
 digitalWrite(segment7, HIGH);
 break;
 default:
 //DEFAULT: Tidak terbaca, nyalakan semua lampu termasuk dot
 digitalWrite(segment1, HIGH);
 digitalWrite(segment2, HIGH);
 digitalWrite(segment3, HIGH);
 digitalWrite(segment4, HIGH);
 digitalWrite(segment5, HIGH);
 digitalWrite(segment6, HIGH);
 digitalWrite(segment7, HIGH);
 digitalWrite(segmentDot, HIGH);
 break;
 }
 prev = buttonState;

Hasil akhir rangkaian

Masalah utama yang dihadapi adalah penyusunan rangkaian 7Segment yang sederhana. 7Segment membutuhkan 10 jumper untuk memastikan perangkat bekerja dengan baik, oleh sebab itu perlu dibuat rangkaian yang sederhana tanpa mempersulit pengembang dalam mengintegrasikan perangkat dengan microcontroller. Sebagai solusi penyederhanaannya, saya hanya menggunakan 2 resistor 1K ohm yang dihubungkan kepada pin cc secara paralel.

Oke sekian perjalanan kami mengoprek 7Segment. Nantikan perjalanan berikutnya ya ;)

Hasil akhir proyek