• Tidak ada hasil yang ditemukan

T1 612008059 BAB III

N/A
N/A
Protected

Academic year: 2017

Membagikan "T1 612008059 BAB III"

Copied!
28
0
0

Teks penuh

(1)

BAB III

PERANCANGAN APLIKASI DAN MODUL AVROBJECT

Pada bab ini akan dibahas mengenai pembuatan aplikasi Avrobject dan modul

Avrobject. Penulisan sengaja dijabarkan secara detail agar dapat dengan mudah dimengerti dan dapat dipraktekkan juga secara langsung. Dilakukan juga proses pembelajaran mikrokontroler yang diikuti oleh siswa-siswi SMK menggunakan aplikasi dan modul yang dibuat. Kemudian sebagai bahan penilaian diberikan sebuah kuisioner kepada siswa-siswi untuk dijawab.

3.1. Pembuatan Aplikasi Avrobject dengan Squeak

Dibuat aplikasi Avrobject yang dapat mengontrol dua buah motor stepper dengan berbasis click and drag (klik dan seret) layaknya mengendalikan sebuah obyek. Aplikasi ini berisikan perintah-perintah pada kolom daftar perintah, jika perintah-perintah ini diseret kedalam kolom script dan bila dijalankan maka code dalam kolom script akan diunduh ke dalam mikrokontroler. Kemudian mikrokontroler akan menggerakkan motor yang mendapat perintah untuk bergerak.

Tampilan pada Avrobject dibuat layaknya seperti perintah-perintah dalam bentuk obyek, sehingga pengguna tidak perlu lagi menulis script seperti sebagaimana biasanya dengan metode Basic memprogram sebuah mikrokontroler. Dengan adanya aplikasi ini maka seorang pemula bisa dengan mudah menggerakkan motor sesuai dengan keperluan. Dalam arti pengguna juga sedang melakukan pemrograman mikrokontroler, hanya saja terbatas pada modul yang ada yaitu motor stepper pada modul Avrobject.

Dalam gambar 3.1 menunjukkan hal-hal yang dapat dilakukan oleh pengguna aplikasi Avrobject. Pengguna dapat membuka aplikasi, membuat script dengan cara klik dan seret, setelah membuat script bisa mencoba dan melihat jalannya

(2)

Gambar 3.1. Use Case Diagram Avrobject

3.1.1. Pendahuluan Pembuatan Aplikasi Avrobject

Sebelum aplikasi dibuat, terlebih dahulu diabstraksikan obyek-obyek yang ingin dibuat dalam aplikasi ini :

- Avrobject

Avrobject adalah obyek morph yang terluar pada aplikasi yang dibuat. Pada obyek Avrobject ditambahkan obyek-obyek morph lain sehingga membentuk sebuah tampilan yang dapat digunakan.

- MainMenu

Merupakan sebuah obyek persegi panjang yang digunakan sebagai latar belakang tampilan porgram.

- TaskObject

TaskObject merupakan kolom tempat blok-blok perintah ditempatkan.

- DragObject, ada beberapa obyek yang dibuat dari DragObyek, yaitu : - X

Adalah variabel yang dapat diisikan dengan nilai integer yang digunakan pada percabangan.

- Delay

Delay berfungsi untuk memberikan jeda pada bagian-bagian tertentu pada program. Nilai waktu delay ditentukan dalam satuan detik.

- Motor1

(3)

- Motor2

Obyek motor dua. Dengan memberikan obyek ini pada bagian paling atas sebuah script berarti bahwa script dibawahnya dikerjakan oleh motor dua. - RotateLeft

DragObject putar kiri, bisa dimasukkan nilai bilangan bulat positif untuk membuat motor berputar satu putaran dan diulang sebanyak nilai bilangan bulat yang diberikan.

- RotateRight

DragObject putar kanan, bisa dimasukkan nilai bilangan bulat positif untuk membuat motor berputar satu putaran dan diulang sebanyak nilai bilangan bulat yang diberikan.

- TurnTo

DragObject menuju derajat tertentu, dimasukkan nilai bilangan bulat yang berisi derajat per 360 derajat.

- TurnDegrees

DragObject bergerak sesuai derajat, dimasukkan nilai bilangan bulat positif

untuk putar kiri sebanyak derajat yang diberikan dan negatif untuk putar kanan sebanyak derajat yang diberikan.

- If

Digunakan If untuk melakukan percabangan pada saat dimana nilai variabel X sama dengan parameter yang dimasukkan pada DragObjectIf.

- For

Digunakan For untuk melakukan perulangan pada baris-baris program. Dimasukkan sebuah bilangan bulat untuk melakukan perulangan sebanyak angka bilangan bulat yang dimasukkan.

- Close

