BAB III PERANCANGAN APLIKASI DAN MODUL AVROBJECT€¦ · yaitu motor stepper pada modul Avrobject....

28
13 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 animasi. Kemudian mengunduh script dan melihat pergerakan motor asli. Jika telah selesai digunakan, aplikasi dapat ditutup.

Transcript of BAB III PERANCANGAN APLIKASI DAN MODUL AVROBJECT€¦ · yaitu motor stepper pada modul Avrobject....

Page 1: BAB III PERANCANGAN APLIKASI DAN MODUL AVROBJECT€¦ · yaitu motor stepper pada modul Avrobject. Dalam gambar 3.1 menunjukkan hal-hal yang dapat dilakukan oleh pengguna aplikasi

13

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

animasi. Kemudian mengunduh script dan melihat pergerakan motor asli. Jika telah

selesai digunakan, aplikasi dapat ditutup.

Page 2: BAB III PERANCANGAN APLIKASI DAN MODUL AVROBJECT€¦ · yaitu motor stepper pada modul Avrobject. Dalam gambar 3.1 menunjukkan hal-hal yang dapat dilakukan oleh pengguna aplikasi

14

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

Obyek motor satu. Dengan memberikan obyek ini pada bagian paling atas

sebuah script berarti bahwa script dibawahnya dikerjakan oleh motor satu.

Page 3: BAB III PERANCANGAN APLIKASI DAN MODUL AVROBJECT€¦ · yaitu motor stepper pada modul Avrobject. Dalam gambar 3.1 menunjukkan hal-hal yang dapat dilakukan oleh pengguna aplikasi

15

- 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 DragObject If.

- 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

ScriptLayout adalah tempat diletakkannya blok-blok perintah yang ingin

dikerjakan.

Page 4: BAB III PERANCANGAN APLIKASI DAN MODUL AVROBJECT€¦ · yaitu motor stepper pada modul Avrobject. Dalam gambar 3.1 menunjukkan hal-hal yang dapat dilakukan oleh pengguna aplikasi

16

- 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 Instance Variable)

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

Untuk mengawali pembuatan aplikasi diawali dengan membuat class

category yang baru yaitu Avrobject-Main. Aturan umum penulisan nama class dan

nama method pada Squeak sama pada bahasa Java, yaitu pada huruf paling depan

setiap kata dari class diberi tanda dengan huruf kapital. Sedangkan method atau

Page 5: BAB III PERANCANGAN APLIKASI DAN MODUL AVROBJECT€¦ · yaitu motor stepper pada modul Avrobject. Dalam gambar 3.1 menunjukkan hal-hal yang dapat dilakukan oleh pengguna aplikasi

17

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.

Gambar 3.4. Pembuatan class baru dengan mengganti nama subclass-nya

Page 6: BAB III PERANCANGAN APLIKASI DAN MODUL AVROBJECT€¦ · yaitu motor stepper pada modul Avrobject. Dalam gambar 3.1 menunjukkan hal-hal yang dapat dilakukan oleh pengguna aplikasi

18

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

Gambar 3.5. Pembuatan intanice variable baru

Page 7: BAB III PERANCANGAN APLIKASI DAN MODUL AVROBJECT€¦ · yaitu motor stepper pada modul Avrobject. Dalam gambar 3.1 menunjukkan hal-hal yang dapat dilakukan oleh pengguna aplikasi

19

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, create inst

var accessors. Maka akan dibuat accessor dari tiap-tiap instance variable secara

otomatis.

Gambar 3.6. Pembuatan accessor dari intance variable 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 method category 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

bernama accessing.

Page 8: BAB III PERANCANGAN APLIKASI DAN MODUL AVROBJECT€¦ · yaitu motor stepper pada modul Avrobject. Dalam gambar 3.1 menunjukkan hal-hal yang dapat dilakukan oleh pengguna aplikasi

20

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 class MainMenu 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

method initialize. 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.

self merupakan sebuah obyek yang menunjuk ke obyek yang diberikan message.

addMorph: adalah method dari class Morph digunakan untuk menggambungkan

Page 9: BAB III PERANCANGAN APLIKASI DAN MODUL AVROBJECT€¦ · yaitu motor stepper pada modul Avrobject. Dalam gambar 3.1 menunjukkan hal-hal yang dapat dilakukan oleh pengguna aplikasi

21

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 copyByClick pada initialize mengaktifkan method copyByClick

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

pembeda antara DragObject yang satu dengan yang lain. textBox digunakan untuk

