Minggu, 18 Oktober 2020

Menampilkan Tulisan Di Panel Dot Matrix P10 Menggunakan Arduino - [Teknik Dasar "Arduino & Panel P10" Yang Pemula Harus Tahu]

Untuk menampilkan teks atau tulisan pada Dot Matrix Panel P10, atau yang biasa dikenal dengan Running text, membutuhkan beberapa komponen inti, yaitu:

  1. Panel P10 32x16
  2. Controller Running Text Panel P10
  3. Power Supply
  4. Frame (jika running text tersebut hendak dipasang)

Berkaitan dengan controller, sudah banyak tersedia di pasaran dengan harga yang sangat murah hingga harga yang cukup mahal. Varian dari controller tersebut juga bermacam-macam dengan kemampuan mengontrol jumlah Panel P10 yang berbeda-beda. 

Di lain sisi, terkadang kita membutuhkan sebuah controller yang bisa dikustom sesuai kehendak atau kebutuhan kita, misalnya untuk pembuatan Jam Waktu Sholat Running Text, Papan Score Running Text, dan berbagai perangkat kendali digital / elektronika lainnya yang berbasis Panel Dot Matrix (dalam pembahasan ini adalah tipe P10). Salah satu perangkat elektronika yang bisa, mudah dan banyak digunakan untuk mengendalikan Panel Dot Matrix adalah Arduino.

Dalam artikel ini saya akan menggunakan Arduino Uno untuk menampilkan tulisan pada Panel Dot Matrix P10. Ini adalah pengetahuan paling dasar yang harus diketahui oleh pemula yang sedang belajar mengendalikan tulisan pada Panel P10 menggunakan kontroler kustom, yaitu Arduino. Adapun Arduino IDE yang saya gunakan adalah versi 1.8.13 yang dapat di download di: https://www.arduino.cc/en/Main/software. Dan driver USB To Serial yang saya gunakan (agar Arduino terdeteksi oleh OS Windows 7) adalah CH430G sesuai dengan chip USB To Serial yang digunakan oleh Board Arduino saya, untuk cara penginstalannya bisa dilihat disini: https://electronics-project-hub.com/arduino-not-detected-and-driver-issues-solved/. Jika board Arduino anda menggunakan chip USB To Serial tipe FTDI, kemungkinan drivernya sudah tersedia bersamaan saat instalasi Arduino IDE pada komputer anda, dimana cara penginstalannya dapat dilihat disini: https://learn.sparkfun.com/tutorials/usb-serial-driver-quick-install-/all#:~:text=the%20appropriate%20device.-,In%20the%20Arduino%20IDE%2C%20click%20Tool%20%2D%3E%20Ports%20to%20ensure,the%20device%20has%20been%20recognized.&text=The%20Arduino%20Uno%20will%20appear%20as%20a%20ttyACMXX%20device.,install%20the%20drivers%20by%20hand.

Baiklah, selanjutnya yang diperlukan adalah konektor DMD untuk menghubungkan pin-pin Arduino yang dibutuhkan ke port input HUB12 dari Panel Dot Matrix P10. Konektor DMD ini selain bisa dibuat sendiri, juga sudah banyak tersedia di pasaran (online) dengan harga murah. Silahkan anda dapat membeli di beberapa toko online di Indonesia. Untuk membuat sendiri, anda bisa mengacu pada gambar dibawah ini:

Sumber: https://www.instructables.com/Display-Text-at-P10-LED-Display-Using-Arduino/

Baik, setelah anda memiliki Arduino IDE, Board Arduino dan konektor DMD, selanjutnya adalah menulis koding program arduino tersebut atau biasa disebut juga dengan Sketch. Jalankan Arduino IDE anda, kemudian tuliskan kode program (buat sketch) seperti berikut ini:

// Insert file Library
#include <SPI.h>
#include <DMD2.h>
#include <fonts/Arial_Black_16.h>