DragObject ini digunakan sebagai penutup dari percabangan dan perulangan. Setelah ditutup dengan Close maka aplikasi akan mengeksekusi blok yang ada dalam percabangan atau perulangan.

- ScriptLayout

(4)

- AnimationScreen

AnimationScreen adalah layar tempat ditampilkan animasi yang terjadi pada motor.

- Arrow

Adalah obyek jarum petunjuk posisi arah daripada sebuah jarum motor. - StartButton

Tombol agar animasi dapat dijalankan, menampilkan pergerakan motor secara animasi komputer ketika diklik.

- DownloadButton

Tombol agar stringcode diunduh ke dalam AVR, memberi perintah pada AVR untuk menjalankan motor dan menampilkan animasi pada AnimationScreen.

3.1.2. Pembuatan Aplikasi Avrobject (Class dan InstanceVariable)

Pertama kali mengerjakan sebuah proyek pada Squeak, Squeak menyediakan dua tipe proyek, yaitu MVCproject dan MorphicProject. Digunakan MorphicProject untuk pembuatan aplikasi Avrobject karena melibatkan obyek-obyek yang berupa gambar atau disebut juga morph. Dibuat proyek baru pada Squeak dengan cara pilih New Project, kemudian New MorphicProject. Setelah keluar World yang akan digunakan untuk membuat proyek kemudian buka class browser.

Gambar 3.2. Pembuatan MorphicProject baru

(5)

variabel ditulis dengan awalan huruf kecil dan kemudian jika variabel mengandung dua kata atau lebih, huruf pertama kata berikutnya ditulis dengan huruf kapital.

Cara membuat class category yang baru yaitu dengan menekan tombol menu pada mouse (klik kanan) pada kolom class category di class browser kemudian

pilih . Dinamakan class category yang baru dengan nama Avrobject-Main kemudian Accept (ctrl + s). Class category ini hanya berfungsi seperti sebuah folder agar ketika mencari class yang dibutuhkan dapat dengan mudah ditemukan.

Gambar 3.3. Pembuatan class category baru

Setelah dibuat class category Avrobject-Main, dalam class category ini ditambahkan class-class baru yang lain sesuai dengan obyek-obyek yang telah dirancang dari awal. Namun perhatikan bahwa dalam class DragObject hanya perlu dibuat sebuah class karena bentuk obyek morph yang dihasilkan mirip satu dengan yang lain. Dengan class yang dibuat ini dapat mengeluarkan obyek yang serupa tetapi memiliki nama dan fungsi yang berbeda-beda. Cara membuat class baru yaitu dengan cara klik pada class category Acrobject-Main kemudian pada subclass-nya, NameOfSubclass diganti dengan nama class yang telah didaftarkan di atas, yaitu : Avrobject; MainMenu; TaskObject; DragObject; ScriptLayout; AnimationScreen; Arrow; StartButton; DownloadButton.

(6)

Dalam setiap class yang dibuat, sering akan dipakai sebuah instace Variable yang digunakan sebagai sebuah variabel global sehingga dapat dipakai oleh class lain juga. Oleh sebab itu perlu juga dideklarasikan instance variable dari masing-masing class. Tentunya pertama diabstraksikan / dipikirkan dahulu variabel apa saja yang akan dibutuhkan, tetapi apabila ingin ditambahkan lagi nantinya bisa langsung ditambahkan. Cara penambahan intance Variable dengan diisikan variabel yang dibutuhkan dalam tanda petik satu intanceVariableNames yang dibatasi dengan spasi antar instance Variable.

- Avrobject : mainMenu taskMenu scriptLayout animationScreen startButton downloadButton trashCan.

- MainMenu : label

- TaskObject : label motor1 motor2 turnLeft turnRight turnTo turnDegree variableX ifX forX closeX delay

- ScriptLayout : label

- AnimationScreen : label circle motor1 motor2

- Arrow : delayTime

- StartButton : taskString taskList flagMode taskListIf taskListFor taskListDo intIf intFor myNumberIf myNumberFor myNumberDo myAvrobject boxValue valueOfX

taskStringFor taskStringIf - DownloadButton : port

(7)

Intance Variable tidak dapat diakses oleh class lain begitu saja, melainkan jika tidak ada method untuk mengeluarkan nilainya, ia tidak akan bisa diakses oleh class lain ( dalam arti setiap intance variable yang baru dibuat bersifat private ). Untuk membuatnya dapat diakses oleh class lain, dalam Squeak ada yang namanya accessor. Accessor ini berfungsi seperti halnya getter dan setter pada bahasa pemrograman Java. Untuk membuat accessor dari tiap variabel klik tombol menu mouse pada class yang ingin dibuat accessor-nya. Kemudian klik more, createinst var accessors. Maka akan dibuat accessor dari tiap-tiap instance variable secara otomatis.

