Selasa, 03 Januari 2023

Membuat Rangkaian Tetris Menggunakan Arduino dan Display Matrix Max7219

Mini Game Tetris Arduino MAX7219
Mini Game Tetris Arduino MAX7219 - PCBWay

Tetris adalah sebuah permainan puzzle yang sangat populer di seluruh dunia. Permainan ini memiliki sebuah grid yang terdiri dari berbagai blok yang bisa diputar dan ditranslasikan untuk membentuk barisan blok yang terisi secara penuh. Pemain harus berusaha menyusun blok-blok tersebut sedemikian rupa sehingga tidak ada lubang di grid tersebut. Saat semua blok terisi secara penuh, barisan tersebut akan hilang dan memberikan skor kepada pemain.


Dalam tutorial ini, kita akan membuat sebuah rangkaian tetris sederhana menggunakan Arduino dan display matrix Max7219. Display matrix Max7219 adalah sebuah modul yang dapat digunakan untuk menampilkan angka, karakter, dan simbol pada sebuah layar atau display LED matrix MAX7219 8x8. Modul ini sangat mudah digunakan untuk berbagai macam keperluan praktek yang tentunya membutuhkan display atau penampil dalam implementasinya seperti scrolling text, jam digital dan sekarang akan saya gunakan sebagai penampil untuk proyek mini Game Tetris Arduino ini. 


Untuk membuat rangkaian tetris menggunakan Arduino dan display matrix Max7219, pertama-tama kita perlu menghubungkan display matrix Max7219 ke Arduino dan juga tombol tombol untuk kontrolnya. Display matrix Max7219 memiliki 8 pin yang perlu dihubungkan ke Arduino, yaitu VCC, GND, DIN, CS dan CLK. Setelah display matrix Max7219 terhubung dengan Arduino, kemudian sambungkan juga tombol - tombolnya menyesuaikan dengan kode programnya atau sebaliknya. Langkah selanjutnya adalah mengunduh library Max7219 dan mengaktifkannya di Arduino IDE. Setelah diunduh, library tersebut harus diimport ke Arduino IDE dengan cara klik menu Sketch > Include Library > Add .ZIP Library. Pilih file library yang sudah diunduh tadi dan klik tombol Open.


Selanjutnya, buka sketch baru di Arduino IDE dengan cara klik menu


File > New. Kemudian, masukkan kode berikut ke dalam sketch:


#include <Max7219_Matrix.h> // Include library Max7219

Max7219_Matrix matrix(8, 7, 6); // Inisialisasi objek matrix dengan pin DIN, CS, dan CLK


void setup() {

matrix.begin(); // Inisialisasi display matrix

}


void loop() {

matrix.drawPixel(0, 0, 1); // Menyalakan LED pada koordinat (0,0)

matrix.write(); // Menampilkan perubahan pada display matrix

delay(1000); // Menunggu 1 detik

matrix.drawPixel(0, 0, 0); // Mematikan LED pada koordinat (0,0)

matrix.write(); // Menampilkan perubahan pada display matrix

delay(1000); // Menunggu 1 detik

}


Kode di atas akan menyalakan dan mematikan LED pada koordinat (0,0) pada display matrix setiap 1 detik. Jika kode di atas berhasil diupload ke Arduino dan display matrix berfungsi dengan baik, maka Anda sudah berhasil menyiapkan dasar-dasar pembuatan rangkaian tetris menggunakan Arduino dan display matrix Max7219.


Sekarang, saatnya untuk membuat sebuah permainan tetris sederhana. Kita akan membuat sebuah blok yang dapat bergerak naik turun dan kiri kanan dengan menggunakan tombol pada Arduino. Blok tersebut akan terus bergerak turun secara otomatis sampai mencapai dasar grid, dan pemain dapat mengontrol gerakan blok dengan menggunakan tombol. Saat blok mencapai dasar grid, blok tersebut akan "melekat" dan menjadi bagian dari grid. Jika terdapat barisan yang terisi penuh, maka barisan tersebut akan hilang dan memberikan skor kepada pemain.


Baca juga : Membuat Jam Pasir Digital (Hourglass) Arduino MAX7219 MPU6050


Untuk membuat permainan tetris menggunakan Arduino dan Display Matrix MAX7219 seperti yang saya jelaskan barusan diatas, sebenarnya untuk kode program nya sudah banyak tersedia diinternet tinggal kita implementasikan saja, saya coba ambil contoh salah satunya kemudian untuk hardware nya berupa layout pcb saya desain sendiri menggunakan software eagle yang kemudian saya konversi menjadi file gerber agar nanti bisa dicetak ke situs PCBWay.com agar bisa dibuatkan pcbnya dengan kualitas premium. Inilah layout dari rangkaian mini Game Tetris Arduino MAX7219 yang sudah saya desain. 


