Translate

Aplikasi Pembuatan Data Heksa atau Desimal Pada Matriks 8x8 dengan Visual Basic




Bagi sobat yang senang dengan pembuatan peraga berupa LED matriks, kadang mengalami sedikit kesulitan dalam pembuatan data yang harus ditetapkan untuk ditampilkan. Hal seperti ini juga dialami oleh penulis. Tapi setiap kesulitan pasti ada solusi untuk mempermudahnya.

Di sini penulis akan menyajikan artikel tentang pembuatan data atau membaca data yang ada menggunakan Visual Basic.

Ada 2 cara konversi yang diperlukan untuk mempermudah mencari nilai dari data.

Pertama mengkonversi dari data bilangan heksadesimal atau desimal ke bentuk tampilan LED matriks. Pada aplikasi sobat dapat secara langsung memasukkan bilangan baik dalam format heksadesimal ataupun bilangan desimal, setiap data yang dimasukkan akan secara lagsung ditampilkan pada simulasi LED matriks. Jika input data dimasukkan pada kotak Heksadesimal secara otomatis akan lansung juga dikonversi dalam bentuk desimal atau sebaliknya.

Kedua yaitu mengkonversi dari pola LED matriks yang dibuat ke bilangan heksadesimal atau desimal. Sobat cukup menggunakan mouse dan klik pada bulatan LED matriks yang diinginkan secara togel. Hasilnya dari klik pada setiap LED matriks akan langsung menghasilkan nilai yang bersesuaian dalam bentuk heksadesimal maupun desimal.

Berikut adalah tampilan dari aplikasi yang dibuat pada saat pertama kali dijalankan.


Untuk memperoleh nilai bilangan heksa dan desimal yang diinginkan, misalkan mencari data bertuliskan “Si”, maka kita dapat melakukannya dengan klik mouse pada baris kolom matriks yang dimaksudkan sehingga membentuk seperti berikut ini.



Pada gambar sebelah kiri diperlihat nilai data yang tertera pada kondisi LED matrik dihidupkan pada aktif tinggi (active high). Sehingga urutan data yang membentuk karakter “S” adalah 26H, 49H, 49H, 49H dan 32H dalam heksadesimal dan nilai desimalnya 38, 73, 73, 73,50. Pada gambar bagian tengah kiri adalah sebaliknya untuk LED matrik aktif rendah.

Gambar selanjutnya pada bagian kanan memperlihatkan jika urutan bit data dimulai dari MSB sebagai sisi atas dari tampilan matriks.

Dari gambar di atas memperlihatkan hasil tampilan LED matriks yang sama yaitu “Si” namun jika dilihat ternyata nilai bilangan data yang dihasilkan berbeda-beda. Hal tersebut tergantung dari penggunaan logika gerbang data untuk menggerakkan LED, apakah secara aktif tinggi (common katoda) atau aktif rendah common anoda). Orientasi bit LSB dan MSB juga mempengaruhi hasil nilai data.

Jadi aplikasi menampilkan 4 posisi dari tampilan matriks yang mungkin dari data bilangan yang akan digunakan.

Nah, untuk membuat aplikasi di atas dapat dilakukan dengan menggunakan Visual Basic. Langkah pertama setelah sobat membuka aplikasi VB maka perlu dilakukan beberapa persiapan yaitu pembuatan tampilan yang diinginkan.

Buatlah 3 buah frame masing-masing diberi keterangan “LED Matriks”, “Heksadesimal” dan “Desimal” pada properti caption-nya.

Pada frame “LED Matriks” kita masukkan shape berbentuk “3 – Circle” dengan sebanyak 8 buah yaitu shpLEDA, shpLEDB dan seterusnya hingga shpLEDH. Pastikan properti “FillStyle” adalah “0 – Solid”. Kedelapan shape ini selanjutnya akan di copy-paste untuk mendapatkan array masing-masing sebanyak 8 yaitu shpLEDA(0) – shpLEDA(7), shpLEDB(0) – shpLEDB(7) dan seterusnya. Total shape yang membentuk matriks 8 x 8 menjadi 64 buah. Tambahkan juga label sebanyak 8 buah dengan nama lblData yang dibuat secara array sehingga kita mendapatkan lblData(0) – lblData(7).