SoftDMD dmd(1,1);
// Number of P10 panels used X, Y

DMD_TextBox box(dmd, 2, 1, 32, 16); 
// Set Box (dmd, x, y, Height, Width) 

void setup() {
  dmd.setBrightness(30); // Set brightness 0 - 255 
  dmd.selectFont(Arial_Black_16); // Font used
  dmd.begin();     // Start DMD
  box.print("LED");
}

void loop() {
}

Coba kita lihat pada kode program diatas, pada bagian "DMD_TextBox box(dmd, 2, 1, 32, 16);", jadi angka 2 adalah koordinat X (kolom) dan angka 1 adalah koordinat Y (Baris). Berarti, tulisan akan ditampilkan pada panel P10 mulai dari kolom 2 baris 1. Ingat bahwa kolom pada panel ini ada 32, kolom 1 hingga 32, namun dalam kode program dikenal dengan nilai index 0 hingga 31. Dan baris pada panel P10 ini ada 16 baris yaitu baris ke 1 hingga ke 16, dan dalam kode program dikenal dengan nilai index -1 hingga 14. Jadi, untuk menentukan koordinat dot matrix Panel P10 dengan ukuran 32x16, dengan menggunakan library DMD2.h ini, koordinat tersebut dikenal dengan nilai index X = 0 hingga 31 dan nilai index Y = -1 hingga 14. Silahkan anda mengubah-ubah nilai X dan Y ini untuk mempelajari koordinat X dan Y dari library DMD2.h.

Kode program diatas adalah kode paling dasar untuk belajar mengendalikan Panel P10 menggunakan Arduino. Untuk tutorial lengkap, step by step, dapat dilihat pada video link youtube berikut:

https://youtu.be/aN8vh2eiLn4

Demikian artikel ini, semoga bermanfaat. Jangan lupa di Like, Subscribe, Share & Comment Video youtube nya ya... :D

Jumat, 10 Mei 2019

Tips Melatih Anak untuk Berpuasa

Bagaimana tips melatih anak untuk berpuasa?

Ternyata sudah ada contoh dari para sahabat di masa silam untuk mendidik anak-anak mereka hingga bisa berpuasa penuh sampai waktu berbuka.

عَنِ الرُّبَيِّعِ بِنْتِ مُعَوِّذٍ قَالَتْ أَرْسَلَ النَّبِىُّ – صلى الله عليه وسلم – غَدَاةَ عَاشُورَاءَ إِلَى قُرَى الأَنْصَارِ « مَنْ أَصْبَحَ مُفْطِرًا فَلْيُتِمَّ بَقِيَّةَ يَوْمِهِ ، وَمَنْ أَصْبَحَ صَائِمًا فَلْيَصُمْ » . قَالَتْ فَكُنَّا نَصُومُهُ بَعْدُ ، وَنُصَوِّمُ صِبْيَانَنَا ، وَنَجْعَلُ لَهُمُ اللُّعْبَةَ مِنَ الْعِهْنِ ، فَإِذَا بَكَى أَحَدُهُمْ عَلَى الطَّعَامِ أَعْطَيْنَاهُ ذَاكَ ، حَتَّى يَكُونَ عِنْدَ الإِفْطَارِ

“Dari Ar Rubayyi’ binti Mu’awwidz, ia berkata, “Nabi shallallahu ‘alaihi wa sallam pernah mengutus seseorang ke salah satu suku Anshar di pagi hari Asyura.” Beliau bersabda, “Siapa yang di pagi hari dalam keadaan tidak berpuasa, hendaklah ia berpuasa. Siapa yang di pagi harinya berpuasa, hendaklah berpuasa.” Ar Rubayyi’ mengatakan, “Kami berpuasa setelah itu. Lalu anak-anak kami pun turut berpuasa. Kami sengaja membuatkan mereka mainan dari bulu. Jika salah seorang dari mereka menangis, merengek-rengek minta makan, kami memberi mainan padanya. Akhirnya pun mereka bisa turut berpuasa hingga waktu berbuka.” (HR. Bukhari no. 1960 dan Muslim no. 1136)

