Lompat ke konten Lompat ke sidebar Lompat ke footer

Arduino Part 10. Membuat Up-Counter Arduino

Pada project kali ini kita membuat up-counter dari 3 buah seven segment dan arduino. Bisa mencacah angka mulai dari 000 hingga 999.Kita juga menggunakan sketch program arduino yang berbeda dari cara sebelumnya.

Rangkaian up-counter ini bisa dikembangkan cacahan-nya dengan cara menambah jumlah seven segment dan memodifikasi sketch programnya. 

7 segment arduino

Untuk membuat suatu up counter kita membutuhkan alat dan bahan antara lain:

  • Arduino uno
  • 7-Segment
  • Projectboard
  • Kabel jumper male to male
  • Kabel tunggal diameter 1 mm
  • Tang potong
  • Tang kupas kabel

Setelah alat dan bahan sudah disediakan maka rakitlah rangkaian upcounter seperti pada gambar skema rangkaian dibawah ini:

7 segment arduinoUntuk kerapihan maka potonglah kabel tunggal 1 mm sesuai jarak antar lubang pada project board. Pemasangan ini harus teliti dan tidak boleh salah, karena jika satu saja kabel yang salah maka bisa saja penyalaan sevensegment tidak sesuai yang kita harapkan. Keuntungan lainnya jika kita memasang kabel dengan rapih maka lebih mudah mengecek kesalahan yang terjadi terutama saat mengurutkan kabel. Hasil perakitan bisa lihat gambar di bawah ini :

7 segment arduino

Pasanglah resistor dengan berurutan yaitu mulai dari sebelah kiri ke kanan yaitu : a,b,c,d,e,f,g,dp. Pin yang sama pada semua 7 segment (a,b,c,d,e,f,g,dp ) dijadikan satu.  Jadi pin “a” pada 7 segment pertama, digabung menjadi satu dengan pin “a” pada  7 segment ke-dua dan pin "a" pada  7 segment  ke-3. Begitu juga untuk pin b, dan pin-c, dst hingga pin-dp.  

Lah,…kalau digabung menjadi satu maka angka yang akan ditampilkan akan sama semua dong?

Tentu saja TIDAK karena untuk menyalakan 7-segment bukan hanya pengaturan pin penyalaan segment saja (a,b,c,d,e,f,g,dp ) akan tetapi ada lagi pin control di common. Selama pin tidak di aktifkan maka 7-segment belum bisa menyala. Kalau ada yang belum jelas tentang common maka bisa baca materi tentang Cara menghidupkan 7-segment.

Prinsip penyalaan pada 7-segment yang jumlahnya banyak atau lebih dari satu adalah dengan sistem multiplekser. Jadi 7-segmen dinyalakan dengan sistem bergilir (scanning). Jadi proses pertama yang menyala adalah 7-segment pertama, lalu berikutnya 7-segment kedua, dan terakhir 7-segment ketiga, setelah selesai maka giliran penyalaan akan kembali lagi keawal yaitu seven pertama lagi.

Terus kalau begitu maka nyala 7-segment akan berkedip dong? karena ada proses hidup, mati, hidup, mati…dst.

Tentu aja TIDAK BERKEDIP asal saklar penyalaannya dibuat sangat cepat atau dengan kata lain dibuat dengan frekuensi yang tinggi. Jadi kalau pensaklaran dengan frekuensi tinggi maka kedipan hidup matinya LED pada 7-segment tidak akan terlihat lagi oleh mata. 

Untuk lebih jelasnya lihat pada video konsep dasar multiplekser di bawah ini :



Mata memiliki keterbatasan dalam melihat objek yang bergerak sangat cepat. Sehingga dengan sistem pensaklaran yang sangat cepat maka penyalaan segment terlihat normal dan semua lampu LED seven segment seolah-olah terlihat menyala secara bersamaan, padahal kenyataannya penyalaan seven segment dibuat secara bergantian/bergilir. Keuntungannya juga dengan sistem multiplekser ini adalah hemat arus listrik. Jadi walaupun ke-3 buah  seven segment menyala berbarengan, akan tetapi arus listrik yang mengalir tetap hanya untuk 1 buah seven segment saja. Jadi dengan sistem multiplekser maka 3 segmen yang hidup tetapi arus listrik yang mengalir tetap 1 segmen saja....hemat bukan.