Pada frame “Heksadesimal” kita perlu memasukkan TextBox yang akan dinamai dengan txtHEX dengan properti “MaxLength” ditetapkan 2 saja untuk nilai bilangan 0 sampai FF. TextBox ini juga di copy-paste untuk mendapatkan 8 buah array txtHEX(0) – txtHex(7).

Sama halnya dengan frame “Desimal” yang perlu dimasukkan TextBox dengan nama txtDES dengan properti MaxLength ditetapkan 3 dan di copy-paste sebanyak 8 array.

Untuk tombol perintah, akan ditambahkan 3 buah “CommandButton” masing-masing bernama txtInvert dengan caption “HI”, txtPosisi dengan caption “DN” dan txtReset dengan caption “RST”.

Nah, jika persiapan tampilan sudah dilakukan, selanjutnya kita perlu memasukkan script yang akan dikerjakan oleh aplikasi.

Option Explicit

Dim i As Byte, r As Byte, h As String
Dim PosX(7) As Double, PosY(7) As Double, PosH As Double, PosW As Double

Private Sub cmdInvert_Click()
Dim L As Byte
    If cmdInvert.Caption = "HI" Then
        cmdInvert.Caption = "LO"
        Else
            cmdInvert.Caption = "HI"
            End If
    For L = 0 To 7
        txtDES(L).Text = 255 - Val(txtDES(L).Text)
        Next L
   
End Sub

Private Sub cmdPosisi_Click()
    If cmdPosisi.Caption = "DN" Then
        cmdPosisi.Caption = "UP"
        r = 8
        For i = 0 To 7
            r = r - 1
            lblData(i).Caption = "D" & r
            Next i
        Else
            cmdPosisi.Caption = "DN"
            For i = 0 To 7
                lblData(i).Caption = "D" & i
                Next i
            End If
    ProsesHeksadesimal
End Sub

Private Sub cmdReset_Click()
Dim rs

    For rs = 0 To 7
        If cmdInvert.Caption = "HI" Then txtDES(rs).Text = "0" Else txtDES(rs).Text = "255"
        Next rs
End Sub

Private Sub Form_Load()
    PosW = shpLEDA(0).Width
    PosH = shpLEDA(0).Height
    PosY(0) = shpLEDA(0).Top
    PosY(1) = shpLEDB(0).Top
    PosY(2) = shpLEDC(0).Top
    PosY(3) = shpLEDD(0).Top
    PosY(4) = shpLEDE(0).Top
    PosY(5) = shpLEDF(0).Top
    PosY(6) = shpLEDG(0).Top
    PosY(7) = shpLEDH(0).Top
    For i = 0 To 7
        PosX(i) = shpLEDA(i).Left
        Next i
    ProsesHeksadesimal
End Sub

