Tutorial LED 7 Segment dengan Arduino



Sepertinya sudah cukup banyak website yang memuat artikel tentang basic arduino, jadi saya kali ini hanya membahas project-project sederhana yang mudah dimengerti oleh pemula dalam elektronika digital. Memang sudah saatnya bagi kita untuk mempelajari elektronika digital, karena hampir semua hardware dapat dikendalikan secara mudah bahkan otomatis melalui microcontroller. Yang perlu anda pahami sebelum mempelajari arduino adalah dasar elektronika, lebih baik lagi jika anda sudah mengerti bahasa pemrograman seperti C, C++ atau sejenisnya, anda tidak akan kesulitan memahami bahasa pemrograman yang digunakan pada arduino.  Jika belum menguasai bahasa pemrograman, sebaiknya anda pelajari dulu, agar anda mengerti fungsi code tiap barisnya, jangan asal copas source code tanpa mengerti fungsinya.


LED 7 segment adalah LED display yang digunakan untuk menapilkan angka, disebut 7 segment karena ada tujuh buah led yang membentuk angka delapan (terdiri dari segment a, b, c, d, e, f, g), dan tambahan DP atau decimal point atau titik.



ada dua jenis LED 7 segment di pasaran, yaitu common cathode dan common anode, perbedaannya bisa anda lihat di atas. Untuk menampilkan angka yang diinginkan, anda hanya perlu mengatur nyala LED tiap segmen, seperti tabel di bawah ini

Digit    fedcba
abcdefg
a
b
c
d
e
f
g

0             0×3F
0×7E
on
on
on
on
on
on
off

1             0×06
0×30
off
on
on
off
off
off
off

2             0×5B
0×6D
on
on
off
on
on
off
on

3             0×4F
0×79
on
on
on
on
off
off
on

4             0×66
0×33
off
on
on
off
off
on
on

5             0×6D
0×5B
on
off
on
on
off
on
on

6             0×7D
0×5F
on
off
on
on
on
on
on

7             0×07
0×70
on
on
on
off
off
off
off

8             0×7F
0×7F
on
on
on
on
on
on
on

9             0×6F
0×7B
on
on
on
on
off
on
on

Percobaan 1


Menyalakan tiap segment LED dari "a" sampai "g" secara berurutan




Alat dan bahan



  • 1x Arduino (terserah anda, boleh NANO, UNO atau MEGA)
  • 1x Breadboard atau project board
  • 1x LED 7 Segment (terserah anda, common anode atau common cathode, tinggal disesuaikan source code, dan pin tengah 7 segment)
  • 1x resistor 1k
  • Kabel jumper secukupnya
Skematik
Skema untuk common anode, untuk common cathode pin tengah disambung ke GND via resistor 1k

Pin arduino        Pin LED

      2                    a

      3                    b
      4                    c
      5                    d
      6                    e
      7                    f
      8                    g

Source code:


 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
void setup()
{
  // mendefinisikan mode pin
  
 pinMode(2,OUTPUT);
 pinMode(3,OUTPUT);
 pinMode(4,OUTPUT);
 pinMode(5,OUTPUT);
 pinMode(6,OUTPUT);
 pinMode(7,OUTPUT);
 pinMode(8,OUTPUT);
 
} 

void loop() 
{
  // loop untuk menyalakan tiap segmen LED
  
  for(int i=2;i<9;i++){  //i adalah nomor pin arduino yang digunakan LED 
    digitalWrite(i,HIGH);  //HIGH untuk nyala
    delay(600);
  }
  
  // loop untuk mematikan tiap segmen LED
  for(int i=2;i<9;i++){
    digitalWrite(i,LOW); //LOW untuk mati
    delay(600);
  }
  
  delay(1000);
}

Percobaan kedua


Menampilkan hitung mundur dari 9 sampai 0 dengan delay 1 detik, skema sama seperti percobaan pertama


Source code


 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
//deklarasi array untuk LED common anode: 0 untuk nyala, 1 untuk mati
//untuk LED common cathode: 0 untuk mati, 1 untuk nyala (edit array di bawah ini)