Gambar 3.6. Pembuatan accessor dari intancevariable secara otomatis

3.1.3. Pembuatan Aplikasi Avrobject ( Method )

Obyek tidak akan dapat melakukan apa-apa sebelum diberikan method. Method membuat obyek menjadi kelihatan hidup dan dapat berinteraksi satu dengan yang lain. Method pada Squeak sering disebut juga dengan message. Setiap method yang dibuat pada masing-masing class akan lebih baik jika dimasukkan dalam methodcategory karena akan lebih mudah mencari method yang telah ditulis

jika sudah dikelompokkan. Seperti hanya terlihat pada accessor yang dibuat sebelumnya, semua accessor ditempatkan dalam satu buah method category yang

(8)

Untuk mengeluarkan sebuah obyek dari sebuah class perlu ada method initialize. Method initialize sendiri ketika ia dipanggil tidak dengan memberikan

message initialize, melainkan memberikan message new pada class yang dituju. Dalam menginisialisasi sebuah obyek morph, pasti ada method draw didalamnya. Pada umumnya method draw ini berisikan fungsi untuk membentuk obyek yang akan dihasilkan oleh class tersebut. Untuk membuat proyek morph yang kompleks akan lebih mudah jika dikerjakan dari morph yang paling terkecil dahulu. Pada paragraf-paragraf selanjutnya dijelaskan tentang method yang dibuat dalam masing-masing class dan penjelasannya.

Semua code pemrograman yang dibutuhkan untuk membangun aplikasi Avrobject berada pada lampiran CD dalam image Squeak. Dilihat menggunakan tool Class Browser ada komentar dengan tanda “ * ” merupakan komentar atau penjelasan fungsi utama dari method. Sedangkan tanda “ # ” merupakan komentar atau penjelasan dari ekspresi code dibawahnya. Tidak akan semua baris diberi komentar, melainkan apabila pada bagian atas atau di class lain sudah ada penjelasan mengenai sebuah baris code, jika ada code yang sama tidak diberi komentar lagi.

MainMenu. Pada classMainMenu dibuat method baru dengan nama initialize.

Caranya dengan klik pada class MainMenu, kemudian pada kolom method category dipilih “ --- all --- ”. Kemudian pada kolom dibawah diisikan dengan methodinitialize. Pada setiap class yang dibuat dalam aplikasi Avrobject memiliki method initialize dan draw agar dari setiap class bisa ditampilkan obyek yang dihasilkan ke World Squeak.

initialize

"* Menginisialisasi MainMenu"

super initialize.

“# Menggabungkan diri dengan morph hasil dari method draw” self addMorph: self draw.

^ self.

super initialize membuat obyek yang akan dihasilkan mewarisi class yang di atasnya. Oleh sebab itu setiap initialize harus ada super initialize.

selfmerupakan sebuah obyek yang menunjuk ke obyek yang diberikan message.

(9)

dua buah obyek morph. self addMorph: self draw digunakan untuk menambahkan obyek yang diberi message dengan obyek hasil dari method draw.

Method draw belum dibuat, tetapi dibuat berikutnya. ^self menujukkan bahwa method ini mengembalikan sebuah obyek yaitu dirinya sendiri.

Berikutnya dibuat method draw pada class MainMenu. Variabel mainMenu digunakan sebagai variabel penyimpan obyek yang sedang dibuat. MainMenu merupakan sebuah obyek PasteUpMorph yang diberi warna putih dan berukuran 1000 x 600 pixel. Sedangkan topBox adalah obyek persegi panjang sebagai tempat

akan ditaruh nama program yaitu teks yang terisi dalam label, “Avrobject”. on: #startDrag send: #value to: topBox; dan on: #click send:

#value to: topBox;merupakan proteksi agar topBox tidak bisa dipindahkan. DragObject merupakan obyek yang dapat diklik dan diseret. Apabila obyek