Private Sub fraMatriks_MouseDown(Button As Integer, Shift As Integer, X As Single, Y As Single)
Dim B As Byte, K As Byte

    For i = 0 To 7
        If X > PosX(i) And X < PosX(i) + PosW Then K = i + 1: Exit For
        Next i
    For i = 0 To 7
        If Y > PosY(i) And Y < PosY(i) + PosH Then B = i + 1: Exit For
        Next i
    If B = 0 Or K = 0 Then Exit Sub
    Select Case B
        Case 1
            If shpLEDA(K - 1).FillColor = vbRed Then
                shpLEDA(K - 1).FillColor = &H8000000F
                    Else: shpLEDA(K - 1).FillColor = vbRed
                    End If
        Case 2
            If shpLEDB(K - 1).FillColor = vbRed Then
                shpLEDB(K - 1).FillColor = &H8000000F
                    Else: shpLEDB(K - 1).FillColor = vbRed
                    End If
        Case 3
            If shpLEDC(K - 1).FillColor = vbRed Then
                shpLEDC(K - 1).FillColor = &H8000000F
                    Else: shpLEDC(K - 1).FillColor = vbRed
                    End If
        Case 4
            If shpLEDD(K - 1).FillColor = vbRed Then
                shpLEDD(K - 1).FillColor = &H8000000F
                    Else: shpLEDD(K - 1).FillColor = vbRed
                    End If
        Case 5
            If shpLEDE(K - 1).FillColor = vbRed Then
                shpLEDE(K - 1).FillColor = &H8000000F
                    Else: shpLEDE(K - 1).FillColor = vbRed
                    End If
        Case 6
            If shpLEDF(K - 1).FillColor = vbRed Then
                shpLEDF(K - 1).FillColor = &H8000000F
                    Else: shpLEDF(K - 1).FillColor = vbRed
                    End If
        Case 7
            If shpLEDG(K - 1).FillColor = vbRed Then
                shpLEDG(K - 1).FillColor = &H8000000F
                    Else: shpLEDG(K - 1).FillColor = vbRed
                    End If
        Case 8
            If shpLEDH(K - 1).FillColor = vbRed Then
                shpLEDH(K - 1).FillColor = &H8000000F
                    Else: shpLEDH(K - 1).FillColor = vbRed
                    End If
        End Select

    h = cmdInvert.Caption & " " & cmdPosisi.Caption
    i = 0
    Select Case h
        Case "HI DN"
            If shpLEDA(K - 1).FillColor = vbRed Then i = i + 1
            If shpLEDB(K - 1).FillColor = vbRed Then i = i + 2
            If shpLEDC(K - 1).FillColor = vbRed Then i = i + 4
            If shpLEDD(K - 1).FillColor = vbRed Then i = i + 8
            If shpLEDE(K - 1).FillColor = vbRed Then i = i + 16
            If shpLEDF(K - 1).FillColor = vbRed Then i = i + 32
            If shpLEDG(K - 1).FillColor = vbRed Then i = i + 64
            If shpLEDH(K - 1).FillColor = vbRed Then i = i + 128
        Case "LO DN"
            If shpLEDA(K - 1).FillColor = &H8000000F Then i = i + 1
            If shpLEDB(K - 1).FillColor = &H8000000F Then i = i + 2
            If shpLEDC(K - 1).FillColor = &H8000000F Then i = i + 4
            If shpLEDD(K - 1).FillColor = &H8000000F Then i = i + 8
            If shpLEDE(K - 1).FillColor = &H8000000F Then i = i + 16
            If shpLEDF(K - 1).FillColor = &H8000000F Then i = i + 32
            If shpLEDG(K - 1).FillColor = &H8000000F Then i = i + 64
            If shpLEDH(K - 1).FillColor = &H8000000F Then i = i + 128
        Case "HI UP"
            If shpLEDA(K - 1).FillColor = vbRed Then i = i + 128
            If shpLEDB(K - 1).FillColor = vbRed Then i = i + 64
            If shpLEDC(K - 1).FillColor = vbRed Then i = i + 32
            If shpLEDD(K - 1).FillColor = vbRed Then i = i + 16
            If shpLEDE(K - 1).FillColor = vbRed Then i = i + 8
            If shpLEDF(K - 1).FillColor = vbRed Then i = i + 4
            If shpLEDG(K - 1).FillColor = vbRed Then i = i + 2
            If shpLEDH(K - 1).FillColor = vbRed Then i = i + 1
        Case "LO UP"
            If shpLEDA(K - 1).FillColor = &H8000000F Then i = i + 128
            If shpLEDB(K - 1).FillColor = &H8000000F Then i = i + 64
            If shpLEDC(K - 1).FillColor = &H8000000F Then i = i + 32
            If shpLEDD(K - 1).FillColor = &H8000000F Then i = i + 16
            If shpLEDE(K - 1).FillColor = &H8000000F Then i = i + 8
            If shpLEDF(K - 1).FillColor = &H8000000F Then i = i + 4
            If shpLEDG(K - 1).FillColor = &H8000000F Then i = i + 2
            If shpLEDH(K - 1).FillColor = &H8000000F Then i = i + 1
        End Select
        txtDES(K - 1).Text = i
End Sub

Private Sub txtDES_Change(Index As Integer)
    txtHEX(Index).Text = Hex(Val(txtDES(Index).Text))
    ProsesHeksadesimal
End Sub