Untuk mengatur penyalaan seven segment dengan sistem multiplekser atau scanning maka dibutuhkan suatu mikrokontroller seperti Arduino. Dengan menggunakan Arduino maka sistem scnning bisa dikontrol dengan frekuensi yang cukup tinggi. Untuk mengatur pensaklaran ini bisa memanfaatkan pin common pada seven segment. Jadi pin common diatur agar aktifnya secara bergiliran. Saat common segment yang pertama aktif, maka semua common segment lainnya tidak aktif, begitu juga pada saat common segment ke-2 aktif maka semua common segment lainnya dibuat tidak aktif.  Dengan demikian penyalaan  common bisa bergilir. Pada rangkaian ini pin control common terhubung ke Arduino pada pin 10, 11, dan 12.

Setelah selesai merakit maka hubungkanlah kabel jumper male to male antara project board dengan Arduino. Setelah itu ketiklah sketch program di bawah ini:

// Menghidupkan 3 buah seven segment (up-Counter)
// Oleh : Hendry Kurniawan
#define A 2
#define B 3
#define C 4
#define D 5
#define E 6
#define F 7
#define G 8
#define DP 9

// Pin pengendali untuk common
#define CA1 10
#define CA2 11
#define CA3 12

// Pin penyalaan segment
const int segs[8] = { A, B, C, D, E, F, G, DP};

// Data penyalaan segment common anode
const byte numbers[10] = { 0b11000000, 0b11111001, 0b10100100, 0b10110000, 0b10011001, 0b10010010, 0b10000010, 0b11111000, 0b10000000, 0b10010000 };

void setup()
{
  pinMode(A, OUTPUT);
  pinMode(B, OUTPUT);
  pinMode(C, OUTPUT);
  pinMode(D, OUTPUT);
  pinMode(E, OUTPUT);
  pinMode(F, OUTPUT);
  pinMode(G, OUTPUT);
  pinMode(DP, OUTPUT);
  pinMode(CA1, OUTPUT);
  pinMode(CA2, OUTPUT);
  pinMode(CA3, OUTPUT);
}

void loop()
{
  for (int digit1 = 0; digit1 < 10; digit1++) {
    for (int digit2 = 0; digit2 < 10; digit2++) {
      for (int digit3 = 0; digit3 < 10; digit3++) {
      unsigned long startTime = millis();
      for (unsigned long elapsed = 0; elapsed < 600; elapsed = millis() - startTime) {
        lightDigit1(numbers[digit1]);
        delay(5);
        lightDigit2(numbers[digit2]);
        delay(5);
        lightDigit3(numbers[digit3]);
        delay(5);
       }
      }
    }
  }
}

//sistem scanning pada common
void lightDigit1(byte number) {
  digitalWrite(CA1, HIGH);
  digitalWrite(CA2, LOW);
  digitalWrite(CA3, LOW);
  lightSegments(number);
}

void lightDigit2(byte number) {
  digitalWrite(CA1, LOW);
  digitalWrite(CA2, HIGH);
  digitalWrite(CA3, LOW);
  lightSegments(number);
}

void lightDigit3(byte number) {
  digitalWrite(CA1, LOW);
  digitalWrite(CA2, LOW);
  digitalWrite(CA3, HIGH);
  lightSegments(number);
}

void lightSegments(byte number) {
  for (int i = 0; i < 8; i++) {
    int bit = bitRead(number, i);
    digitalWrite(segs[i], bit);
  }
}

Setelah selesai silahkan simpan dan lakukan verify untuk mengecek kalau ada kesalahan dalam pengetikan sketch program. Kalau sudah sukses lakukan upload program ke board arduino. Jika sukses maka Arduino bisa menampilkan angka mulai dari 000 s.d 999.

7 segment arduino


Untuk pengembangan lebih lanjut maka rangkaian seven segment bisa dibuat lebih sederhana dengan menggunakan IC driver seperti IC MAX72XX.

Demikianlah materi ini, kalau ini bermanfaat sudilah kiranya menbagikan link website ini ke orang lain, atau ke medsos, dll. Silahkan klik "IKUTI"  agar tidak tertinggal informasi-informasi lainnya.

Posting Komentar untuk "Arduino Part 10. Membuat Up-Counter Arduino"