Layout Mini Game Tetris Arduino MAX7219
Layout Mini Game Tetris Arduino MAX7219

Preview Layout Mini Game Tetris Arduino MAX7219
Preview Layout Mini Game Tetris Arduino MAX7219

Saya memilih untuk membuat pcb di situs PCBWay.com karena cukup hanya dengan biaya cetak 5 dolar saya sudah bisa mendapatkan pcb prototipe ukuran 10x10cm sebanyak 10 pcb dan dikerjakan dengan cepat dan pelayan yang ramah, disamping itu buat yang baru saja mendaftar akun PCBWay untuk pertama kalinya maka akan mendapatkan saldo welcome bonus sebesar 5 dolar untuk biaya cetak pcb di PCBWay. 


Untuk mendapatkannya silakan daftar melalui link ini


Pcbway.com
PCBWay.com 


Saldo welcome bonus untuk pendaftar akun pertama
Saldo welcome bonus untuk pendaftar akun pertama 

Kurang dari seminggu pcb yang dicetak di PCBWay sudah bisa saya dapatkan dan saya langsung dirakit seperti ini. 


Mini Game Tetris Arduino MAX7219
Mini Game Tetris Arduino MAX7219 - PCBWay

Selanjutnya tinggal mengisi program ke chip atmega328nya sehingga mini Game Tetris Arduino MAX7219 ini bisa dimainkan. Untuk kamu yang ingin mencoba, kamu bisa mendownload atau langsung cetak pcb nya di share project PCBWay, jadi silakan menuju tautan yang telah saya sediakan. 


Untuk file gerber bisa juga di Download pada tautan ini


Untuk kode programnya bisa di download disini


Untuk melihat dokumentasi dari pembuatan hingga percobaannya, bisa dilihat pada video berikut ini. 



Sabtu, 10 Desember 2022

Membuat Jam Pasir Digital (Hourglass) Arduino MAX7219 MPU6050

 

Digital Hourglass Arduino MAX7219 MPU6050
Digital Hourglass Arduino MAX7219 MPU6050

Saat saya mencari inspirasi untuk membuat sebuah proyek elektronika, saya menemukan sebuah proyek elektronika yang cukup menarik yaitu proyek jam pasir digital berbasis Arduino dengan sensor accelerometer MPU6050 sebagai pendeteksi arah putarannya dan dua buah display led matrix MAX7219 yang disusun secara diagonal sebagai tampilannya, proyek tersebut nyatanya di internet sudah banyak yang membuatnya baik yang masih menggunakan papan protoboard maupun yang sudah memakai pcb khusus dan housing cetak tiga dimensi sehingga bentuknya sudah menyerupai jam pasir konvensional sementara untuk kode programnya ternyata berasal dari kode program yang sama yang meskipun didalamnya terdapat sebuah pengaturan yang melibatkan rotary encoder namun ternyata di semua tutorial yang saya temukan tadi tidak ada satupun yang menggunakannya jadi kode program tersebut sumber aslinya belum diketahui.


Pada artikel ini saya tertarik untuk mencoba membuatnya sendiri dengan desain pcb yang unik yang tentunya akan saya desain menyerupai jam pasir konvensional dengan ukuran cukup sesuai dengan dua buah display led matrix MAX7219 sementara untuk sensor accelerometer MPU6050-nya saya tempatkan dibelakang pcb sehingga nantinya untuk kode programnya perlu penyesuaian, disamping itu karena didalam kode programnya terdapat pengaturan yang melibatkan rotary encoder sebagai pengaturan waktunya yang akan saya fungsikan namun alangkah tidak eloknya jika diaplikasikan pada bentuk yang sudah saya desain menyerupai jam pasir konvensional maka saya putuskan untuk mengubahnya menjadi tiga buah tombol yang terdiri dari tombol pilihan, tombol pengurangan dan tombol penambahan dan lagi-lagi pengubahan ini akan berdampak besar pada pengeditan untuk penyesuaian pada kode programnya, namun disamping pengeditan kode program untuk menyesuaikan dengan desain pcb saya juga menambahkan beberapa fungsi baru mulai dari mengoptimalkan penggunaan buzzer hingga menambahkan fungsi untuk pengaturan seting kecerahan layar.
Berikut ini skemanya yang kemudian saya desain menjadi sebuah pcb dual layer yang bentuknya di desain menyerupai jam pasir konvensional.


Skema Digital Hourglass Arduino MAX7219 MPU6050
Skema Digital Hourglass Arduino MAX7219 MPU6050 

Layout Arduino Hourglass Arduino
Layout Arduino Hourglass Arduino

Preview Arduino Hourglass Arduino
Preview Arduino Hourglass Arduino