int numArray[10][7] = {   { 0,0,0,0,0,0,1 },    // 0
                          { 1,0,0,1,1,1,1 },    // 1
                          { 0,0,1,0,0,1,0 },    // 2
                          { 0,0,0,0,1,1,0 },    // 3
                          { 1,0,0,1,1,0,0 },    // 4
                          { 0,1,0,0,1,0,0 },    // 5
                          { 0,1,0,0,0,0,0 },    // 6
                          { 0,0,0,1,1,1,1 },    // 7
                          { 0,0,0,0,0,0,0 },    // 8
                          { 0,0,0,0,1,0,0 }};   // 9

void numWrite(int);

void setup() 
{ 
  // set pin modes
  pinMode(2, OUTPUT);   
  pinMode(3, OUTPUT);
  pinMode(4, OUTPUT);
  pinMode(5, OUTPUT);
  pinMode(6, OUTPUT);
  pinMode(7, OUTPUT);
  pinMode(8, OUTPUT); 
}

void loop() 
{ 
  //counter loop
  for (int counter = 10; counter > 0; --counter) 
  {
   delay(1000);
   numWrite(counter-1); 
  }
  delay(1000); //delay dalam milisecond
}

// method untuk menulis nilai ke LED
void numWrite(int number) 
{
  int pin= 2;
  for (int j=0; j < 7; j++) {
   digitalWrite(pin, numArray[number][j]);
   pin++;
  }
}


Percobaan ketiga
Menampilkan angka 1 sampai 9 dengan trigger input user



Alat dan bahan



  • 1x Arduino (terserah anda, boleh NANO, UNO atau MEGA, tinggal disesuaikan pin digital outputnya)
  • 1x Breadboard atau project board
  • 1x LED 7 Segment (terserah anda, common anode atau common cathode, tinggal disesuaikan di source code-nya)
  • 1x resistor 1k
  • 1x resistor 10k
  • 1x tactile switch
  • Kabel jumper secukupnya
Skematik

Source code


 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
//array untuk common anode
int num_array[10][7] = {  { 0,0,0,0,0,0,1 },    // 0
                          { 1,0,0,1,1,1,1 },    // 1
                          { 0,0,1,0,0,1,0 },    // 2
                          { 0,0,0,0,1,1,0 },    // 3
                          { 1,0,0,1,1,0,0 },    // 4
                          { 0,1,0,0,1,0,0 },    // 5
                          { 0,1,0,0,0,0,0 },    // 6
                          { 0,0,0,1,1,1,1 },    // 7
                          { 0,0,0,0,0,0,0 },    // 8
                          { 0,0,0,0,1,0,0 }};   // 9
                                       

void Num_Write(int);
int buttPin= 9;       //deklarasi pin 9 untuk button
int buttState= 0;

int counter=0;

void setup() 
{ 
  // set pin modes
  pinMode(2, OUTPUT);   
  pinMode(3, OUTPUT);
  pinMode(4, OUTPUT);
  pinMode(5, OUTPUT);
  pinMode(6, OUTPUT);
  pinMode(7, OUTPUT);
  pinMode(8, OUTPUT);
  pinMode(buttPin, INPUT);
}

void loop(){
  buttState = digitalRead(buttPin);   //membaca input dari button
  
    if(buttState == HIGH){        //fungsi logika untuk membaca input
       if(counter == 0){          
          counter = +0;
       }
       counter++;                 //untuk menambah angka yang ditampilkan
       numWrite(counter);         //memanggil function numWrite
       delay(300);                //jeda tiap tambah angka
       if(counter == 9){          //jika led menampilkan angka 9, panggil method resetFunc
        resetFunc();
       }
    }
}

void numWrite(int number) //method untuk menulis angka ke LED
{
  int pin= 2;
  for (int j=0; j < 7; j++) {
   digitalWrite(pin, num_array[number][j]);
   pin++;
  }
}
void resetFunc() // method untuk me-reset arduino (mengulangi eksekusi code dari awal)
{
asm volatile ("  jmp 0");  
//@dukun_elektro_2017
}  

Cukup sekian tutorial LED 7 segment vs Arduino kali ini, silakan komentar di bawah jika ada koreksi atau pertanyaan.

Video



Selamat bereksperimen ^_^


No comments:

Post a Comment