ini hanya diklik maka ia akan menggandakan dirinya sendiri. Obyek hasil penggandaan ini kemudian diseret kedalam ScriptLayout yang digunakan sebagai script. Agar bisa menggandakan diri dan diseret dipakai method copyByClick. dilihat pada potongan program dibawah pada obyek m diberikan message on: send: to: dan masing-masing mesagge selector diberi simbol (yang bertanda #). Simbol ini yang dibaca pada saat dilakukan sesuatu, yaitu #startDrag dan #click. Saat didapat #startDrag dikirim mesaage #grabMorph ke obyek m, begitu juga saat didapat #click dilakukan method yang berada dalam kurung kotak.

m on: #startDrag send: #grabMorph: to: m.

m on: #click send: #value to:[bar := m duplicate. bar position: ( ( m position ) + (5@5) ). bar openInWorld. bar comeToFront].

Dibuat method draw: aString pada class DragObyek karena nantinya DragObject yang dihasilkan bervariasi sehingga perlu dibuat method yang bisa diberikan parameter, berbeda dengan MainMenu yang hanya ada satu obyek dalam

proyek ini. self copyByClickpada initializemengaktifkan methodcopyByClick agar apabila obyek ini diklik akan menggandakan diri tetapi apabila diseret/drag ia tidak menggandakan diri, hanya berpindah tempat.

box merupakan sebuah persegi panjang yang menjadi dasar dari obyek ini. aString adalah sebuah string yang akan ditulis pada box ini sehingga menjadi

(10)

tempat diisikan nilai bilangan bulat yang akan menjadi parameter dari DragObject ketika digunakan dalam script.

ScriptLayout, merupakan tempat diletakkan obyek DragObject yang akan dibaca dan dijadikan sebuah script. Untuk merapikan posisi DragObject yang diletakkan pada ScriptLayout, dibuat method onClick agar pada saat ScriptLayout diklik method akan menjalankan method arrangeDragObject pada class Avrobject. Prinsip merapikan yang dipakai adalah menetapkan nilai x dan spasi nilai y antar DragObject. Kemudian diurutkan berdasarkan nilai y lalu ditempatkan ulang pada World dengan nilai x dan y yang sudah ditetapkan.

TaskObject, merupakan sebuah kolom yang berisikan deretan DragObject yang dapat digandakan dan diseret ke dalam kolom ScriptLayout. TaskObject merupakan sebuah obyek PasteUpMorph. Dibuat method drawDragObject: aString value: aValue untuk menampilkan DragObject pada kolom TaskObject ini. aString dipakai sebagai nama DragObject dan aValue dipakai sebagai nilai awal dari parameter tiap DragObject. Seperti pada Motor 1 dan Motor 2 tidak diberikan aValue karena tidak membutuhkan parameter, sedangkan DragObyek seperti

turnLeft diberi „0‟ karena membutuhkan parameter.

motor1 := self drawDragObject: 'Motor 1' value: ' '. turnLeft := self drawDragObject: 'Turn Left' value: '0'.

Pada method initialize dilihat bahwa pertama dibuat dahulu kotak terluar dari TaskObject yaitu dengan methoddraw. Setelah itu dibuat satu per satu obyek yang akan ditambahkan pada TaskObject, yaitu variabel X, motor1, motor2, turnLeft, turnRight, turnTo, turnDegree, If, For, Close dan Delay. Digunakan method

drawDragObject: aString value: aValue untuk membuat DragObject -nya. Variabel i dan space digunakan untuk memberikan nilai posisi y yang berbeda pada tiap DragObject agar tidak saling menumpuk saat ditampilkan.

(11)

dari warna biru dan warna merah. Obyek animasi Arrow tampak hanya sebuah obyek persegi panjang.

Animasi pada Squeak merupakan perubahan bentuk atau posisi morph tiap delay yang diberikan, caranya yaitu dengan mengubah posisi atau bentuk morph kemudian diberikan delay dan memperbaharui/refresh World. Dibuat method rotateLeft: anInteger untuk memutar Arrow berlawanan arah jarum jam dan rotateRight: anInteger untuk memutar animasi motor searah jarum jam. Method ini melakukan perubahan heading obyek sebanyak dua derajat tiap kalinya dan

diulangi sebanyak 180 kali. self heading: (self heading \\ 360)dibuat untuk memproteksi apabila heading sudah lebih dari 360 derajat atau kurang dari nol dearajat maka akan dikembalikan ke antara 0 hingga 359.

rotateRight: anInteger

"* Method rotateRight atau putar searah jarum jam sebanyak

anInteger yang diberikan"

| delay |

anInteger timesRepeat:[ 180 timesRepeat: [

self heading: (self heading + 2). delay := Delay forSeconds: delayTime. delay wait.

self refreshWorld.

]. ].

self heading: (self heading \\ 360).

Dibuat method turnDegrees: aDegrees untuk menganimasikan Arrow berputar sebanyak derajat yang diberikan. Masukan dengan tanda negatif dan tanpa tanda pada textBox turnDegrees akan mempegaruhi arah putarannya. Jika negatif, maka Arrow akan berputar searah jarum jam sebanyak derajat dalam textBox. Jika tanpa tanda negatif maka Arrow akan berputar berlawanan arah jarum jam.

turnDegrees: aDegrees

"* Memutar motor sebanyak aDegrees derajat. Tanda negatif

menandakan arah putaran searah jarum jam"

(12)

anInteger := (aDegrees*(-1))\\360.

self heading: ((self heading - 1) \\360). delay := Delay forSeconds: delayTime/2.

Dibuat method turnTo: aDegrees untuk menganimasikan Arrow menuju arah

yang dimasukkan pada textBox obyek turnTo. degree > (self heading) untuk menentukan arah perputaran yang akan digunakan searah jarum jam atau

berlawanan jarum jam, agar tidak terjadi kesalahan apabila derajat absis saat ini telah melewati arah yang dituju.

turnTo: aDegrees

"* Membuat panah motor menunjuk ke arah aDegrees."

| delay anInteger degree |

degree := aDegrees\\360.

"# Mengetahui apakah derajat yang akan dituju lebih besar

dari posisi saat ini"

degree > ((360-(self heading))\\360) ifTrue:[

(13)

anInteger timesRepeat:[

"# Jika benar maka motor berputar ke berlawanan arah jarum

jam menuju derajat yang dituju"

AnimationScreen, merupakan layar untuk menampilkan animasi Arrow. AnimationScreen hanya merupakan sebuah morph persegi panjang. Tambahan method lain pada initialize-release adalah drawCircle, method ini digunakan untuk

membuat obyek motor pada AnimationScreen. Dibuat dua obyek motor dengan cara menggambarkan lingkaran kemudian pada tengah lingkaran ditambahkan obyek Arrow. Jadi pada saat melakukan animasi yang bergerak hanyalah Arrow sedangkan yang lain tidak bergerak, oleh sebab itu mengapa ditempatkan method penganimasian pada class Arrow.

(14)

position:. Kemudian digabungkan semua obyek morph yang telah diinisialisasikan dengan message addMorph:.

mainMenu := MainMenu new.

taskMenu := TaskObject new. taskMenu position: 10@25. mainMenu addMorph: taskMenu;

Untuk menjalankan animasi diperlukan script pada ScriptLayout. Script dapat

dibuat dengan cara klik DragObject yang ingin ditambahkan pada TaskObject untuk digandakan, kemudian diseret/drag ke ScriptLayout. Tetapi script yang dibuat ini belum dapat dibaca. Oleh sebab itu dibuat sebuah categorymethod baru dengan nama count yang berisi method taskListArray untuk memasukkan DragObyek yang berada dalam kolom ScriptLayout dalam sebuah array dan taskListCount untuk menghitung jumlah DragObject dalam ScriptLayout.

taskListArray adalah method yang digunakan untuk mendaftarkan deretan DragObject yang berada pada ScriptLayout, agar mudah diakses dibuat sebuah array baru yang berisi DragObject. Pada Squeak akan terjadi error apabila membaca sebuah obyek kosong ( null ), untuk mencegah hal ini diperlukan proteksi dalam membaca obyek. Nilai variabel i merupakan proteksi yang digunakan untuk mengetahui jumlah obyek pada ScriptLayout.

taskList := Array new: 30. scriptLayout submorphs at:1) submorphs at: j).

]. j := j+1.

].