Setelah selesai membuat desain PCB yang bentuknya mirip dengan jam pasir konvensional, kemudian desain pcb tersebut saya konversikan lagi menjadi file gerber agar bisa di unggah ke situ PCBWay.com untuk difabrikasi menjadi pcb dengan kualitas premium dengan harga yang cukup terjangkau yakni hanya sebesar 5 dolar saja untuk 10 keping pcb dengan ukuran 10x10cm dan berbagai pilihan warna, untuk proyek kali ini saya akan memilih warna hitam glossy. Eh iya kalau kamu belum mempunyai akun PCBWay maka ketika mendaftar akun PCBWay kamu akan mendapatkan saldo welcome bonus sebesar 5 dolar untuk biaya cetak pcbnya. Jadi ketika kamu selesai mendaftar akun maka kamu bisa langsung memesan pcb secara gratis, silakan daftar akun PCBWay disini.


Pcbway.com
PCBWay.com

Saldo welcome bonus untuk pendaftar akun PCBWay
Saldo welcome bonus untuk pendaftar akun PCBWay

PCB yang saya pesan di situs PCBWay.com telah selesai dicetak dalam waktu sekitar dua hari dan dikirim sekitar tiga hari, jadi dalam waktu seminggu saya sudah mendapatkan pcbnya dan sudah siap dipraktekkan. Dibawah ini pcb jam pasir digital berbasis Arduino cetakan PCBWay yang telah saya terima dan yang telah saya rakit.


PCB Depan Arduino Hourglass Arduino
PCB Depan Arduino Hourglass Arduino 

PCB Belakang Arduino Hourglass Arduino
PCB Belakang Arduino Hourglass Arduino

Arduino Hourglass Arduino - PCBWay
Arduino Hourglass Arduino - PCBWay

Kemudian untuk kode programnya saya siapkan untuk kamu DOWNLOAD jika ingin juga mencobanya, saya siapkan dua berkas berbeda. Satu berkas aslinya dan satu lagi berkas yang sudah saya sesuaikan untuk pcb yang saya desain ini yang tentunya sudah saya optimalisasi kan baik dari fungsi aslinya hingga fungsi yang saya tambahkan.


Selesai pembuatan PCB, penyesuaian dan optimalisasi kode program kini tiba saatnya untuk mencoba dan melihat hasilnya pada video berikut ini.



Sabtu, 15 Oktober 2022

Cara Modifikasi ATXPSU Adjustable 0 - 25V 10A Menggunakan Atmega328 dan LCD 16x2

 

Controller ATXPSU versi 3
Controller ATXPSU versi 3

Saat saya browsing mencari artikel tentang cara modifikasi psu atx atau psu komputer, saya menemukan sebuah channel youtube yang membuat kontroler ATXPSU dengan menggunakan atmega328 dan penampil lcd 16x2 dengan sangat menarik yaitu channel youtube Valdas Junevičius. Untuk kontrol pengaturannya menggunakan rotary encoder dilengkapi dengan buzzer untuk warning saat terjadi proteksi atau batas arusnya telah tercapai. Karena pengaturan tegangan dan arus dilakukan dengan rotary encoder maka ada fitur untuk mengunci perputaran rotary encoder tersebut supaya saat terjadi atau tidak sengaja rotary encoder terputar maka kontrol tegangan atau arus tidak akan berubah atau terkunci. Kemudian fitur lainnya adalah dengan adanya sensor panas untuk mengunci tampilan dan supaya alat ini berhenti beroperasi saat transistor final panas.


Oleh karena itu saya tertarik ingin mencoba membuat rangkaian yang sama meskipun telah tersedia file siap download layout pcb maupun kode programnya akan tetapi saya lebih senang membuat layout nya sendiri karena layout bawaannya terpisah antara main control dengan penampilannya. 


Layout yang saya buat menjadi satu kesatuan yaitu antara mikrokontroler, opamp, rotary encoder, lcd dan buzzer menjadi satu pcb. Setelah layout jadi maka saya konversi menjadi file gerber agar dapat dicetak di percetakan pcb profesional seperti Pcbway.com dan hasilnya saya langsung rakit kemudian saya aplikasikan beserta ATXPSU yang tentunya telah dimodifikasi sehingga hasilnya bisa dilihat pada video berikut ini.



Seiring berjalannya waktu saya masih tertarik dengan rangkaian ini sehingga terpikirkan saya untuk membuat ulang layout nya, namun kali ini layout nya ditambahkan ic pwm TL494, sehingga dimensinya sedikit membesar dari dimensi layout pcb sebelumnya, ini bertujuan agar modul ini bisa digunakan untuk berbagai macam ATXPSU sehingga modul ini bisa menjadi universal dalam penggunaannya. Setelah layout ini jadi meskipun dimensinya sedikit lebih besar daripada dimensi pcb sebelumnya saya coba cetak di percetakan pcb Pcbway.com lagi. Untuk hasilnya bisa dilihat pada gambar dibawah ini. 


