Mengenal Python Library Max7219

, , Leave a comment

Jika belum menyambungkan led matrix dengan Raspberry, silahkan membaca posting sebelumnya ( Raspberry Pi-Max7219 8×8 Led Matrix ). Jika sudah, tulisan kali ini membahas tentang fungsi  yang ada di python library max7219 untuk memaksimalkan fungsi dari led matrix. Saya coba bagi dalam dua bagian, pertama membahas bagian library yang berkaitan dengan pengaturan dasar. Kedua, bagian yang berkaitan dengan pengaturan output.

Jika ingin langsung mencoba tulisan ini di Raspberry Pi, saya sarankan untuk menggunakan python console. ketikan saja python di layar terminal atau buka IDLE.

Bagian Pertama

Cara menggunakan library ini dimulai dengan menuliskan baris ini terlebih dahulu di awal script

import max7219.led as led

Salah satu kelebihan library max7219 ini adalah menyediakan beberapa pilihan font. Jika tidak didefinisikan, maka font defaultnya adalah CP437. Font alternatifnya adalah SINCLAIR, TINY_FONT dan LCD_FONT. Untuk menggunakan font tersebut, kita perlu mengimport modul font.

from max7219.font import proportional, SINCLAIR_FONT, LCD_FONT
 

Kita bisa load satu font saja, atau semua font. proportional sangat berguna saat output berupa running text, dimana jarak setiap font akan dibuat selebar 1 pixel saja, sehingga terlihat bagus.

Selanjutnya, kita buat variable device untuk memanggil class matrix.

device=led.matrix()

Definisi device tersebut berfungsi dengan baik untuk single led matrix. Tapi tidak begitu pas jika kita menggunakan lebih dari satu matrix, karena setiap matrix akan mendapatkan data input pada saat yang sama (parallel). Jika kita menggunakan lebih dari satu led matrix, maka kita perlu menambahkan argumen cascaded=n. Dimana n adalah jumlah led matrix yang digunakan. Sebagai contoh, jika kita memiliki 4 in 1 led matrix, maka tulislah sebagai berikut:

device=led.matrix(cascaded=4)

Dengan cara ini, maka data dari matriks pertama akan diteruskan ke matriks selanjutnya (serial).

Berikutnya adalah memberikan orientasi dari tampilan (output) agar bisa menyesuaikan dengan bagaimana kita melihat hasilnya. Nilai argumennya adalah besaran sudut berkelipatan 90 derajat, dimulai dari 0, 90, 180 dan 270. Jika kita menggunakan single led matrix, maka sederhananya kita seperti me-rotate ke arah 90 derajat. Tapi jika kita menggunakan led matrix 4 in 1, maka menggunakan argumen yang benar (yaitu 90)akan membuat led matrix 4 in 1 berfungsi sebagaimana mestinya, output akan keluar sebagai satu baris.

device.orientation(90)

Untuk menghemat daya yang digunakan, kita bisa mengatur tingkat kecerahan dari led. Jika tidak didefinisikan, maka led akan ditampilkan dengan tingkat kecerahan maksimum. Tentu saja, daya yang dibutuhkan akan lebih banyak. Untuk membuat led lebih redup, gunakan perintah:

device.brightness(n)

n adalah nilai dari 1 hingga 15. 1 paling redup dan 15 paling terang. bagi saya, angka 15 sangat terang sekali, cenderung menyilaukan.

Bagian Kedua

Selanjutnya kita pahami beberapa fungsi dari library untuk output.

1. Running Text

Untuk menampilkan running text dari kiri ke kanan, gunakan

device.show_message(text,font,delay)

text=bentuk data bertipe string

font=tuliskan font yang diinginkan, kosong berarti default

delay=kecepatan scrolling, kosong berarti default (0.04 detik). Semakin kecil, semakin terlihat efek “smooth”. Delay yang semakin kecil lebih cocok jika memiliki menggunakan led matrix lebih dari 4.

contoh:

device.show_message("Hello World",font=proportional(SINCLAIR_FONT),delay=0.1)

Jika kita hilangkan proportional, maka jarak antar huruf akan menjadi lebih lebar, tidak begitu bagus.

2. Letter

Untuk menampilkan satu character di satu led matrix. Gunakan:

device.letter(urutan matrix,character ASCII,font)

Dengan single led matrix urutan matrix adalah sama dengan nol (0). Untuk 4 in 1 led matrix, urutan matrix dimulai dari 0-3 (0 adalah yg pertama, dan 3 adalah matrix yang keempat)

character ASCII (American Standard Code for Information Interchange) merujuk pada tabel (link) kode desimal untuk masing-masing karakter. Misal A = 65, B=66, dst. Untuk lebih mempermudah, kita gunakan fungsi ord. Sehingga kita tidak perlu menghafal tabel ASCII.

contoh:

device.letter(0,ord("B"),font=LCD_FONT)

3. Scroll Up, Down, Left, Right

Sesuai dengan namanya, fungsi scroll berguna untuk menggeser byte yang sedang aktif (semua led yang menyala) sejauh satu pixel. Fungsi ini menjadi dasar untuk menganimasikan gerakan huruf atau angka. Untuk led matrix lebih dari satu, library ini belum mensupport scroll masing-masing matrix.

device.scroll_up()

device.scroll_down()

device.scroll_left()

device.scroll_right()

4. Pixel

Ini adalah fungsi untuk membuat custom shape/character atau apapun dengan led matrix. Fungsinya untuk mengakses satu led dalam matrix. Bagi saya, fungsi ini adalah creativity window.

device.pixel(x,y,on/off)

x dan y adalah koordinat cartesian. Posisi (0,0) terletak pada pojok kiri atas dan menyesuaikan dengan orientasi yang digunakan. Range dari x adalah 0-7 ke kanan dan range y adalah 0-7 kebawah. Jadi posisi (7,7) adalah pojok kanan bawah, posisi (0,7) adalah kiri bawah, posisi (7,0) adalah kanan atas.

on dan off diwakili dengan angka 1 untuk on dan 0 untuk off.

contoh:

device.pixel(4,4,1)

5. Clear

Sesuai dengan namanya, fungsi ini akan mematikan semua led yang menyala sekaligus, sehingga memberikan kesan “clear”. Perlu dicatat, jika kita menyertakan fungsi ini di dalam sebuah loop, maka led matrix akan terkesan “flickering” atau berkedip, hal ini karena led matrix memiliki refresh rate yang rendah, on-off led tidak bisa cepat hidup setelah dimatikan, terlebih lagi beberapa led sekaligus.

contoh:

device.clear()

 

Semoga informasi ini memberikan pengetahuan, silahkan memberikan komentar dan juga share ke orang lain jika bermanfaat.

 

Referensi:

  1. https://max7219.readthedocs.io/
Facebook Comments
 

Leave a Reply