Rabu, 13 Juli 2022

Membuat Adjustable Power Supply LM358

Adjustable Power Supply LM358

 Pada proyek-proyek sebelumnya saya telah membuat rangkaian adjustable power supply yang menggunakan IC LM324 dan sudah saya gunakan untuk keperluan sehari-hari hingga saat ini, adjustable power supply LM324 ini sudah ada fitur limit arus sehingga aman digunakan tanpa harus takut rusak ketika terjadi korslet tanpa sengaja disamping itu meskipun jenisnya linear namun saat digunakan dengan beban tidak terlalu panas pada transistor nya, untuk proyek adjustable power supply LM324 ini dapat dilihat kembali artikel lengkapnya pada halaman ini, dan ini dia hasilnya.


Adjustable Power Supply LM324
Adjustable Power Supply LM324

Nah saat saya browsing diinternet untuk mencari referensi rangkaian elektronika lainnya pada situs rcl-radio.ru saya menemukan sebuah rangkaian yang sederhana dan mirip seperti proyek adjustable power supply LM324 sebelumnya namun rangkaiannya terlihat sangat sederhana sekali sehingga saya ingin mencobanya apakah rangkaiannya benar-benar bisa berfungsi layaknya rangkaian adjustable power supply LM324 yang telah saya buat sebelumnya? Dan menariknya rangkaian adjustable power supply LM358 ini bisa dikombinasikan bersama mikrokontroller untuk pengaturan yang lebih lengkap mengenai proteksi, arus hingga kontrol suhu transistor final yang bisa menghentikan rangkaian apabila batas suhu yang telah ditetapkan terpenuhi, dibawah ini saya tampilkan skemanya beserta layout yang telah saya desain. 


Baca juga : Membuat Adjustable Power Supply LM324 


Skema Adjustable Power Supply LM358
Skema Adjustable Power Supply LM358 

Layout Adjustable Power Supply LM358
Layout Adjustable Power Supply LM358

Untuk file gerber bisa juga di Download atau pesan langsung di situs PCBWay pada tautan berikut ini 


Setelah layout dirasa sudah sesuai selanjutnya saya unggah file gerber nya ke situs PCBWay.com untuk dicetak menjadi sebuah pcb keren yang biaya cetaknya hanya 5 dolar saja untuk 5 hingga 10 pcs PCB dengan berbagai pilihan warna menarik dan untuk proyek kali ini saya memilih warna hitam glossy karena saya lagi suka dengan pcb warna hitam glossy tersebut, bagi kamu yang ingin mencetak pcb di situs PCBWay ada banyak keuntungan yang bisa kita dapatkan di antaranya adalah saldo welcome bonus sebesar 5 dolar untuk biaya cetak pcb di PCBWay untuk pendaftar akun pertama kemudian ada banyak bonus berupa beans yang bisa kita tukarkan dengan berbagai macam modul, sensor-sensor, kit hingga biaya cetak pcb jadi tunggu apa lagi ayo daftar akun PCBWay sekarang juga melalui tautan ini. 


Pcbway.com
PCBWay.com 

Dapatkan saldo welcome bonus saat mendaftar akun PCBWay
Dapatkan saldo welcome bonus saat mendaftar akun PCBWay 

Dimensi atau ukuran dari PCB Adjustable Power Supply LM358 ini sangatlah mungil karena hanya menggunakan komponen yang sedikit bahkan untuk ic LM358 pun yang dipakai hanya satu opamp saja dari dua opamp yang tersedia namun demikian rangkaian adjustable power supply LM358 ini dapat berfungsi dengan sebagai mana mestinya tapi mesti diingat bahwa rangkaian ini belum ada rangkaian proteksinya apabila digunakan tanpa tambahan mikrokontroller jadi harus hati-hati jangan sampai terjadi arus pendek yang dapat mengakibatkan transistor final rusak sebaliknya jika sudah ditambah dengan mikrokontroller maka rangkaian sederhana ini dapat menjadi sebuah rangkaian adjustable power supply yang kaya fitur, inilah pcb adjustable power supply LM358 yang telah saya dapatkan dari PCBWay. 


Baca juga : Cara Modifikasi ATX PSU adjustable 0 - 25V 10A 


PCB Adjustable Power Supply LM358
PCB Adjustable Power Supply LM358 

