Tutorial Shift Register yang dimpementasikan pada Seven Segment 4 digit

Selamat berkunjung sahabat blogger, kali ini saya akan berbagi cara membuat countdown dengan menggabungkan 4 Seven Segment dengan 1 IC Shift Reigster 76HC164. Saya senang sekali berbagi ilmu ini, mungkin bagi anda hal ini sangat bermanfaat.

Arduino Uno, itulah nama dari sebuah produk hardware yang bisa anda otak atik program yang ada di dalamnya sesuai denga keinginan anda. Disini saya pakai Arduino Uno untuk mengiplentasikan sistem Countdown ini.

Alat dan Bahan yang harus di persiapkan :
  • Arduino Uno 1x
  • IC 74HC164 1x
  • Resistor 330 ohm 4x
  • Seven Segment Anode/Katode 4x (Pada tutorial ini saya menggunakan Anode Seven Segment)
  • Jumper
  • Project Board(Bread Board)
  • Laptop/PC yang sudah terinstal IDE Arduino
Langkah-langkah pengerjaan :
  • Rangkai Seven Segment dan IC  pada Project Board mengikuti rangkaian pada gambar berikut.








  • Hubungkan rangkaian ke Arduino Uno sesuai gambar tersebut.
    1. Pin 2 sebagai data
    2. Pin 3 sebagai clock
    3. Pin 4 Vcc 1  sebagai sumber daya seven segment digit 1 (paling kanan)
    4. Pin 5 Vcc 2 sebagai digit 2 
    5. Pin 6 Vcc 3 sebagai digit 3
    6. Pin 7 Vcc 4 sebagai digit 4
    Berikut rangkaian Seven Segment Paralel.










  • Setelah semua rangkaian di rangkai, silahkan cek dulu rangkaian seven segment dengan kode berikut.


  • --- Code Test Seven Segment -----

    //---------------------------------------//
    // ----------===[ KEBUN IT]===-----------//
    // --=[ Contact : kebunit@gmail.com ]=-- //
    //---------------------------------------//
    // for Anode Seven Segment
    #define ON HIGH
    #define OFF LOW
    // for Cathode Seven Segment
    //#define ON LOW
    //#define OFF HIGH
    
    // definisi port yang di pakai
    #define data 2
    #define clock 3
    #define D1 4 
    #define D2 5
    #define D3 6
    #define D4 7
    
    void setup() {
     pinMode(data,OUTPUT);
     pinMode(clock,OUTPUT);
     pinMode(D1,OUTPUT);
     pinMode(D2,OUTPUT);
     pinMode(D3,OUTPUT);
     pinMode(D4,OUTPUT);
     Serial.begin(9600);
    }
    
    // Angka 0, 1, 2, 3, 4, 5, 6, 7, 8, 9 pada Shift Register
    byte segment[]={B11000000,B01111001,B0100100,
              B0110000,B0011001,B0010010,
              B0000010,B01111000,B0000000,B0010000};
    
    void loop(){
      for (int i = 0; i < 100000; i++){
        for (int j = 0; j <=9;j++){
        shiftOut(data, clock, MSBFIRST, segment[j]); // menampilkan angka 0 sampai 9
        digitalWrite(D1, ON);
        digitalWrite(D2, ON);
        digitalWrite(D3, ON);
        digitalWrite(D4, ON);
            delay(1000);
        }
      }
    }
    

    jika code tersebut sudah berjalan sesuai keinginan. Maka selanjutnya kita akan membuat kode untuk countdown. Pada kode di atas, semua seven segment masih hidup dan menampilkan angka yang sama untuk setiap digit. Bagaimana cara agar tiap digit bisa menghasikan kombinasi angka yang kita inginkan? jawabannya adalah dengan membuat delay sendiri.

    Sistem Arduino mereprensentasikan sebuah rekursif yang terus berjalan (Infinite Loop). Kemudian Shift Register berfungsi untuk memotong arus untuk di nyalakan pada setiap pin output secara bergantian mulai dari Q0 sampai Q7. Secara logika kita tidak mungkin mengunakan delay yang lama untuk membuat sebuah countdown. Oleh karena itu, Kita bisa membuat delay manual sesuai keinginan kita. Yaitu dengan memakai salah satu operator handal yaitu % (Modulo). Modulo merupakan operator yang digunakan untuk menentukan sisa dari sebuah hasil pembagian angka. 

    Modulo berfungsi untuk memecah delay manual buatan sendiri yang dibuat pada masing-masing digit. Sehingga setiap digit berjalan sebagai angka satuan, puluhan, ratusan, dan ribuan. Dengan demikian, kita bisa melakukan perhitungan angka yang ingin kita keluarkan.

    Sistem rangkaian ini mensimulasikan penggunaan countdown yang di mulai dari sebuah angka yang mempunyai maksimal 4 digit angka dan minimal 0. Ketika sudah mencapai angka nol (0000), maka angka nol tersebut akan delay beberapa saat setelah itu akan di lakukan countdown kembali dari angka yang telah ditetapkan angka .

    Berikut kode Countdown dalam detik.
    
    //---------------------------------------//
    // ----------===[ KEBUN IT]===-----------//
    // --=[ Contact : kebunit@gmail.com ]=-- //
    //---------------------------------------//
    
    // for Anode Seven Segment
    #define ON HIGH
    #define OFF LOW
    
    // for Cathode Seven Segment
    #define ON HIGH
    #define OFF LOW
    
    #define data 2
    #define clock 3
    #define D1 4
    #define D2 5
    #define D3 6
    #define D4 7
    
    void setup() {
     pinMode(data,OUTPUT);
     pinMode(clock,OUTPUT);
     pinMode(D1,OUTPUT);
     pinMode(D2,OUTPUT);
     pinMode(D3,OUTPUT);
     pinMode(D4,OUTPUT);
     Serial.begin(9600);
    }
    
    // digit 0, 1, 2, 3, 4, 5, 6, 7, 8, 9
    byte segment[]={B11000000,B01111001,B0100100,
              B0110000,B0011001,B0010010,
              B0000010,B01111000,B0000000,B0010000};
    
    // Set angka yang anda inginkan berdasarkan digit
    // contoh Countdown dimulai dari 1000
    int angka1 = 0; // angka satuan
    int angka2 = 0; // angka puluhan
    int angka3 = 0; // angka ratusan
    int angka4 = 1; // angka ribuan
    
    int digit1 = 0, a = angka1; 
    int digit2 = 0, b = angka2; 
    int digit3 = 0, c = angka3; 
    int digit4 = 0, d = angka4; 
    int pembatas = 0;
    bool berhenti = true;
    
    void loop(){
      hitungMundur();
    }
    
    void hitungMundur(){
        digit1--;
        digit2--;
        digit3--;
        digit4--;
        if ((a == angka1)&& (b == angka2 ) && (c == angka3) && (d == angka4)){ 
          for (int x =0 ; x < 200;x++){
            Number(1,angka1);
            clearLED();
            Number(2,angka2);
            clearLED();
            Number(3,angka3);
            clearLED();
            Number(4,angka4);
            clearLED();
          }
          c = angka3-1;
          berhenti = false;
          Serial.println("Tampilan pertama timer dalam detik");
        }
        // delay angka satuan
        if (digit1 % 10 == 0) {
          a--;
          Serial.println("==>> digit1");
          clearLED();
        }
        if (digit1 < 0){
            digit1 = 100;
            a = 9;
            Serial.println("=========>> digit2");
        }
        
        // delay angka puluhan
        if (digit2 % 100 == 0) {
          b--;
          clearLED();
        }
        if (digit2 < 0){
            digit2 = 1000;
            b = 9;
            Serial.println("===================>> digit3 ");
        }
        
        // delay angka ratusan
        if (digit3 % 1000 == 0) {
          c--;
          clearLED();
        }
        if ((digit3 < 0)&&(c < 0)){
            pembatas++;
            digit3 = 1000;
            c = 9;
            Serial.println("==========================================>> digit4");
            d--;  // untuk angka ribuan (digit ke-4)
            if (d < 0) {
              d = 0;
            }
        }   
        
        Number(1,a);
        clearLED();
        Number(2,b);
        clearLED();
        Number(3,c);
        clearLED();
        Number(4,d);
        clearLED();
        
        // delay ketika |0|0|0|0|
        if ((c == 0)&&(d == 0) &&(b == 0 ) && (a == 0)){
          Serial.println("Delay untuk angka |0|0|0|0| ");
          for (int y = 0; y < 500; y++){
            Number(1,a);
            clearLED();
            Number(2,b);
            clearLED();
            Number(3,c);
            clearLED();
            Number(4,d);
            clearLED();
          }
          c = angka3;
          d = angka4;
          b = angka2;
          a = angka1;
          digit1 = 0;
          digit2 = 0;
          digit3 = 0;
          digit4 = 0;
          berhenti = true;
        }
    }
    
    void clearLED(){
      delay(3);  // Untuk setting kecepatan detik, tinggal kurangi atau tambahi nilai delay-nya
      digitalWrite(D1,OFF);
      digitalWrite(D2,OFF);
      digitalWrite(D3,OFF);
      digitalWrite(D4,OFF);
    }
    
    void Number(int digit,int angka){
      switch (digit) {
        case 1:
          digitalWrite(D1,ON);
          break;
        case 2:
          digitalWrite(D2,ON);
          break;
        case 3:
          digitalWrite(D3,ON);
          break;
        case 4:
          digitalWrite(D4,ON);
          break;
      }
      switch (angka){ 
        case 0:
            shiftOut(data, clock, MSBFIRST, segment[0]);
            break;
         case 1:
            shiftOut(data, clock, MSBFIRST, segment[1]);
            break;
        case 2:
            shiftOut(data, clock, MSBFIRST, segment[2]);
            break;
        case 3:
            shiftOut(data, clock, MSBFIRST, segment[3]);
            break;
        case 4:
            shiftOut(data, clock, MSBFIRST, segment[4]);
            break;
        case 5:
            shiftOut(data, clock, MSBFIRST, segment[5]);
            break;
        case 6:
            shiftOut(data, clock, MSBFIRST, segment[6]);
            break;
        case 7:
            shiftOut(data, clock, MSBFIRST, segment[7]);
            break;
        case 8:
            shiftOut(data, clock, MSBFIRST, segment[8]);
            break;
        case 9:
            shiftOut(data, clock, MSBFIRST, segment[9]);
            break;
      }
    }
    

    Untuk melihat log activity program, Anda bisa langsung membuka menu pada IDE Arduino. Yaitu  Tools -> Serial Monitor  atau bisa pake shortkey Ctrl+Shift+M. Anda bisa melihat hasil Looping program yang sedang berjalan.




    Semoga tutorial di atas bermanfaat untuk anda yang memanfaatkan kode di atas untuk sebuah kebaikan yang berarti. 

    Cintai negerimu dengan mencintai hal kecil dalam hidupmu. Mulai dengan berbagi ilmu, bukan maksud untuk menggurui. Namun apalah  daya diriku hanyalah mahluk ciptaan Tuhan yang hanya ingin berbagi sesuatu hal yang sederhana. Disinilah aku berbagi kepada kalian wahai generasi penerus bangsa. 

    --- Kebahagianku ketika aku bisa berbagi kepada mereka yang membutuhkan ---



    Kelemaan pacaran tapi nggak di lamar-lamar = korban PHP
    Sumber gambar

    Terkadang kita terlalu tersibukkan oleh sebuah dunia yang kurang bermanfaat untuk para remaja yaitu pacaran. Sehingga lupa untuk belajar dan meneruskan generasi para pejuang bangsa ini. Para pejuang bangsa ini telah bersusah payah untuk merdeka, namun seiiring berjalannya waktu hal itu semakin menjadi pudar.


    Pacaran menjadi budaya yang nge-tren bagi anak remaja jaman sekarang. Muncullah berbagai istilah yang sudah tidak asing ditelinga seperti Cinta Monyet, CLBK, PHP, dll. Daripada di PHP-in(Pemberi Harapan Palsu) cewek mending kita belajar bahasa yang membuat hidup anda dinamis seperti layaknya web responsive.

    PHP(Hypertext Preprocessor) merupakan server side scipting language dan juga merupakan general purpose programming language yang secara khusus di gunakan untuk mengembangkan situs web dan bisa di masukkan ke dalam HTML. Berikut saya bagi kode simple yang mudah-mudahan bermanfaat.

    <!-- File name : apaaja.php tapi lebih enak pake index.php untuk coba-coba -->
    <!DOCTYPE HTML>
    <html>
        <head>
            <title>Pemberi Harapan Palsu</title>
        </head>
        <body>
            <?php
     echo "Echo : Hai, Aku echo PHP. Kamu siapa? <br/>";
     print(" Print : Aku print PHP. Echo aku ingin mengatakan sesuatu 
    kepadamu <br/>");
     echo "Echo : wah .. so sweet. kau buat aku penasaran. emang 
    kamu mau bilang apa?<br/>";
     print("Print : engg... kasih tau gak yaaaww....haha... <br/>");
            ?>
        </body>
    </html>
    

    itulah sekilah tentang PHP. Jangan lupa PHP tidak bisa berjalan tanpa server. Untuk itu kita harus membuat server lokal dalam laptop/komputer kita agar bisa menjalan PHP. Server lokal bisa pake aplikasi XAMPP untuk Window/Linux,WAMP server untuk Windows, LAMPP server untuk Linux.

    "Sampaikanlah kebaikan meskipun hanya sebuah bahasa PHP"
    "Semangat belajar putra-putri generasi bangsa di masa yang akan datang...".
    "Belajar memang butuh kesabaran dan perjuangan. Urusan hasil itu bukan urusan manusia.."
    --------------------------------------Good Day -------------------------------------------



    Angklung adalah alat musik multitonal (bernada ganda) yang secara tradisional berkembang dalam masyarakat Sunda di Jawa Barat. Alat musik ini dibuat dari bambu, dibunyikan dengan cara digoyangkan (bunyi disebabkan oleh benturan badan pipa bambu) sehingga menghasilkan bunyi yang bergetar dalam susunan nada 2, 3, sampai 4 nada dalam setiap ukuran, baik besar maupun kecil.

    Dictionary of the Sunda Language karya Jonathan Rigg, yang diterbitkan pada tahun 1862 di Batavia, menuliskan bahwa angklung adalah alat musik yang terbuat dari pipa-pipa bambu, yang dipotong ujung-ujungnya, menyerupai pipa-pipa dalam suatu organ, dan diikat bersama dalam suatu bingkai, digetarkan untuk menghasilkan bunyi. Angklung terdaftar sebagai Karya Agung Warisan Budaya Lisan dan Nonbendawi Manusia dari UNESCO sejak November 2010.
    Sumber : http://id.wikipedia.org/wiki/Angklung

    Download Gambar


    Selalu ada cara untuk membuat diri kita bahagia, Salah satunya adalah dengan berbagi kepada sesama...
    Sumber gambar : http://cdn.klimg.com/vemale.com/p/Menebak_Sifat_Berdasarkan_Tanggal_Lahir2.jpg

    IGOS Nusantara disingkat IGN adalah sistem operasi dengan perangkat lunak legal, handal dan tanpa membayar lisensi untuk pengguna di Indonesia

    iGOS Nusantara


    The majority of people in developed countries spend at least some time interacting with the Internet, and Governments are abusing that necessity in secret to extend their powers beyond what is necessary and appropriate
    Edward Snowden
    Sumber gambar : salon.com


    Linux BlankOn adalah distribusi Linux yang dikembangkan oleh Yayasan Penggerak Linux Indonesia (YPLI) dan Tim Pengembang BlankOn. Distribusi ini dirancang sesuai dengan kebutuhan pengguna komputer umum di Indonesia.
    BlankOn OS
    Sumber gambar : http://www.blankonlinux.or.id/


    Security is always going to be a cat and mouse game because there'll be people out there are hunting for the zero day award, you have people that don't have configuration management, don't have vulnerability management, don't have patch management
    Kevin Mitnick
    Sumber gambar : http://www.ndtv.com


    Today is cruel. Tomorrow is crueler. And the day after tomorrow is beautiful.




    Jack Ma
    Sumber gambar :http://www.2luxury2.com/


    As we complete this fiscal year, we are focusing our efforts on expanding our services to include mobile entertainment, either through acquisitions or through internal growth. We believe the opportunity within the mobile industry is with mobile entertainment, including such things as ring tones, wallpapers and other sources of media
    Michael Cowpland
    Sumber gambar : http://www.execphoto.ca/images/Michael%20Cowpland.jpg


    Programmer are in the enviable position of not ony getting to do what they want to, but because the end result is so important they get paid to do it. They are other professions like thet, but not that many
    Linus Torvalds
    Sumber gambar :http://news.softpedia.com/news/Linus-Torvalds-Says-Linux-Binary-Packages-Are-Terrible-Valve-Might-Save-the-Desktop-458087.shtml


    Your time is limited, so don’t waste it living someone else’s life.

    Steve Jobs
    Sumber gambar : http://blogs.kqed.org/stateofhealth/files/2011/11/Jobs_2003_rev1.jpg


    Most good programmers do programming not because expect to get paid or get adulation by the public, but because it is fun to program
    Linus Torvalds
    Sumber gambar : http://www.quotessays.com/gallery/linus-torvaldss-quotes-5.jpg.html


    "Legacy code" often differs from its suggested alternative by actually working and scaling.


    Bjarne Stroustrup's
    Sumber gambar : https://parasol.tamu.edu/~bs/

    ~ KEBUN IT ~

    ~ sebuah catatan panjang dalam perjalanan ~

    Copyright © | KEBUN IT | All Right Reserved