Page 10: BAB III PERANCANGAN APLIKASI DAN MODUL AVROBJECT€¦ · yaitu motor stepper pada modul Avrobject. Dalam gambar 3.1 menunjukkan hal-hal yang dapat dilakukan oleh pengguna aplikasi

22

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 method draw. 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.

Kemudian yang paling penting juga dalam proyek ini adalah class Arrow.

Arrow menampilkan animasi pergerakan motor stepper pada layar komputer.

Walaupun Arrow sebernarnya diisikan pada obyek AnimationScreen, tetapi pada

class Arrow ditempatkan method turnLeft, turnRight, turnTo, dan turnDegree

bukan pada class AnimationScreen. Animasi Arrow memerlukan delayTime

sebagai skala waktu untuk menyeimbangkan animasi pada layar komputer dengan

modul motor stepper yang asli. Arrow merupakan sebuah morph jarum yang terdiri

Page 11: BAB III PERANCANGAN APLIKASI DAN MODUL AVROBJECT€¦ · yaitu motor stepper pada modul Avrobject. Dalam gambar 3.1 menunjukkan hal-hal yang dapat dilakukan oleh pengguna aplikasi

23

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"

| delay anInteger |

aDegrees negative

ifTrue:[

Page 12: BAB III PERANCANGAN APLIKASI DAN MODUL AVROBJECT€¦ · yaitu motor stepper pada modul Avrobject. Dalam gambar 3.1 menunjukkan hal-hal yang dapat dilakukan oleh pengguna aplikasi

24

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

anInteger timesRepeat:[

self heading: ( (self heading + 1) \\360).

delay := Delay forSeconds: delayTime/2.

delay wait.

self refreshWorld.

].

]

ifFalse:[

anInteger := (aDegrees)\\360.

anInteger timesRepeat:[

self heading: ((self heading - 1) \\360).

delay := Delay forSeconds: delayTime/2.

delay wait.

self refreshWorld.

].

].

self heading: (self heading \\ 360).

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:[

anInteger := (degree - ((360-(self

heading))\\360) ) asInteger.

Page 13: BAB III PERANCANGAN APLIKASI DAN MODUL AVROBJECT€¦ · yaitu motor stepper pada modul Avrobject. Dalam gambar 3.1 menunjukkan hal-hal yang dapat dilakukan oleh pengguna aplikasi

25

anInteger timesRepeat:[

"# Jika benar maka motor berputar ke berlawanan arah jarum

jam menuju derajat yang dituju"

self heading: ((self heading-1)\\360 ).

delay := Delay forSeconds: delayTime/2.

delay wait.

self refreshWorld.

].

]

ifFalse:[

anInteger := (((360-(self heading))\\360 ) -

degree) asInteger.

anInteger timesRepeat:[

"# Jika salah maka motor berputar searah jarum jam menuju

derajat yang dituju"

self heading: ((self heading+1)\\360 ).

delay := Delay forSeconds: delayTime/2.

delay wait.

self refreshWorld.

].

].

self heading: ((aDegrees \\ 360)*(-1)).

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.

Setelah semua obyek selesai dibuat, saatnya untuk menyatukan obyek-obyek

tersebut. Obyek-obyek tersebut disatukan pada sebuah obyek utama yaitu

Avrobject. Setiap obyek dimasukkan dalam instance variable yang berada pada

class Avrobject agar nantinya dapat digunakan oleh class lain juga. Masing-masing

obyek diletakkan pada posisinya agar terlihat rapi dengan menggunakan message

Page 14: BAB III PERANCANGAN APLIKASI DAN MODUL AVROBJECT€¦ · yaitu motor stepper pada modul Avrobject. Dalam gambar 3.1 menunjukkan hal-hal yang dapat dilakukan oleh pengguna aplikasi

26

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 category method 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.

i := ((self scriptLayout submorphs at:1) submorphs

size) -1.

i timesRepeat: [

label := (self scriptLayout submorphs at:1)

submorphs at: j.

label class = DragObject

ifTrue: [

taskList at: j put: ( (self

scriptLayout submorphs at:1) submorphs at: j).

].

j := j+1.

].

Pada kolom perulangan, akan dilakukan perulangan sebanyak nilai variabel i.

Jika didapat bahwa obyek yang dimaksud adalah DragObject, maka obyek ini akan

Page 15: BAB III PERANCANGAN APLIKASI DAN MODUL AVROBJECT€¦ · yaitu motor stepper pada modul Avrobject. Dalam gambar 3.1 menunjukkan hal-hal yang dapat dilakukan oleh pengguna aplikasi

27

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.

i := self sorting size.