Baiklah kini saatnya kita menyimak pembuatan rangkaian adjustable power supply LM358 ini lengkap hinggap percobaan menggunakan beban pada video berikut ini. 



Senin, 11 Juli 2022

Membuat Adjustable Power Supply LM324

 Kebutuhan akan tegangan yang bervariasi saat menguji sebuah rangkaian sangat diperlukan untuk itu saya mencoba membuat sebuah rangkaian power supply yang keluarannya bisa di atur bervariasi sesuai kebutuhan yang diperlukan. Skema yang saya coba adalah sebuah skema adjustable power supply atau skema power supply variabel yang menggunakan komponen utama berupa IC quad opamp LM324, ic quad opamp ini digunakan sebagai satu kesatuan yang mulai dari oscillator hingga pembanding untuk tegangan dan arus. Rangkaian adjustable power supply LM324 ini sebelumnya sudah saya buat dengan menggunakan pcb yang dicetak sendiri dan telah saya gunakan, artikelnya bisa dilihat pada tautan ini dan seperti inilah layout PCB dan implementasinya. 


Layout Adjustable Power Supply LM324
Layout Adjustable Power Supply LM324


Hasil akhir Adjustable Power Supply LM324
Hasil akhir Adjustable Power Supply LM324

Berikut ini saya tampilkan skema yang saya gunakan untuk keperluan pembuatan layout PCBnya.


Skema Adjustable Power Supply LM324
Skema Adjustable Power Supply LM324 

Karena rangkaian Adjustable Power Supply LM324 ini sudah terbukti bermanfaat dan telah lama saya gunakan untuk keperluan sehari-hari maka saya coba buat kembali layoutnya namun dengan memakai resistor seperempat watt dan tataletak nya yang disusun kembali lebih kompak sehingga mengurangi dimensi pcb menjadi lebih kecil dan disamping itu ditambah lagi penambahan potensiometer untuk pengaturan tegangan keluaran menjadi dua yaitu untuk pengaturan tegangan kasar (Coarse) yang pergerakan tegangannya kasar atau besar yang ketika diputar bergeser hitungan volt dan untuk pengaturan tegangan lembut (Fine) yang ketika diputar bergeser hitungan dibawah satu volt jadi sangat cocok ketika menginginkan tegangan yang pas sesuai keinginan.


 Nah setelah selesai pembuatan layout baru tersebut kemudian layoutnya dikonversi ke berkas gerber agar bisa dicetak ke situs PCBWay.com karena hanya dengan biaya cetak 5 dolar saja kita bisa mendapatkan 5 hingga 10 pcs PCB dengan kualitas yang tentunya super keren, disamping itu jika kita belum pernah pesan pcb dan belum memiliki akun PCBWay maka ketika daftar akun untuk pertama kalinya kita akan mendapatkan saldo welcome bonus sebesar 5 dolar untuk biaya cetak, gimana menarik bukan? Silakan daftar akun PCBWay sekarang juga melalui tautan ini.


Pcbway.com
PCBWay.com

Daftar akun baru PCBWay
Daftar akun baru PCBWay 

Untuk file gerber rangkaian adjustable power supply LM324 ini bisa juga di Download atau langsung cetak di situs PCBWay pada tautan berikut ini. 



Setelah pcbnya saya terima sekitar seminggu setelah pemesanan, lalu mulai saya rakit hingga selesai dan kemudian dicoba dengan hasil yang sesuai harapan, dibawah ini saya tampilkan mulai dari PCB yang belum dirakit hingga rangkaian yang telah selesai diisi komponen.


PCB Adjustable Power Supply LM324 cetakan PCBWay
PCB Adjustable Power Supply LM324 cetakan PCBWay

PCB + kit adjustable power supply LM324
PCB + kit adjustable power supply LM324 

Oke kini saatnya kita lihat proses keseluruhan mulai dari pembuatan hingga test rangkaian dalam sebuah video dibawah ini, mari kita simak videonya berikut ini. 




Kamis, 30 Juni 2022

Membuat Volume & Tone Control Digital TEA6320 Arduino LCD Rotary Encoder

 

Volume & Tone Control Digital TEA6320 Arduino LCD Rotary Encoder
Volume & Tone Control Digital TEA6320 Arduino LCD Rotary Encoder