(15)

dimasukkan dalam array taskList. Sedangkan method taskListCount digunakan untuk menghitung jumlah DragObject yang berada pada ScriptLayout.

Dibutuhkan sebuah tombol untuk menjalankan animasi dan sebuah tombol lain untuk mengunduh script ke mikrokontroler. Untuk menjalankan animasi akan

dibuat tombol “StartButton”. Sedangkan untuk mengunduh stringcode ke dalam

Arduino dibuat tombol “Download Button”.

Agar obyek StartButton dapat diklik, ditambahkan method startClicked, method ini digunakan untuk mengecek apakah tombol StartButton sedang diklik atau tidak. Jika diklik maka akan menjalankan method doAnimation. Method doAnimation adalah method utama yang digunakan untuk menampilkan animasi pada layar komputer. Method ini akan membaca setiap array obyek dalam arrayTaskList kemudian dibandingkan satu-persatu berdasarkan labelnya dan dijalankan dengan method doAnimationFor: motorObject taskNumber: myNumber . motorObject adalah motor yang akan diaktifkan sebagai motor aktif dan myNumber adalah pointer yang menunjuk ke arrayTaskList.

doAnimation

"* Menjalankan animasi motor sesuai taskList yang didapatkan"

| i motor motorObject |

"# Yang dipakai adalah obyek Avrobject ke-2"

myAvrobject := Avrobject allInstances at: 2. taskList := self sorting.

(16)

ifTrue:[ taskListIf at: myNumberIf put: (taskList at: myNumber). taskListFor at: myNumberFor put: (taskList at: myNumber).

myNumberFor := (myNumberFor + 1).

].

].

((taskList at: myNumber) label contents) = 'Motor 1' ifTrue:[ “Jika didapati motor aktif adalah Motor 1”

flagMode = '1'

taskListIf at: myNumberIf put: (taskList at: myNumber).

(17)

].