kontroler ATXPSU versi 2
kontroler ATXPSU versi 2

Seiring berjalannya waktu saya melihat bahwa disain pcb dari controller ATXPSU ini sepertinya tidak terlalu pas untuk diaplikasikan pada casing yang lebih kecil, untuk itu saya berencana membuat atau mendesain ulang controller ATXPSU ini namun kembali dengan skema sebelumnya yaitu tidak menambahkan IC pwm TL494 dan membuat desain yang ringkas yang hanya seukuran LCD 16X2 bersama rotary encoder di sampingnya jadi pada versi ketiga ini modul controller ATXPSU ini menjadi semakin compact, kecil dan ringkas bisa diaplikasikan kepada casing yang lebih kecil, karena untuk mengurangi dimensi pcbnya maka ada satu ic yang memakai jenis smd sehingga saya bisa membuat layout ini pas dengan ukuran LCD 16X2 yaitu saya memasang atau menggunakan ic LM324 yang berjenis SMD. Dibawah ini saya tampilkan mulai dari skema hingga hasil layout yang saya desain ulang menjadi seukuran LCD 16X2 tersebut.


Skema controller ATXPSU
Skema controller ATXPSU

Layout controller ATXPSU V3
Layout controller ATXPSU V3

Tampilan depan controller ATXPSU V3
Tampilan depan controller ATXPSU V3

Tampilan belakang controller ATXPSU V3
Tampilan belakang controller ATXPSU V3

Tampilan depan controller ATXPSU V3
Tampilan depan controller ATXPSU V3

Oke seperti biasa layout controller ATXPSU versi ketiga ini saya konversi dulu menjadi file gerber dan bisa kamu download tentunya juga agar bisa diupload ke situs PCBWay.com untuk dicetak menjadi sebuah pcb. Karena berbagai keunggulan yang bisa saya dapatkan saat saya mencetak pcb di situs PCBWay.com yaitu saya bisa mencetak 5 bahkan 10 pcb hanya dengan membayar 5 dolar saja, dengan proses pengerjaan yang cepat, layanan yang ramah dan responsif, dan tentunya dengan kualitas pcb premium. 

Disamping itu keunggulan lainnya adalah ketika mendaftar akun untuk pertama kalinya kamu akan mendapatkan saldo welcome bonus sebesar 5 dolar untuk biaya cetak pcb di PCBWay. Jadi silakan daftar akun dulu akun PCBWay sekarang juga. 


Klik join untuk daftar akun PCBWay
Klik join untuk daftar akun PCBWay 

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

Yang saya suka dari controller ATXPSU ini adalah tampilan yang menarik meliputi untuk set tegangan mulai dari puluhan, satuan, hingga mili begitupun untuk set arusnya. Kemudian output akan ditampilkan pada baris kedua di bawah set tegangan dan juga di bawah set arus, untuk set tegangan dan arus hasilnya bisa lebih presisi karena ada trimpot untuk pengaturannya sehingga kalibrasi bisa dilakukan dengan cara manual yang hasilnya bisa lebih presisi. Disamping itu dengan adanya fitur proteksi tidak akan takut apabila outputnya terjadi korsleting dan ketika itu terjadi buzzer akan berbunyi yang menandakan arus yang telah ditentukan tercapai, buzzer ini bisa diatur aktif atau tidaknya.

Output control ini tersambung kepada:


1. Output tegangan untuk ditampilkan pada lcd.

2. Resistor shunt untuk mengukur arus keluaran.

3. Set tegangan dan limit tegangan yang akan disambungkan ke kaki 2 dan 1 dari IC TL494

4. Set arus dan limit arus yang akan disambungkan ke kaki 15 dan 16 dari IC TL494.


Untuk power supply controller ATXPSU ini didapat dari tegangan standby ATXPSU baik 5 volt maupun 12 volt. Tegangan 5 volt untuk power supply atmega dan lcd sedangkan tegangan 12 volt digunakan untuk ic LM324.

Untuk praktek pemasangan kontroler yang telah saya buat dengan ATXPSU nya bisa dilihat pada gambar dibawah ini.


Skema Modifikasi ATXPSU
Skema Modifikasi ATXPSU 

Untuk lebih jelasnya silahkan lihat lagi artikel sebelumnya yang membahas tentang controller ini pada tautan berikut ini.


Cara Modifikasi ATX PSU adjustable 0 - 25V 10A 


Oke untuk rangkaian controller ATXPSU versi 3 ini yang telah saya cetak pcb nya dari PCBWay.com bisa kita lihat pada gambar dibawah ini dengan hasil yang telah dirakit dan siap untuk digunakan seperti yang telah saya buat pada video diatas. 


Controller ATXPSU versi 3

Video untuk controller ATXPSU versi 3 ini akan segera dibuat, so stay tuned!