Pada saat saya membuka tempat penyimpanan berbagai macam pcb rangkaian elektronika, saya melihat mainboard bekas audio mobil dan tertuju pada sebuah IC untuk mengontrol bagian audio dengan kode IC yaitu TEA6320, untuk mengetahui spesifikasi IC tersebut saya coba buka datasheetnya dan ternyata IC tersebut dikontrol menggunaan mikrokontroller dengan jalur komunikasi data I2C (SDA & SCL) jadi tanpa mikrokontroller IC tersebut tidak bisa digunakan secara manual dengan mudah. Untuk itu saya mulai mempelajari datasheetnya dan mencari berbagai informasi untuk dijadikan referensi setelah itu baru mulai mendesain layout PCB dari skema yang didapatkan dari datasheet ic TEA6320 tersebut. 


Mainboard bekas Car Audio
Mainboard bekas Car Audio 

IC SMD TEA6320
IC SMD TEA6320

IC TEA6320 yang saya dapatkan dari mainboard bekas audio mobil tersebut berjenis SMD yang tentunya dalam pembuatan layout PCB nya saya harus memakai footprints SMD namun saya juga menyertakan komponen DIP dalam pembuatan layoutnya agar nantinya pcb menjadi universal yang artinya jika tidak ada komponen SMD maka bisa menggunakan komponen DIP begitupun sebaliknya. Layout yang saya buat memakai skema dari datasheet IC sound fader TEA6320 dengan power supply sekitar 7.5 sampai 9.5 volt maka saya menggunakan IC regulator linier 7808 meskipun dari datasheetnya ic ini hanya membutuhkan arus yang kecil yakni hanya 26mA pada tegangan 8.5 volt. Penggunaan ic regulator 7808 ini agar power supply masukan bisa lebih fleksibel. 

IC TEA6320 ini memiliki:

  1. Empat pilihan input stereo dan satu input mono yang dapat dikontrol oleh software. 
  2. Kontrol MUTE sinyal audio zero crossing yang dapat dikendalikan oleh software (i2c) maupun hardware (Pin). 
  3. Tone control BASS, TREBLE dan LOUDNESS yang dapat dikontrol oleh software.
  4. Empat keluaran stereo, depan dan belakang stereo. 
  5. Jalur komunikasi data I2C (SDA - SCL) untuk mengontrol fungsi-fungsi dari IC TEA6320. 
  6. Antarmuka untuk rangkaian pengurang derau (Noise Reduction). 
  7. Antarmuka untuk Equalizer Eksternal. 
  8. Volume, Ballance & Fader Control. 
  9. Karakter spesial Loudness otomatis dikontrol dikombinasi dengan pengaturan volume. 
  10. Power Supply dengan internal power-on reset. 


Seperti yang telah dijelaskan diatas bahwa layoutnya dibuat dari skema asli datasheetnya dan pembuatan layoutnya dibuat agar bisa menggunakan kedua jenis IC baik jenis SMD maupun DIP maka layoutnya sedikit agak kompleks dengan jalur trek atas bawah alias layout dual layer yang tentunya tidak mungkin untuk membuat pcbnya sendiri seperti pembuatan pcb pada proyek-proyek sebelumnya, untuk itu layout PCB akan saya cetak di situs PCBWay.com. 

Berikut ini skema dan tentunya layout yang akan dicetak menjadi sebuah pcb. 

Skema Sound Fader TEA6320
Skema Sound Fader TEA6320

Layout PCB Sound Fader TEA6320
Layout PCB Sound Fader TEA6320 

Untuk download atau cetak langsung pcbnya di situs PCBWay.com file gerber nya silakan download dibawah ini. 


Saya pilih fabrikasi pcb di situs PCBWay.com adalah karena kemudahan dan biaya cetak yang relatif terjangkau yakni hanya sebesar 5 dolar saja kita sudah bisa mendapatkan 5 bahkan 10 keping pcb makanya saya setiap bikin pcb selalu dicetak disana, eh iya satu lagi jika belum pernah cetak pcb disana dan ingin mencoba maka ketika daftar akun PCBWay untuk pertama kalinya maka akan ada saldo welcome bonus sebesar 5 dolar untuk biaya cetak pertamamu, jadi biaya cetak pertamamu adalah seolah gratis jadi silakan daftar akun PCBWay sekarang juga melalui tautan ini. 

Pcbway.com
PCBWay.com