((taskList at: myNumber) label contents) = 'Motor 2' ifTrue:[ “Jika didapati motor aktif adalah Motor 2”

taskListIf at: myNumberIf put: (taskList at: myNumber).

motorObject := (myAvrobject animationScreen motor1). self doAnimationFor: motorObject taskNumber: myNumber.

(18)

ifFalse: [

motorObject := (myAvrobject animationScreen motor2). self doAnimationFor: motorObject taskNumber: myNumber.

] ].

"# Menampilkan taskString ke layar Transcript"

Transcript show: taskString; cr.

Untuk menjalankan blok perulangan, saat mendapat DragObject Close, doAnimationFor: akan menjalankan method doFor: iTimes taskList: taskListFor iTaskList: iTaskListFor, dimana iTimes adalah jumlah perulangan yang akan dilakukan, taskListFor adalah blok taskList dalam perulangan, iTaskListFor adalah jumlah DragObject dalam blok perulangan.

Untuk menjalankan blok percabangan, saat mendapat DragObject Close, doAnimationFor: akan menjalankan method doIf: aNumber1 sameTo: aNumber2, dimana aNumber1 adalah nilai variabel X yang akan dibandingkan dengan aNumber2 yang adalah nilai percabangan. Jika kedua nilai ini sama maka animasi dalam blok percabangan akan dilakukan, kalau tidak sama tidak akan dijalankan.

Sambil menjalankan animasi, method ini juga mendaftarkan dalam taskString sebuah string yang nanti akan dikirim ke mikrokontroler. String yang dikirim ini

berisikan deretan karakter-karakter yang digunakan untuk membandingkan perintah yang satu dengan yang lain dan angka-angka yang merupakan parameter dari masing-masing perintah.

(19)

1 to: i do: [:myNumber |

1 to: i do: [:myNumber2 |

(taskListYSorted at: myNumber) =

((taskList at: myNumber2) y ) ifTrue:[

taskListSorted at: mySortNumber put: (taskList at: myNumber2).

mySortNumber := mySortNumber - 1. ].

]. ].

3.2. Pembuatan Modul Avrobject

Untuk pembuatan modul mikrokontroler ini diperlukan beberapa alat elektronik yaitu :

- Arduino Uno R3

- 2 buah motor stepper 28BYJ-48 5 Volt - 2 buah driver motor stepper ULN2003

- 2 buah kabel jumper yang tersambung dengan 4 pin female. - 2 buah kabel jumper yang tersambung dengan 2 pin female. - 20 cm x 50 cm Acrilic untuk membuat kotak alat.

(20)

Kabel koneksi USB Arduino Uno R3 disambung langsung ke port 3 pada komputer. Kabel koneksi ini berfungsi untuk memberikan daya listrik untuk menghidupkan Arduino serta untuk melakukan pemrograman chip mikrokontroler yang berada dalam Arduino dan mengirimkan data ke Arduino. Kedua motor stepper disambung langsung pada driver motor. Kemudian dari driver motor pertama yang akan digunakan sebagai driver motor satu, disambung dengan menggunakan kabel jumper 4 pin pada kaki 4 sampai 7 di Arduino. Untuk motor dua digunakan juga kabel jumper 4 pin disambungkan pada kaki 8 sampai 11 di Arduino.

Untuk menjembatani aplikasi Avrobject dengan Arduino dikirimkan stringcode dari aplikasi ke Arduino dengan menggunakan kabel USB. Avrobject juga bisa mengirimkan data melalui USB, tetapi data yang dikirimkan hanya dipakai untuk membaca posisi motor secara hitungan, tidak secara nyata. Sebab motor stepper tidak memiliki sensor yang menunjukkan posisinya dalam keadaan nyata seperti pada servo.

3.3. Pembuatan Penjembatanan Aplikasi Avrobject dengan Modul Avrobject Program yang akan dibuat pada mikrokontroler merupakan deretan library baru yang berfungsi untuk menggerakkan motor satu dan motor dua sesuai dengan perintah yang diberikan. Perintah yang diberikan berupa deretan karakter-karakter (stringcode) dari aplikasi Avrobject, dikirimkan melalui port USB 3 yaitu menggunakan komunikasi serial. Untuk memprogram chip mikrokontroler dalam Arduino menggunakan program dari Arduino sendiri yaitu Arduino1.0.5-r2 dengan

menggunakan bahasa perograman C.

Program akan membaca setiap karakter satu persatu mulai dari paling depan hingga paling belakang dari stringcode yang dikirimkan pada mikrokontroler. Berikut adalah penjelasan dari masing-masing karakter yang diberlakukan dalam program.

- m, adalah karakter yang menandakan perintah berikutnya diberikan untuk motor pertama.

- n, adalah karakter yang menandakan perintah berikutnya diberikan untuk motor kedua.

(21)