Private Sub txtDES_KeyPress(Index As Integer, KeyAscii As Integer)
    If KeyAscii >= 48 And KeyAscii <= 57 Then Exit Sub
    If KeyAscii = 8 Then Exit Sub
    KeyAscii = 0
End Sub

Private Sub txtHEX_Change(Index As Integer)
    On Error Resume Next
    h = txtHEX(Index).Text
    If txtHEX(Index).Text = "" Then
        shpLEDA(Index).FillColor = &H8000000F
        shpLEDB(Index).FillColor = &H8000000F
        shpLEDC(Index).FillColor = &H8000000F
        shpLEDD(Index).FillColor = &H8000000F
        shpLEDE(Index).FillColor = &H8000000F
        shpLEDF(Index).FillColor = &H8000000F
        shpLEDG(Index).FillColor = &H8000000F
        shpLEDH(Index).FillColor = &H8000000F
        Else
            For i = 0 To 255
                If Hex(i) = txtHEX(Index).Text Then Exit For
                Next i
            txtDES(Index).Text = i
            End If
End Sub

Private Sub txtHEX_KeyPress(Index As Integer, KeyAscii As Integer)
    If KeyAscii >= 48 And KeyAscii <= 57 Then Exit Sub
    If KeyAscii >= 65 And KeyAscii <= 70 Then Exit Sub
    If KeyAscii >= 97 And KeyAscii <= 102 Then KeyAscii = KeyAscii - 32: Exit Sub
    If KeyAscii = 8 Then Exit Sub
    KeyAscii = 0
End Sub

Private Sub ProsesHeksadesimal()
    h = cmdInvert.Caption & " " & cmdPosisi.Caption
    Select Case h
        Case "HI DN": ProsesHeksa1
        Case "LO DN": ProsesHeksa2
        Case "HI UP": ProsesHeksa3
        Case "LO UP": ProsesHeksa4
        End Select
End Sub

Private Sub ProsesHeksa1()
    For r = 0 To 7
        If txtHEX(r).Text <> "" Then
            i = Val(txtDES(r).Text)
            If i >= 128 Then
                shpLEDH(r).FillColor = vbRed: i = i - 128
                Else: shpLEDH(r).FillColor = &H8000000F
                    End If
   
            If i >= 64 Then
                shpLEDG(r).FillColor = vbRed: i = i - 64
                Else: shpLEDG(r).FillColor = &H8000000F
                    End If
           
            If i >= 32 Then
                shpLEDF(r).FillColor = vbRed: i = i - 32
                Else: shpLEDF(r).FillColor = &H8000000F
                    End If
   
            If i >= 16 Then
                shpLEDE(r).FillColor = vbRed: i = i - 16
                Else: shpLEDE(r).FillColor = &H8000000F
                    End If
           
            If i >= 8 Then
                shpLEDD(r).FillColor = vbRed: i = i - 8
                Else: shpLEDD(r).FillColor = &H8000000F
                    End If
   
            If i >= 4 Then
                shpLEDC(r).FillColor = vbRed: i = i - 4
                Else: shpLEDC(r).FillColor = &H8000000F
                    End If
           
            If i >= 2 Then
                shpLEDB(r).FillColor = vbRed: i = i - 2
                Else: shpLEDB(r).FillColor = &H8000000F
                    End If
   
            If i >= 1 Then
                shpLEDA(r).FillColor = vbRed
                Else: shpLEDA(r).FillColor = &H8000000F
                    End If
            End If
        Next r
End Sub