motor := 'Motor 1'.

taskString := String new.

taskStringIf := String new.

taskStringFor := String new.

taskListIf := Array new: 30.

taskListFor := Array new: 30.

myNumberIf := 0.

myNumberFor := 0.

flagMode := '1'.

1 to: i do: [:myNumber |

boxValue := ((taskList at: myNumber) textBox

contents) asString asInteger.

((taskList at: myNumber) label contents)='X'

Page 16: BAB III PERANCANGAN APLIKASI DAN MODUL AVROBJECT€¦ · yaitu motor stepper pada modul Avrobject. Dalam gambar 3.1 menunjukkan hal-hal yang dapat dilakukan oleh pengguna aplikasi

28

ifTrue:[

valueOfX := boxValue.

“flagMode = „1‟ mode biasa, „e‟ mode

percabangan, „f‟ mode perulangan”

flagMode = '1'

ifTrue:[

“Mendaftarkan dalam stringcode yang akan dikirim”

taskString := (taskString, valueOfX, 'x').

].

flagMode = 'e'

ifTrue:[

taskStringIf :=(taskStringIf,valueOfX, 'x').

taskListIf at: myNumberIf put: (taskList at:

myNumber).

myNumberIf := (myNumberIf + 1).

].

flagMode = 'f'

ifTrue:[

taskStringFor:=(taskStringFor,valueOfX,'x').

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'

ifTrue:[

motor := 'Motor 1'.

taskString := (taskString, 'm').

].

flagMode = 'e'

ifTrue:[

taskStringIf := (taskStringIf, 'm').

taskListIf at: myNumberIf put: (taskList

at: myNumber).

myNumberIf := (myNumberIf + 1).

Page 17: BAB III PERANCANGAN APLIKASI DAN MODUL AVROBJECT€¦ · yaitu motor stepper pada modul Avrobject. Dalam gambar 3.1 menunjukkan hal-hal yang dapat dilakukan oleh pengguna aplikasi

29

].

flagMode = 'f'

ifTrue:[

taskStringFor := (taskStringFor, 'm').

taskListFor at: myNumberFor put: (taskList

at: myNumber).

myNumberFor := (myNumberFor + 1).

].

].

((taskList at: myNumber) label contents) = 'Motor 2'

ifTrue:[ “Jika didapati motor aktif adalah Motor 2”

flagMode = '1'

ifTrue:[

motor := 'Motor 2'.

taskString := (taskString, 'n').

].

flagMode = 'e'

ifTrue:[

taskStringIf := (taskStringIf, 'n').

taskListIf at: myNumberIf put: (taskList

at: myNumber).

myNumberIf := (myNumberIf + 1).

].

flagMode = 'f'

ifTrue:[

taskStringFor := (taskStringFor, 'n').

taskListFor at: myNumberFor put: (taskList

at: myNumber).

myNumberFor := (myNumberFor + 1).

].

].

motor = 'Motor 1'

ifTrue:[

motorObject := (myAvrobject animationScreen motor1).

self doAnimationFor: motorObject taskNumber: myNumber.

]

Page 18: BAB III PERANCANGAN APLIKASI DAN MODUL AVROBJECT€¦ · yaitu motor stepper pada modul Avrobject. Dalam gambar 3.1 menunjukkan hal-hal yang dapat dilakukan oleh pengguna aplikasi

30

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.

Untuk mengurutkan script yang ditulis agar tidak salah dalam pembacaan

script dibuat sebuah method sorting. Karena dalam membaca script pada

ScriptLayout diinginkan berdasarakan urutan dari paling atas ke paling bawah

maka method sorting ini mengatur ulang posisi taskList berdasarkan nilai posisi y.

Saat pertama kali taskList dimasukkan, taskList masih diurutkan berdasarkan yang

mana lebih dahulu ditempatkan pada ScriptLayout. Metode pengurutan yang

dipakai adalah mengurutkan dahulu nilai-nilai y yang ada dari terbesar ke yang

terkecil, kemudian membandingkan nilai y dengan taskList yang belum diurutkan.

Jika sama maka DragObject ini dimasukkan dalam taskListSorted.

Page 19: BAB III PERANCANGAN APLIKASI DAN MODUL AVROBJECT€¦ · yaitu motor stepper pada modul Avrobject. Dalam gambar 3.1 menunjukkan hal-hal yang dapat dilakukan oleh pengguna aplikasi

31

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.

Gambar 3.7. Diagram Alir Modul Avrobject

Page 20: BAB III PERANCANGAN APLIKASI DAN MODUL AVROBJECT€¦ · yaitu motor stepper pada modul Avrobject. Dalam gambar 3.1 menunjukkan hal-hal yang dapat dilakukan oleh pengguna aplikasi

32

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.

- a, adalah karakter yang menandakan perintah putar kanan atau rotateRight.

- b, adalah karakter yang menandakan perintah putar kiri atau rotateLeft.

Page 21: BAB III PERANCANGAN APLIKASI DAN MODUL AVROBJECT€¦ · yaitu motor stepper pada modul Avrobject. Dalam gambar 3.1 menunjukkan hal-hal yang dapat dilakukan oleh pengguna aplikasi

33

- 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

0011.

Page 22: BAB III PERANCANGAN APLIKASI DAN MODUL AVROBJECT€¦ · yaitu motor stepper pada modul Avrobject. Dalam gambar 3.1 menunjukkan hal-hal yang dapat dilakukan oleh pengguna aplikasi

34

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.

Ditambahkan method startCliked dan download agar obyek ini dapat

mendeteksi adanya penekanan tombol mouse pada dirinya. Method download

melakukan pengecekan port pada komputer dan mengirimkan data aString melalui

port tersebut. Disini menggunakan port 3 karena USB port yang dipakai untuk

mengirimkan data adalah USB port 3. Jika menggantinya dengan port lain maka

pengiriman data juga harus dilakukan melalui port yang digantikan.

Page 23: BAB III PERANCANGAN APLIKASI DAN MODUL AVROBJECT€¦ · yaitu motor stepper pada modul Avrobject. Dalam gambar 3.1 menunjukkan hal-hal yang dapat dilakukan oleh pengguna aplikasi

35

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.

port := SerialPort new.

"# Mendeklarasikan atau membuka port USB, yang dipakai

adalah port USB 3"

port := port openPort: 3.

port ifNil: [ Transcript show: 'Something went wrong

with the open - ' ; show: (port); cr.

"# Mengeluarkan error jika port USB 3 kosong"

ifNotNil: [

"# Mengirimkan Stringcode sehingga motor asli bergerak"

port nextPutAll: aString.

port nextPutAll: String cr.

].

port close.

"# Menjalankan animasi pada animationScreen"

(StartButton allInstances at: 2) doAnimation.

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.

startButton := StartButton new.

downloadButton := DownloadButton new.

startButton position: 550@350.

downloadButton position: 680@350.

mainMenu addMorph: taskMenu;

addMorph: startButton;

Page 24: BAB III PERANCANGAN APLIKASI DAN MODUL AVROBJECT€¦ · yaitu motor stepper pada modul Avrobject. Dalam gambar 3.1 menunjukkan hal-hal yang dapat dilakukan oleh pengguna aplikasi

36

addMorph: downloadButton.

Semua obyek telah digabungkan dalam class Avrobject. 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.

Maka secara singkat semua yang telah dibuat mengenai Aplikasi Avrobject

ini akan tampak seperti Hierarchy Relationship Diagram pada Gambar 3.10, Class

Diagram pada Gambar 3.11 dan State Diagram pada Gambar 3.12.

Page 25: BAB III PERANCANGAN APLIKASI DAN MODUL AVROBJECT€¦ · yaitu motor stepper pada modul Avrobject. Dalam gambar 3.1 menunjukkan hal-hal yang dapat dilakukan oleh pengguna aplikasi

37

Gambar 3.10. Hierarchy Relationship Diagram Avrobejct

Gambar 3.11. Class Diagram Avrobejct

Page 26: BAB III PERANCANGAN APLIKASI DAN MODUL AVROBJECT€¦ · yaitu motor stepper pada modul Avrobject. Dalam gambar 3.1 menunjukkan hal-hal yang dapat dilakukan oleh pengguna aplikasi

38

Gambar 3.12. State Diagram Avrobject

Page 27: BAB III PERANCANGAN APLIKASI DAN MODUL AVROBJECT€¦ · yaitu motor stepper pada modul Avrobject. Dalam gambar 3.1 menunjukkan hal-hal yang dapat dilakukan oleh pengguna aplikasi

39

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 ?

10. Jika ada ekstra kulikuler mengenai Mikrokontroler di sekolah anda dengan

metode Flowcode, apakah anda tertarik untuk ikut ?

Page 28: BAB III PERANCANGAN APLIKASI DAN MODUL AVROBJECT€¦ · yaitu motor stepper pada modul Avrobject. Dalam gambar 3.1 menunjukkan hal-hal yang dapat dilakukan oleh pengguna aplikasi

40