- c, adalah karakter yang menandakan perintah berputar sebanyak derajat tertentu ke arah diingikan atau turnDegrees.

- d, adalah karakter yang menandakan perintah berputar ke derajat yang diinginkan terhadap derajat awal (derajat nol) atau turnTo.

- e, adalah karakter yang menandakan memasuki blok if atau percabangan. - f, adalah karakter yang menandakan memasuki blok for atau perulangan.

- g, adalah karakter yang menandakan akhir dari sebuah blok percabangan atau perulangan.

- h, adalah karakter yang menandakan perintah delay sejumlah parameter yang diberikan (dalam satuan detik)

- “ – “ , adalah karakter penanda yang digunakan dalam turnDegrees untuk menentukan arah putarannya searah jarum jam. Jika tidak ada tanda “ – “ maka arah putarannya adalah berlawanan dengan jarum jam.

- Angka 0 – 9, merupakan parameter dari tiap-tiap perintah. Jika ditemukan deretan angka maka akan dibaca angka tersebut berupa puluhan, ratuasan atau ribuan.

Pada fungsi coClockwise() memberikan output pada kaki-kaki Arduino

yang berubah sesuai urutan binarinya. Switch case mengatur bit yang ingin diubah sesuai dengan perubahan variabel intMotor dan wiseMode mengatur variabel intMotor berubah dari kecil ke besar atau sebaliknya untuk menentukan arah putaran motor. Pemberian nilai HIGH pada sebuah kaki output pada Arduino memberi tegangan 5 volt pada kaki itu, yaitu pada driver steppper motor. Sedangkan pemberian nilai LOW pada kaki output memberikan nilai tegangan ground. Sesuai dengan perubahan itu maka driver motor stepper memberi output juga pada motor stepper sehingga motor stepper bergerak.

Tetapi setelah dilakukan percobaan error didapatkan bug pada aplikasi jika menjalankan bit motor pertama kali dari bit 0000, akan ada kehilangan beberapa derajat dari perintah yang seharusnya dikerjakan. Didapatkan bahwa hal ini dikarenakan posisi awal motor 0o adalah berada pada bit 0011. Oleh sebab itu variabel intMotor ditetapkan saat awal memiliki nilai 6, agar pada saat fungsi coClockwise() dijalankan ia akan menjalankan case 6 terlebih dahulu yaitu bit

(22)

Berikut tabel perubahan binari untuk membuat motor stepper bergerak searah jarum jam dan berlawanan arah jarum jam.

Tabel 3.1. Perubahan binari kaki-kaki output agar motor bergerak sesuai arah jarum jam atau berlawanan arah jarum jam.

Searah Jarum Jam Berlawanan Arah Jarum Jam

A B C D A B C D

1 0 0 0 0 0 0 1

1 1 0 0 0 0 1 1

0 1 0 0 0 0 1 0

0 1 1 0 0 1 1 0

0 0 1 0 0 1 0 0

0 0 1 1 1 1 0 0

0 0 0 1 1 0 0 0

1 0 0 1 1 0 0 1

3.4. Menghubungkan Aplikasi Avrobject dengan Modul Avrobject

DownloadButton adalah obyek terakhir yang dibutuhkan untuk pengunduhan

stringcode yang telah didapat dari doAnimation pada saat animasi dijalankan. DownloadButton berfungsi agar apabila ia diklik akan ditampilkan jalannya

animasi pada layar dan mengirim secara langsung stringcode pada animasi tadi. Maka akan tampak bahwa animasi motor pada layar komputer bergerak tersinkronisasi dengan motor asli yang digerakkan oleh mikrokontroler.

(23)

download

"* Mengunduh Stringcode yang dihasilkan ke dalam Arduino"

| avrobjectNumber aString | avrobjectNumber := 2.

aString := nil.

"# aString berisikan Stringcode dari taskString di class

StartButton"

aString := (StartButton allInstances at: avrobjectNumber) taskString.

"# Mengeluarkan error jika port USB 3 kosong"