Ibnu Batthol menjelaskan bahwa para ulama sepakat, ibadah dan kewajiban barulah dikenakan ketika telah baligh (dewasa). Namun kebanyakan ulama sudah menyunnahkan (menganjurkan) mendidik anak untuk berpuasa sejak kecil, begitu pula untuk ibadah lainnya. Hal ini untuk keberkahannya dan agar membuat mereka terbiasa sejak kecil, sehingga semakin mudah mereka lakukan ketika telah diwajibkan.

Kamis, 09 Mei 2019

Cara Mengubah Isi File Ms. Office Word Menjadi Format HTML




Yuk LIKE, SHARE & SUBSCRIBE !

Kali ini saya akan menunjukkan cara mengubah konten file Ms. Office Word menjadi konten yang berformat HTML. Fungsinya untuk apa ? Fungsinya adalah untuk memudahkan kita saat akan memposting isi file tersebut ke WEB seperti Blogger, Wordpress, dan lainnya.
Kenapa lebih mudah ? Karena jika kita langsung men-copas isi file Ms. Word ke Blogger, maka kemungkinan besar konten post kita formatnya akan berantakan sehingga tidak enak dilihat, maka cara yang paling tepat adalah dengan mendapatkan isi file tersebut dalam format HTML, kemudian mempostingnya di blogger dalam mode post "html" dan men-mencopas kode html yang telah kita dpaatkan. Silahkan simak caranya melalui video tutorial berikut ini, dan jangan lupa untuk Subscribe, Like, dan Komen.
Terima kasih

Blender Tutorial (Basic 2) - Cara Membuat Objek 3D Kain Warna Hijau Dan Gelas Bening




Yuk LIKE, SHARE & SUBSCRIBE !
  1.  Hapus objek default (cube)
  2. Tambahkan objek UV Sphere (membuat gelas kaca):
Add -> Mesh -> UV Sphere
  1. Zoom-In Objek
  2. Ganti tampilan menjadi:
-> Edit Mode
-> Wire Frame
  1. Ubah perspektif tampilan menjadi:
View -> Persp/Ortho
View -> Front
  1. Hapus bagian bagian atas “UV Sphere” sekitar 1/3 bagian:
-> Tekan tombol “B”
-> Klik kanan mouse dan tahan, kmd arsir 1/3 bagian atas “UV Sphere”
  1. Buat datar bagian bawah “UV Sphere” sekitar 1/5 bagian:
  • Arsir / pilih 1/5 bagian bawah UV Sphere dengan cara tekan “B”, kemudian seleksi area menggunakan mouse.
  • Tekan “S”
  • Tekan “Z”
  • Ketik “0”
  • Tekan “Enter”
  1. Ubah tampilan objek:
  • Dropdown Object Interaction Mode -> Object Mode
  • Dropdown Display The Object -> Solid
  1. Manipulasi “UV Sphere”:
Tambah atau set ketebalan objek UV Sphere
  • Klik kanan UV Sphere
  • Klik tombol “Object Modifier” (di panel vertikal sebelah kanan)
  • Klik dropdown “Add Modifier -> Solidify -> Thickness : 07

Blender Tutorial (Basic 1) - Menampilkan Aktivitas "Shortcut Key" atau "Tombol" Yang Ditekan Di Layar "3D View" Blender




How to display what key we are pressing in blender :

1. Download the python script at "https://svn.blender.org/svnroot/bf-extens...."
2. Import it to blender apps via" Ctrl+Alt+U - User preferences - Addons"
3. Enable the imported Addon, then turn it on in "3D view - Properties region (N) - Screen cast keys"

Or Copy & Paste the following code into notepad, then name it and save with Save As Type option is "All Files", DONE.