Welcome bonus bagi pendaftar akun pertama
Welcome bonus bagi pendaftar akun pertama

Selain mencetak PCB utama TEA6320 yang harus dikontrol mikrokontroller maka saya juga mencetak PCB untuk kontrolernya yang sekaligus panel penampil yang dilengkapi juga dengan rotary encoder sebagai pengaturannya, saya buat panel kontrol ini universal agar supaya bisa digunakan untuk proyek-proyek lainnya dengan menambah pinhead untuk semua pinout mikrokontrollernya dan tentunya layoutnya dual layer juga, dibawah ini saya sertakan skema dan layout yang sudah saya rancang. 

Skema universal control panel
Skema universal control panel

Layout Universal Control Panel depan belakang
Layout Universal Control Panel depan belakang


Nah ketika PCB utama TEA6320 beserta PCB Control display telah selesai dibuat layoutnya dan juga telah selesai dicetak menjadi sebuah PCB di PCBWay maka seperti inilah hasilnya. 


PCB Sound Fader TEA6320
PCB Sound Fader TEA6320

Universal Control Panel depan belakang
PCB Universal Control Panel depan belakang 

Volume & Tone Control Digital TEA6320 Arduino LCD Rotary Encoder
Volume & Tone Control Digital TEA6320 Arduino LCD Rotary Encoder

Baca juga : Membuat Amplifier TDA7388 Quad Bridge 180W dilengkapi PreAmp

Setelah selesai dirakit maka tidak bisa langsung digunakan tanpa ada program yang bisa mengontrolnya, maka saya juga mempelajari datasheet IC TEA6320 untuk mengetahui cara mengontrol semua fungsi yang ada pada ic tersebut dan ternyata malahan diluaran sana sudah ada yang membuat library untuk Arduinonya yaitu situs http://rcl-radio.ru, dengan library Arduino tersebut kita bisa lebih mudah dalam membuat programnya, program untuk mengontrol IC TEA6320 ini saya personalisasikan sesuai keinginan dan saya tampilkan menu:

1. Volume pada display LCD 16X2 pada baris pertama ditampilkan tulisan VOLUME beserta nilai level antara 1 sampai 50 dan nilai penguatan antara - 31 sampai 30 berupa desibel (dB) sedangkan dibaris kedua menampilkan bar dan animasi speaker. 


Tampilan Volume
Tampilan Volume

2. Bass pada display LCD 16X2 pada baris pertama ditampilkan tulisan BASS beserta nilai level antara 1 sampai 30 dan nilai penguatan antara - 15 sampai 15 berupa desibel (dB) sedangkan dibaris kedua menampilkan bar dan animasi nada.

Tampilan bass
Tampilan Bass

3. Treble pada display LCD 16X2 pada baris pertama ditampilkan tulisan TRBL beserta nilai level antara 1 sampai 24 dan nilai penguatan antara - 12 sampai 12 berupa desibel (dB) sedangkan dibaris kedua menampilkan bar dan animasi nada. 

Tampilan Treble
Tampilan Treble

4. Loudness yang otomatis dikontrol dikombinasi dengan pengaturan volume. 

Tampilan Loudness
Tampilan Loudness

5. Input selector 1 sampai 4 masukan stereo. 

Tampilan pemilihan sumber Input
Tampilan pemilihan sumber Input

6. Mute akan aktif saat switch pada rotary encoder ditekan lama. 

Tampilan saat Mute aktif
Tampilan saat Mute aktif

Untuk kode programnya silakan dilihat dibawah ini atau bisa juga di Download pada tautan ini sekaligus library untuk header Arduinonya. 




#include < Wire.h>
#include < MsTimer2.h>
#include < Encoder.h>
#include < EEPROM.h>
#include < TEA6320.h>

#include < liquidcrystal_i2c .h="">  // library LCD

#define MUTE 10
#define SW 4

TEA6320 tea;

Encoder myEnc( 3, 2 ); //CLK, DT encoder connection

LiquidCrystal_I2C lcd(0x27, 16, 2); // Set Alamat I2C LCD dan type LCD