ifNotNil: [

"# Mengirimkan Stringcode sehingga motor asli bergerak"

port nextPutAll: aString.

Setelah semua obyek telah dibuat method dan class-nya, maka bagian terakhir adalah menggabungkan semuanya. Yang belum digabungkan adalah obyek StartButton dan DownloadButton, oleh karena itu pada method draw class Avrobject ditambahkan pendeklarasian kedua obyek ini.

(24)

addMorph: downloadButton.

Semua obyek telah digabungkan dalam classAvrobject. Kemudian cara untuk membuat obyek baru dari class Avrobject ini dan kemudian ditampilkan di World adalah dengan menggunakan tool Workspace dengan menjalankan perintah seperti pada gambar 3.8.

Gambar 3.8. Membuat obyek Avrobject baru dan membukanya di World.

Gambar 3.9. Tampilan Avrobject di World.

(25)

Gambar 3.10. HierarchyRelationshipDiagram Avrobejct

(26)
(27)

3.5. Pembelajaran Mikrokontroler pada Siswa-Siswi SMK

Dilakukan proses pembelajaran kepada tujuh orang siswa-siswi SMK Negeri 2 Salatiga kelas XII jurusan Elektronika mengenai pemrograman mikrokontroler.

Pembelajaran pemrograman yang diberikan ada dua metode, yaitu metode Basic dan metode Flowcode. Metode Basic merupakan pembelajaran mikrokontroler

menggunakan aplikasi Arduino 1.0.5-r2 untuk memprogram mikrokontroler supaya bisa menggerakkan motor putar kiri dan putar kanan. Metode Flowcode menggunakan aplikasi Avrobject untuk memprogram mikrokontroler menggunakan DragObject yang tersedia.

Proses pembelajaran dibagi menjadi dua tahap, tahap pertama yaitu selama tiga puluh menit siswa mendapat pengajaran bagaimana memprogram Arduino untuk menggerakkan motor berputar searah jarum jam dan berlawanan arah jarum jam. Setelah itu selama tiga puluh menit juga dilakukan pembelajaran pemrograman mikrokontroler menggerakkan motor sesuai fungsi yang ada pada aplikasi Avrobject.

Siswa juga melakukan sesi tanya jawab dan pada bagian akhir memberi tanggapan mengenai pembelajaran yang dilakukan dalam sebuah kuisioner. Kuisioner yang diberikan merupakan sebuah pertanyaan yang siswa-siswi hanya menjawabnya dengan pernyataan ya atau tidak. Dalam tabel berikut adalah sepuluh pertanyaan yang diberikan.

Tabel 3.2. Pertanyaan Kuisioner dari Hasil Pembelajaran Mikrokontroler

No. Pertanyaan Kuisioner

1. Apakah anda senang belajar pelajaran tentang komputer ?

2. Apakah anda sudah pernah belajar bahasa pemrograman sebelumnya ? 3. Apakah aplikasi Avrobject terlihat menarik ?

4. Apakah modul Arduino dan motor terlihat menarik ?

5. Setelah melihat dan mencoba kedua metode belajar pemrograman Mikrokontroler dengan metode Basic dan Flowcode, apakah metode Flowcode dirasakan lebih mudah ?

6. Apakah dengan pembelajaran menggunakan metode Flowcode bisa membantu siswa tingkat SMA dan SMK dalam mempelajari pemrograman Mikrokontroler ? 7. Apakah belajar pemrograman Mikrokontroler dengan metode Basic terkesan

susah ?

8. Apakah anda tertarik ketika mendengar hendak belajar pemrograman Mikrokontroler dengan metode Flowcode ?

9. Apakah ada muncul ketertarikan untuk belajar lebih jauh memprogram Mikrokontroler dengan metode Flowcode ?

(28)

Gambar

Gambar 3.1. Use Case Diagram Avrobject
Gambar 3.2. Pembuatan MorphicProject baru
Gambar 3.3. Pembuatan class category baru
Gambar 3.5. Pembuatan intanice variable baru
+7

Referensi

Garis besar

Dokumen terkait

Menyatakan bahwa skripsi yang berjudul “Uji Kualitas Fisikokimiawi dan Mikrobiologi pada Wine Kombinasi Buah Tropis Apel Malang ( Malus pumila ), Belimbing Manis (

Surat pembaca yang sesuai dengan ilustrasi tersebut adalah….. (A) Kami sangat beruntung bersekolah yang mempunyai lahan bermain

Pemer intahan Desa adalah penyelenggaraan urusan pemerintahan oleh Pemer intah Desa dan Badan Permusyawaratan Desa dalam mengatur dan mengurus kepentingan

kecerahan perairan, dan suhu masih dalam kondisi yang baik, sedangkan hasil pengukuran kimia meliputi oksigen terlarut, salinitas, ph, nitrat dan fosfat masih

association of enthesophyte in radiography – plantar fasciitis in ultrasonography, and fat stranding in radiography – plantar fasciitis in ultrasonography, suggesting that

dari masa ke masa hingga dijadikan falsafah hidup dan cita-cita moral bangsa. 3) Pancasila sebagai Ideologi Nasional, berfungsi menggerakkan masyarakat untuk membangun

usia remaja yang melahirkan, wanita usia 15-19 tahun, dengan MDG 5.4; (4) Proporsi kelahiran dari ibu, usia 15-24 tahun, yang ditolong oleh tenaga kesehatan terlatih, di

peserta didik SMP Negeri 15 Bandung dapat dilakukan dengan merancang program bimbingan pribadi yang bertujuan untuk menciptakan lingkungan yang kondusif dengan