Senin, 18 September 2017

Lubuntu 17.04 - File rc.local Tidak Ada (Autostart VM Virtualbox)


UNDER CONSTRUCTION

UNDER CONSTRUCTION

UNDER CONSTRUCTION

UNDER CONSTRUCTION

UNDER CONSTRUCTION

UNDER CONSTRUCTION

UNDER CONSTRUCTION

UNDER CONSTRUCTION








Buat (Create) File rc.local :



it817@it817-System-Product-Name:~$ cat /etc/os-release 
NAME="Ubuntu"
VERSION="17.04 (Zesty Zapus)"
ID=ubuntu
ID_LIKE=debian
PRETTY_NAME="Ubuntu 17.04"
VERSION_ID="17.04"
HOME_URL="https://www.ubuntu.com/"
SUPPORT_URL="https://help.ubuntu.com/"
BUG_REPORT_URL="https://bugs.launchpad.net/ubuntu/"
PRIVACY_POLICY_URL="https://www.ubuntu.com/legal/terms-and-policies/privacy-policy"
VERSION_CODENAME=zesty
UBUNTU_CODENAME=zesty
dddddd


it817@it817-System-Product-Name:~$ sudo pico /etc/systemd/system/rc-local.service
it817@it817-System-Product-Name:~$ cat /etc/systemd/system/rc-local.service 
=================================== 
[Unit]
Description=/etc/rc.local Compatibility
ConditionPathExists=/etc/rc.local

[Service]
Type=forking
ExecStart=/etc/rc.local start
TimeoutSec=0
StandardOutput=tty
RemainAfterExit=yes
SysVStartPriority=99

[Install]
WantedBy=multi-user.target
===================================
 
it817@it817-System-Product-Name:~$ sudo touch /etc/rc.local
it817@it817-System-Product-Name:~$ sudo chmod +x /etc/rc.local
it817@it817-System-Product-Name:~$ sudo pico /etc/rc.local 
===================================
#!/bin/sh -e
#
# rc.local
#
# This script is executed at the end of each multiuser runlevel.
# Make sure that the script will "exit 0" on success or any other
# value on error.
#
# In order to enable or disable this script just change the execution
# bits.
#
# By default this script does nothing.

exit 0
===================================
 