byte a1[ 8 ] = { 0b00000, 0b11011, 0b11011, 0b11011, 0b11011, 0b11011, 0b11011, 0b00000 };
byte a2[ 8 ] = { 0b00000, 0b11000, 0b11000, 0b11000, 0b11000, 0b11000, 0b11000, 0b00000 };
byte a3[ 8 ] = { 0b00000, 0b00000, 0b00000, 0b11011, 0b11011, 0b00000, 0b00000, 0b00000 };
byte spk[ 8 ] = { 0b00000,
                  0b00001,
                  0b00011,
                  0b01111,
                  0b01111,
                  0b00011,
                  0b00001,
                  0b00000
                };
byte spkOn1[ 8 ] = { 0b00000,
                     0b00000,
                     0b01000,
                     0b00100,
                     0b00100,
                     0b01000,
                     0b00000,
                     0b00000
                   };
byte spkOn2[ 8 ] = { 0b00100,
                     0b00010,
                     0b00001,
                     0b00001,
                     0b00001,
                     0b00001,
                     0b00010,
                     0b00100
                   };
byte tone1[ 8 ] = { 0b11100,
                    0b11110,
                    0b01000,
                    0b00100,
                    0b00010,
                    0b01110,
                    0b11110,
                    0b01100
                  };
byte tone2[ 8 ] = { 0b00010,
                    0b00011,
                    0b00010,
                    0b01110,
                    0b11110,
                    0b01100,
                    0b00000,
                    0b00000
                  };

unsigned long newPosition, time, oldPosition = - 999;
int  menu, w, vol, loud, vol_d, z, bass, bass_d, treb, treb_d, in , mute, m;


// constants won't change. They're used here to set pin numbers:
//const int BUTTON_PIN = 7; // the number of the pushbutton pin
const int SHORT_PRESS_TIME = 500; // 1000 milliseconds
const int LONG_PRESS_TIME  = 500; // 1000 milliseconds

// Variables will change:
int lastState = HIGH;  // the previous state from the input pin
int currentState;     // the current reading from the input pin
unsigned long pressedTime  = 0;
unsigned long releasedTime = 0;
bool gantian;


void setup( ) {
  Serial.begin( 9600 );
  Wire.begin( );
  //lcd.begin( 16, 2 );
  lcd.begin();
  lcd.backlight();
  lcd.createChar( 0, a1);
  lcd.createChar( 1, a2 );
  lcd.createChar( 2, a3 );
  lcd.createChar( 3, spk );
  lcd.createChar( 4, spkOn1 );
  lcd.createChar( 5, spkOn2 );
  lcd.createChar( 6, tone1 );
  lcd.createChar( 7, tone2 );

  pinMode( SW, INPUT_PULLUP); // ENCODER BUTTON
  pinMode( MUTE, INPUT_PULLUP ); // MUTE

  MsTimer2::set( 1, to_Timer );
  MsTimer2::start();

  vol = EEPROM.read( 0 ) - 31;
  bass = EEPROM.read( 1 ) - 10;
  treb = EEPROM.read( 2 ) - 8;
  in = EEPROM.read( 7 );
  loud = EEPROM.read ( 9 );

  for ( z = 0 ; z <= 3; z++ ) {
    tea.setBallance( z, 0 );
  }
  audio ( );

  lcd.setCursor( 1, 0);
  lcd.print("-= WELCOME =-");
  lcd.setCursor( 0, 1);
  lcd.print("> FAREED READ <");
  delay(2000);
}

void to_Timer ( ) {
  newPosition = myEnc.read ( ) / 4 ;
}

