WWW.USBINOV.COMPiranti USB untuk PC, Laptop dan Raspberry Pi.

Membuat Grafik Sinus Yang Keren Dengan Yabasic

Halo, Pecinta Raspberry Pi Indonesia. Catatan eksperimen kali ini tidaklah istimewa karena hanya sekedar contoh program tanpa fungsi yang spesifik. Pada tulisan ini saya akan memberikan contoh program BASIC untuk menampilkan grafik fungsi sinus. Sekedar untuk testing saja. Struktur programnya pun asal-asalan saja (quick and dirty) – yang penting grafiknya tampil. Contoh program ini nantinya bisa dikembangkan menjadi program aplikasi yang lebih fungsional seperti monitoring suhu ruang server dilengkapi dengan grafik perubahan suhu atau kontroler suhu mesin penetas telur dengan tampilan grafik yang bagus.

Bahasa BASIC yang saya gunakan adalah YABASIC atau Yet Another BASIC. YABASIC tersedia dalam bentuk binary dan sourcecode. Untuk dapat menggunakan YABASIC pada Raspberry Pi perlu dilakukan kompilasi secara manual. Langkah-langkah instalasi YABASIC dapat Anda baca pada tulisan pada link berikut ini.

YABASIC–Interpreter BASIC Untuk Belajar Pemrograman BASIC Di Raspberry Pi

Setelah YABASIC terinstalasi dengan sukses, kita dapat langsung mengetik program dan menjalankannya dengan interpreter YABASIC. Contoh cara menjalankan file program YABASIC adalah sebagai berikut:

$ yabasic programku.bas
$ yabasic kontrolersuhu.bas

YABASIC juga memiliki fasilitas untuk mempersatukan (binding) kode program dengan interpreter. Dengan fasilitas ini kita bisa membuat file aplikasi tanpa perlu menyertakan kode program dan interpreter YABASIC. Fasilitas ini tentu sangat berguna bagi pengembang software yang ingin mendistribusikan program aplikasi tanpa menyertakan file kode programnya.

Nah, sekarang kita akan mencoba kemampuan grafis YABASIC dengan membuat program sederhana yakni penampil fungsi sinus. Berikut adalah listing programnya.

Listing Program sinus.bas (yabasic)

open window 640, 480, "A14"
clear window
clear screen

maxx = 639
maxy = 479
midx = 640 / 2
midy = 480 / 2

sub dwindow(br,bg,bb, fr,fg,fb, x1, y1, x2, y2, title$)
	color 0,0,0
	fill rectangle x1, y1, x2, y2
	color fr,fg,fb
	fill rectangle x1+1, y1+1, x2-1, y2-1
	color br,bg,bb
	rectangle x1+1, y1+1, x2-1, y2-1
	rectangle x1+1, y1+1, x2-1, y1+41
	color 100,100,100
	text midx+1, 21, title$, "12x24", "cc"
	color 255,255,0
	text midx, 20, title$, "12x24", "cc"
end sub

'Program Utama
dwindow (255,255,255, 0,0,0, 0,0,maxx,maxy, "YABASIC - GRAFIK FUNGSI SINUS")

color 255,80,0
text midx, 60, "http://raspi.teknikelektrolinks.com", "7x13", "cc"
new curve
n=0
color 0,255,0
repeat
	x = 3+n*0.4
	y = midy+150*sin(n*pi/180)
	line to x, y
	n = n + 1
until (x>=maxx-3)

new curve
n=0
color 0,100,255
repeat
	x = 3+n*0.75
	y = midy+100*sin(n*pi/180)
	line to x, y
	n = n + 1
until (x>=maxx-3)

color 0,50,255
text midx, 450, "Tekan sembarang tombol untuk selesai...", "A14", "cc"

inkey$
close window

Cukup panjang juga, tapi wajar, karena segala hal yang kita inginkan haruslah kita buat sendiri. YABASIC tidak memiliki library bawaan siap-pakai.