it817@it817-System-Product-Name:~$ sudo systemctl enable rc-local
Created symlink /etc/systemd/system/multi-user.target.wants/rc-local.service → /etc/systemd/system/rc-local.service.
it817@it817-System-Product-Name:~$ sudo systemctl start rc-local.service 
it817@it817-System-Product-Name:~$ sudo systemctl status rc-local.service 
● rc-local.service - /etc/rc.local Compatibility
   Loaded: loaded (/etc/systemd/system/rc-local.service; enabled; vendor preset:
  Drop-In: /lib/systemd/system/rc-local.service.d
           └─debian.conf
   Active: active (exited) since Mon 2017-09-18 10:22:13 WIB; 9s ago
  Process: 4269 ExecStart=/etc/rc.local start (code=exited, status=0/SUCCESS)

Sep 18 10:22:13 it817-System-Product-Name systemd[1]: Starting /etc/rc.local Com
Sep 18 10:22:13 it817-System-Product-Name systemd[1]: Started /etc/rc.local Comp

ddddddddd
eeeeeee



it817@it817-System-Product-Name:~$ VBoxManage list vms
"Ubuntu-14.04-x64" {4e9f52b9-a023-4a50-b0e0-b885fb7e2528}
it817@it817-System-Product-Name:~$ sudo pico /etc/rc.local 
it817@it817-System-Product-Name:~$ cat /etc/rc.local 
========================================================= 
#!/bin/sh -e
#
# rc.local
#
# This script is executed at the end of each multiuser runlevel.
# Make sure that the script will "exit 0" on success or any other
# value on error.
#
# In order to enable or disable this script just change the execution
# bits.
#
# By default this script does nothing.

su it817 -c "VBoxHeadless -startvm 'Ubuntu-14.04-x64' &"

exit 0
=========================================================
 
it817@it817-System-Product-Name:~$ sudo systemctl status rc-local.service
● rc-local.service - /etc/rc.local Compatibility
   Loaded: loaded (/etc/systemd/system/rc-local.service; enabled; vendor preset: enabled)
  Drop-In: /lib/systemd/system/rc-local.service.d
           └─debian.conf
   Active: active (exited) since Mon 2017-09-18 10:22:13 WIB; 36min ago
  Process: 4269 ExecStart=/etc/rc.local start (code=exited, status=0/SUCCESS)

Sep 18 10:22:13 it817-System-Product-Name systemd[1]: Starting /etc/rc.local Compatibility...
Sep 18 10:22:13 it817-System-Product-Name systemd[1]: Started /etc/rc.local Compatibility.


Jumat, 04 November 2016

Java Error : Exception in thread "AWT-EventQueue-0" java.lang.ArrayIndexOutOfBoundsException: -1





TERIMA KASIH TELAH BERKUNJUNG TEMAN !
SEBELUM MELANJUTKAN MEMBACA, TOLONG SUBSCRIBE KE CHANNEL YOUTUBE SAYA YA KAWAN.
CARANYA KLIK TOMBOL MERAH DIATAS.

=====================================================================================================================================



Pada saat menggunakan JTable dengan menambahkan event "addListSelectionListener" kita mendapatkan exception "java.lang.ArrayIndexOutOfBoundsException: -1" ketika akan menghapus baris yang ada di dalam JTable. Solusinya akan saya berikan dalam artikel ini berdasarkan kasus yang telah ditanyakan di stackoverflow.com.

Berikut ini adalah kode java yang menghasilkan exception "java.lang.ArrayIndexOutOfBoundsException: -1" :

import java.awt.BorderLayout;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import javax.swing.JButton;
import javax.swing.JFrame;
import javax.swing.JScrollPane;
import javax.swing.JTable;
import javax.swing.JTextField;
import javax.swing.SwingUtilities;
import javax.swing.event.ListSelectionEvent;
import javax.swing.event.ListSelectionListener;
import javax.swing.table.DefaultTableModel;

public class App {

    JFrame frame = new JFrame();
    JTable table = new JTable();
    DefaultTableModel model = new DefaultTableModel(new Object[][] {},
            new String[] { "Country", "City", "Street" });
    JButton button = new JButton("Remove");
    JTextField countryTxt = new JTextField();

    int row;

    public App() {
        table.setModel(model);
        data();
        table.getSelectionModel().addListSelectionListener(
                new ListSelectionListener() {
                    @Override
                    public void valueChanged(ListSelectionEvent e) {
                        if (!e.getValueIsAdjusting()) {
                            row = table.getSelectedRow();
                            countryTxt.setText((String) model
                                    .getValueAt(row, 0));
                        }
                    }
                });
        button.addActionListener(new ActionListener() {
            @Override
            public void actionPerformed(ActionEvent arg0) {
                model.removeRow(row);
            }
        });
        frame.add(countryTxt,BorderLayout.NORTH);
        frame.add(new JScrollPane(table), BorderLayout.CENTER);
        frame.add(button, BorderLayout.SOUTH);
        frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
        frame.pack();
        frame.setVisible(true);
        frame.setLocationRelativeTo(null);
    }

    public void data() {
        model.addRow(new String[] { "USA", "New York", "First street" });
        model.addRow(new String[] { "Russia", "Moscow", "Second street" });
        model.addRow(new String[] { "Japan", "Osaka", "Osaka street" });
    }

    public static void main(String[] args) {
        SwingUtilities.invokeLater(new Runnable() {
            public void run() {
                new App();
            }
        });
    }
}