void loop ( ) {


  // read the state of the switch/button:
  currentState = digitalRead(SW);

  if (lastState == HIGH && currentState == LOW)       // button is pressed
    pressedTime = millis();
  else if (lastState == LOW && currentState == HIGH) { // button is released
    releasedTime = millis();

    long pressDuration = releasedTime - pressedTime;

    if ( pressDuration < SHORT_PRESS_TIME ) {
      menu ++;  // menu
      cl( );
      myEnc.write ( 0 );
      time = millis ( );
      w = 1;
      if ( menu > 4 ) {
        menu = 0 ;
      }
      Serial.println("A short press is detected");
    }

    if ( pressDuration > LONG_PRESS_TIME ) {
      mute++;  // mute
      if ( mute > 1 ) {
        mute = 0 ;
      }
      audio ( ) ;
      cl ( ) ;
    }
    if ( mute == 1 ) {
      m = 1 ;  // mute

      lcd.setCursor( 12, 0);
      lcd.print("MUTE");
      lcd.setCursor( 0, 0);
      lcd.print( "VOLUME ") ;
      lcd.print( "0") ;
      lcd.setCursor( 1, 1);
      lcd.print("x");
      lcd.setCursor( 0, 1);
      lcd.write(( uint8_t ) 3);
      for ( z = 3 ; z <= 15; z++ ) {
        lcd.setCursor( z , 1);
        lcd.write(( uint8_t ) 2);
      }
      menu = 100 ;
    }
    if ( mute == 0 && m == 1 ) {
      cl ( );
      menu = 0 ;
      m = 0 ;
      Serial.println("A long press is detected");
    }
  }

  // save the the last state
  lastState = currentState;




  /////////////////////////////////////// Volume -31...20 dB // ////////////////////////////////////
  if ( menu == 0 ) {
    if  ( newPosition != oldPosition )  {
      oldPosition = newPosition;
      vol = vol + newPosition;
      myEnc.write ( 0 );
      newPosition = 0;
      lcd.clear( );
      time = millis ( );
      w = 1 ;
      if ( vol > 20 ) {
        vol = 20 ;
      }
      if ( vol < - 30 ) {
        vol = - 30 ;
      }
      audio ( ) ;
    }

    lcd.setCursor( 7 , 0 );
    lcd.print( vol + 30 );
    lcd.setCursor( 0 , 0 );
    lcd.print( "VOLUME" );
    lcd.setCursor( 11 , 0 );
    lcd.print( vol ) ;
    lcd.print( "dB" ) ;

    vol_d = ( vol + 30 ) / 2;
    for ( z = 14 ; z >= (vol_d / 2); z-- ) {
      lcd.setCursor( z + 4, 1);
      lcd.write(( uint8_t ) 2);
    }

    if ( vol_d >= 0 ) {
      for ( z = 0 ; z <= vol_d; z++ ) {
        lcd.setCursor ((z / 2) + 3, 1 ) ;
        lcd.write ((uint8_t) 0 ) ;
      }
    }
    if ( ( vol_d ) % 2 == 0 ) {
      lcd.setCursor( (z / 2 ) + 3, 1);
      lcd.write(( uint8_t ) 1);
    }

    static uint16_t   lsRn;
    uint16_t          Tmr = millis();
    if ((Tmr - lsRn) > 500 )
    {
      lsRn = Tmr;
      gantian = !gantian;
      if (gantian == 1) {
        lcd.setCursor( 1, 1);
        lcd.write(( uint8_t ) 4);
      }
      else {
        lcd.setCursor( 1, 1);
        lcd.write(( uint8_t ) 5);
      }
      lcd.setCursor( 0, 1);
      lcd.write(( uint8_t ) 3);
    }
  }

  ///////////////////////////////////////////////// ////////////////////////////////////////////////// ////

  /////////////////////// indication bass tone -15...15 dB ///////////////// //
  if ( menu == 1 ) {
    if  ( newPosition != oldPosition )  {
      oldPosition = newPosition;
      bass = bass + newPosition;
      myEnc.write ( 0 );
      newPosition = 0;
      lcd.clear();
      time = millis();
      w = 1 ;
      if ( bass > 10 ) {
        bass = 10 ;
      }
      if ( bass < - 10 ) {
        bass = - 10 ;
      }
      audio ( ) ;
    }

    lcd. setCursor ( 0, 0 ) ;
    lcd. print ( "BASS " ) ;
    lcd.print( bass + 10 );
    lcd. setCursor ( 9 , 0 ) ;
    lcd. print ( ( float ) bass * 1.5 , 1 ) ;
    lcd. print ( "dB" ) ;

    bass_d = bass / 2 + 5 ;

    if ( bass_d >= 0 ) {
      for ( z = 2 ; z <= bass_d; z++ ) {
        lcd.setCursor ( z, 1 );
        lcd.write ( ( uint8_t ) 0 ) ;
      }
      for ( z = bass_d ; z <= 8; z++ ) {
        lcd.setCursor ( z + 2, 1 );
        lcd.write(( uint8_t ) 2);
      }
    }

    static uint16_t   lsRn;
    uint16_t          Tmr = millis();
    if ((Tmr - lsRn) > 600 )
    {
      lsRn = Tmr;
      gantian = !gantian;
      if (gantian == 1) {
        lcd.setCursor( 0, 1);
        lcd.write(( uint8_t ) 6);
      }
      else {
        lcd.setCursor( 0, 1);
        lcd.write(( uint8_t ) 7);
      }
    }
  }
  /////////////////////////////////////////////// ///////////////////////////////////////

  /////////////////////// indication treble tone -12...12 dB ////////////////// //
  if ( menu == 2 ) {
    if  ( newPosition != oldPosition )  {
      oldPosition = newPosition;
      treb = treb + newPosition;
      myEnc.write( 0 );
      newPosition = 0;
      lcd.clear();
      time = millis();
      w = 1;
      if ( treb > 8 ) {
        treb = 8;
      }
      if ( treb < - 8 ) {
        treb = - 8;
      }
      audio();
    }

    lcd.setCursor( 0 , 0 );
    lcd.print("TRBL ");
    lcd.print( treb + 8 );
    lcd.setCursor( 9, 0 );
    lcd.print((float)treb * 1.5, 1);
    lcd.print("dB");

    treb_d = treb / 2 + 4;
    if ( treb_d >= 0 ) {
      for ( z = 2 ; z <= treb_d; z++ ) {
        lcd.setCursor ( z, 1 );
        lcd.write ( ( uint8_t ) 0 ) ;
      }
      for ( z = treb_d ; z <= 7; z++ ) {
        lcd.setCursor ( z + 2, 1 );
        lcd.write(( uint8_t ) 2);
      }
    }

    static uint16_t   lsRn;
    uint16_t          Tmr = millis();
    if ((Tmr - lsRn) > 600 )
    {
      lsRn = Tmr;
      gantian = !gantian;
      if (gantian == 1) {
        lcd.setCursor( 0, 1);
        lcd.write(( uint8_t ) 6);
      }
      else {
        lcd.setCursor( 0, 1);
        lcd.write(( uint8_t ) 7);
      }
    }
  }

  if ( menu == 3 ) {
    if ( newPosition != oldPosition )  {
      oldPosition = newPosition;
      loud = loud + newPosition;
      myEnc.write( 0 );
      newPosition = 0;
      lcd.clear ( );
      time = millis ( );
      w = 1;
      if ( loud > 1 ) {
        loud = 0;
      }
      if ( loud < 0 ) {
        loud = 1;
      }
    }
    lcd.setCursor(2, 0);
    lcd.print("-=LOUDNESS=-");
    if (loud == 0) {
      lcd.setCursor(5, 1);
      lcd.print(">> ON");
    }
    else {
      lcd.setCursor(5, 1);
      lcd.print("OFF <<");
    }
    audio ( );
  }

  if ( menu == 4 ) {
    if ( newPosition != oldPosition )  {
      oldPosition = newPosition;
      in = in + newPosition;
      myEnc.write( 0 );
      newPosition = 0;
      lcd.clear ( );
      time = millis ( );
      w = 1;
      if ( in > 3 ) {
        in = 0;
      }
      if ( in < 0 ) {
        in = 3;
      }
    }
    lcd.setCursor(0, 0);
    lcd.print("Source Selector:");
    lcd.setCursor(4, 1);
    lcd.print("INPUT ");
    lcd.print(in + 1);
    audio ( );
  }


  if ( millis() - time > 10000  && w == 1 ) {
    EEPROM.update( 0, vol + 31 );
    EEPROM.update( 1, bass + 10);
    EEPROM.update( 2, bass + 8 );
    EEPROM.update( 7, in );
    EEPROM.update( 9, loud );
    cl ( );
    menu = 0;
    w = 0;
  }
}

void cl ( ) {
  //delay ( 50 ) ;
  lcd.clear ( ) ;
}

void audio ( ) {
  tea.setVol_Loud( vol, loud );     // vol = -31...+20 dB = int -31...20 | loud = 0 off, 1 on
  tea.setBass( bass );           //-15...+15 dB = int -10...10
  tea.setTreb( treb );           //-12...+12 dB = int -8...8
  tea.setInput( in, mute );      //int 0...3 | mute
}




Langkah langkah pembuatan dan penjelasannya saya dokumentasikan kedalam sebuah video agar bisa disaksikan baik dalam pembuatan maupun tes saat rangkaian telah bekerja. Mari kita lihat videonya berikut ini.