Penjelasan Program

Pertama-tama program membuka window program dengan ukuran 640×480 dengan font A14 sebagai font yang aktif. Setelah itu program akan menggambar window dengan bantuan subrutin dwindow(). Subrutin ini digunakan untuk menggambar windows dengan border dan judul.

sub dwindow(br,bg,bb, fr,fg,fb, x1, y1, x2, y2, title$)
	color 0,0,0
	fill rectangle x1, y1, x2, y2
	color fr,fg,fb
	fill rectangle x1+1, y1+1, x2-1, y2-1
	color br,bg,bb
	rectangle x1+1, y1+1, x2-1, y2-1
	rectangle x1+1, y1+1, x2-1, y1+41
	color 100,100,100
	text midx+1, 21, title$, "12x24", "cc"
	color 255,255,0
	text midx, 20, title$, "12x24", "cc"
end sub

Parameter br, bg, bb adalah warna border dengan format RGB – br untuk komposisi warna merah (Red), bg untuk komposisi warna hijau (Green) dan bb untuk komposisi warna biru (Blue).

Parameter fr, fg, fb adalah warna dasar window (fill) dengan format yang sama yakni RGB – fr untuk komposisi warna merah, fg untuk komposisi warna hijau dan fb untuk komposisi warna biru.

Parameter x1, y1 adalah koordinat kiri-atas dari window dan parameter x2, y2 adalah koordinat kanan-bawah dari window.

Parameter title$ adalah judul yang ditampilkan untuk window. Parameter ini bertipe string.

Selanjutnya program menggambar (plotting) 2 buah grafik sinus dengan parameter dan warna yang berbeda. Bagian program yang menggambar grafik sinus pertama adalah sebagai berikut:

new curve
n=0
color 0,255,0
repeat
	x = 3+n*0.4
	y = midy+150*sin(n*pi/180)
	line to x, y
	n = n + 1
until (x>=maxx-3)

Bagian program ini akan menggambar grafik sinus dengan warna hijau.

Dan bagian program yang bertugas menggambar grafik sinus kedua adalah sebagai berikut:

new curve
n=0
color 0,100,255
repeat
	x = 3+n*0.75
	y = midy+100*sin(n*pi/180)
	line to x, y
	n = n + 1
until (x>=maxx-3)

Bagian program ini akan menggambar grafik sinus dengan warna biru.

Program akan diakhiri jika user menekan tombol pada keyboard atau menekan tombol mouse. Screenshot hasil running program sinus.bas ditampilkan oleh gambar berikut ini.

raspi_yabasic_sinus

Lumayan banget, bukan?

Menggunakan YABASIC terus-terang mengingatkan saya pada masa awal belajar pemrograman ketika menggunakan interpreter GWBASIC dan kompiler Turbo BASIC. Untuk membuat program aplikasi, yang kita butuhkan hanyalah file interpreter dan editor untuk mengetik program. Ini sangat cocok untuk Raspberry Pi. Bagi Anda yang menggunakan Raspberry Pi sebagai platform untuk belajar linux dan belajar pemrograman, YABASIC boleh Anda pertimbangkan sebagai salah satu bahasa pemrograman untuk dipelajari.

Khusus Bagi Anda Pembaca Blog

Jika Anda menginginkan file aplikasi yabasic versi Linux-Arm6 yang siap pakai dan juga program sinus.bas, silakan mengisi komentar pada tulisan ini. Informasikan juga nama dan alamat email Anda agar saya dapat mengirimkan filenya langsung ke alamat email Anda.

Nah, sekian dulu Catatan Eksperimen Raspberry Pi kali ini, semoga bermanfaat dan tunggu catatan eksperimen Raspberry Pi selanjutnya.

Selamat belajar dan selamat berkarya!

7 Comments

Add a Comment

Your email address will not be published. Required fields are marked *