Private Sub ProsesHeksa2()
    For r = 0 To 7
        If txtHEX(r).Text <> "" Then
            i = Val(txtDES(r).Text)
            If i >= 128 Then
                shpLEDH(r).FillColor = &H8000000F: i = i - 128
                Else: shpLEDH(r).FillColor = vbRed
                    End If
   
            If i >= 64 Then
                shpLEDG(r).FillColor = &H8000000F: i = i - 64
                Else: shpLEDG(r).FillColor = vbRed
                    End If
           
            If i >= 32 Then
                shpLEDF(r).FillColor = &H8000000F: i = i - 32
                Else: shpLEDF(r).FillColor = vbRed
                    End If
   
            If i >= 16 Then
                shpLEDE(r).FillColor = &H8000000F: i = i - 16
                Else: shpLEDE(r).FillColor = vbRed
                    End If
           
            If i >= 8 Then
                shpLEDD(r).FillColor = &H8000000F: i = i - 8
                Else: shpLEDD(r).FillColor = vbRed
                    End If
   
            If i >= 4 Then
                shpLEDC(r).FillColor = &H8000000F: i = i - 4
                Else: shpLEDC(r).FillColor = vbRed
                    End If
           
            If i >= 2 Then
                shpLEDB(r).FillColor = &H8000000F: i = i - 2
                Else: shpLEDB(r).FillColor = vbRed
                    End If
   
            If i >= 1 Then
                shpLEDA(r).FillColor = &H8000000F
                Else: shpLEDA(r).FillColor = vbRed
                    End If
            End If
        Next r
End Sub

Private Sub ProsesHeksa3()
    For r = 0 To 7
        If txtHEX(r).Text <> "" Then
            i = Val(txtDES(r).Text)
            If i >= 128 Then
        shpLEDA(r).FillColor = vbRed: i = i - 128
        Else
            shpLEDA(r).FillColor = &H8000000F
            End If
   
    If i >= 64 Then
        shpLEDB(r).FillColor = vbRed: i = i - 64
        Else: shpLEDB(r).FillColor = &H8000000F
            End If
           
    If i >= 32 Then
        shpLEDC(r).FillColor = vbRed: i = i - 32
        Else: shpLEDC(r).FillColor = &H8000000F
            End If
   
    If i >= 16 Then
        shpLEDD(r).FillColor = vbRed: i = i - 16
        Else: shpLEDD(r).FillColor = &H8000000F
            End If
           
    If i >= 8 Then
        shpLEDE(r).FillColor = vbRed: i = i - 8
        Else: shpLEDE(r).FillColor = &H8000000F
            End If
   
    If i >= 4 Then
        shpLEDF(r).FillColor = vbRed: i = i - 4
        Else: shpLEDF(r).FillColor = &H8000000F
            End If
           
    If i >= 2 Then
        shpLEDG(r).FillColor = vbRed: i = i - 2
        Else: shpLEDG(r).FillColor = &H8000000F
            End If
   
    If i >= 1 Then
        shpLEDH(r).FillColor = vbRed
        Else: shpLEDH(r).FillColor = &H8000000F
            End If
        End If
    Next r
End Sub

Private Sub ProsesHeksa4()
    For r = 0 To 7
        If txtHEX(r).Text <> "" Then
            i = Val(txtDES(r).Text)
            If i >= 128 Then
        shpLEDA(r).FillColor = &H8000000F: i = i - 128
        Else: shpLEDA(r).FillColor = vbRed
            End If
   
    If i >= 64 Then
        shpLEDB(r).FillColor = &H8000000F: i = i - 64
        Else: shpLEDB(r).FillColor = vbRed
            End If
           
    If i >= 32 Then
        shpLEDC(r).FillColor = &H8000000F: i = i - 32
        Else: shpLEDC(r).FillColor = vbRed
            End If
   
    If i >= 16 Then
        shpLEDD(r).FillColor = &H8000000F: i = i - 16
        Else: shpLEDD(r).FillColor = vbRed
            End If
           
    If i >= 8 Then
        shpLEDE(r).FillColor = &H8000000F: i = i - 8
        Else: shpLEDE(r).FillColor = vbRed
            End If
   
    If i >= 4 Then
        shpLEDF(r).FillColor = &H8000000F: i = i - 4
        Else: shpLEDF(r).FillColor = vbRed
            End If
           
    If i >= 2 Then
        shpLEDG(r).FillColor = &H8000000F: i = i - 2
        Else: shpLEDG(r).FillColor = vbRed
            End If
   
    If i >= 1 Then
        shpLEDH(r).FillColor = &H8000000F
        Else: shpLEDH(r).FillColor = vbRed
            End If
        End If
    Next r
End Sub



Sudah ya, terima kasih sudah membaca artikel ini. Semoga apa yang penulis sampaikan bermanfaat dan bisa diterapkan oleh sobat semua.

Salam....