BAB III
PERANCANGAN & PEMBUATAN ALAT
3.1. Perancangan Sistem Monitoring Simulasi Otomatisasi Mass Rapid Transit (MRT) dengan menggunakan tombol manual.
Dalam bab ini akan dibahas pembuatan dan perancangan MRT. Ada pun system pergerakan MRT ini dibuat dan dirancang dengan blok diagram.
3.1.1.Blok Diagram Rangkaian
Untuk merealisasikan pergerakan MRT, maka secara sistem keseluruhan rangkaian simulasi MRT berbasis arduino yang dikontrol oleh sebuah Arduino Leonardo seperti pada Gambar 3.1.
Gambar 3.1. Diagram Blok MRT Arduino Leonardo MRT Motor Driver/Motor Shield Berjalan Servo Tutup/Buka Pintu I2C LCD 16 x 2 Tampilan Xbee KontrolRemote Led Lampu Tombol KontrolManual
Kartu RFID & NFC Berhentidistasiun
MP3&Speaker Suara
Penjelasan Diagram Blok :
Terdapat servo, I2C LCD 16 x 2, motor driver, Xbee, led, speaker (sebagai output) yang diprogram oleh sebuah mikrokontroler yaitu Arduino Leonardo. Dan terdapat MP3, kartu RFID dan tombol (sebagai input) yang juga diprogram oleh mikrokontroler Arduino Leonardo. Untuk menjalankan MRT tersebut dengan menggunakan tombol, setelah Arduino Leonardo dihubungkan dengan baterai lipopolymer 7.4 Volt. Fungsi dari diagram blok di atas adalah :
1.Motor Driver :
Motor drivenr yang posisinya berada pada roda berfungsi untuk berjalan
2. LCD 16 x 2 I2C :
Sebagai tampilan dari tulisan 3. Servo :
Untuk menutup dan membuka pintu 4. MP3 player :
Player mampu memainkan suara yang ada pada kartu SD yang ada pada bagian bawah MP3 player
5. Speaker :
6. RFID :
Menyimpan nomor seri yang mengidentifikasi nama tempat pada microchip yang terpasang pada antena (chip dan antenna bersama-sama disebut transponder RFID atau tag RFID). Antena memungkinkan chip untuk mengirimkan informasi identifikasi untuk pembaca (NFC)
7. NFC :
NFC sebagai pembaca mengubah gelombang radio yang dipantulkan kembali dari tag RFID menjadi informasi digital yang kemudian diteruskan ke mikrokontroler yang akan melakukan proses selanjutanya.
8. Tombol berwarna kuning:
Sebagai kontrol manual dan memberikan input untuk Mikrokontroler 9. Lampu LED :
Warna led hijau sebagai indikator pintu terbuka dan warna led merah sebagai indikator pintu tertutup
10. Xbee :
Sebagai kontrol remote untuk melakukan komunikasi dengan Xbee yang mempunyai koneksi dengan komputer yang berfungsi sebagai kontrol pengganti fungsi tombol berwarna kuning
11. Arduino Leonardo :
Berfungsi sebagai system kontrol dari semua komponen yang ada : motor driver L298, LCD I2C, Servo, MP3 Player, Speaker, NFC, RFID, tombol berwarna kuning, lampu led hijau dan merah, Xbee.
3.1.2. Skema Diagram MRT
Gambar 3.3. Hubungan baterai dengan tombol on/off
Pada skema digambarkan : 1.Xbee :
Terhubung dengan kaki Rx dan Tx pada board Arduino Leonardo. Xbee ini akan menghubungkan komunikasi dari MRT dengan Xbee yang terhubung dengan komputer :
2. RFID/NFC :
Terhubung dengan kaki 10, 11, 12 dan 13 dari board Arduino Leonardo. Data yang ada pada RFID akan dibaca oleh NFC
3. Motor Drive ;
Tombol on /off
Terhubung dendarigan kaki 4, 5, 6 dan 7 dari board Arduino Leonardo.
4. Servo :
Terhubung dengan kaki 2 dan 3 dari board Arduino Leonardo. Servo berfungsi untuk membuka dan menutup pintu. Servo ditempelkan pada pintu MRT.
5. MP3 player :
Terhubung dengan kaki Rx 0 dan Tx 1. Dibagian bawah MP3 terdapat SD card untuk menyimpan suara. SD card dapat dicabut dan dihubungkan ke komputer untuk mendapatkan file suara/sound. Pengisian suara (rekaman) dapat dilakukan dengan menggunakan handphone android yang mempunyai program Hi-Q MP3.
6. Speaker :
Untuk memperbesar suara yang dihubungkan ke MP3 player. Sehingga memperbesar suara yang tersimpan di SD card.
7. LCD 16 x 2 I2C :
Terhubung dengan kaki A4 dan A5 pada board Arduino Leonardo. 8. Tombol kuning :
Terhubung dengan kaki A3 dari board Arduino Leonardo. 9. Lampu led hijau :
Terhubung dengan kaki A1 dari board Arduino Leonardo. 10. Lampu led merah :
11. Tombol on/off :
Terhubung dengan power supply baterai Lipoplymer 7,4 V 12. I/O Expansion Shield V7:
Tidak terlihat pada diagram karena merupakan shield yang dibutuhkan untuk soket Xbee. I/O expansion shield ini ditumpuk pada Arduino Leonardo.
13. MiniQ 2WD plus :
Tidak terlihat pada diagram. Mempunyai 2 roda yang dijalankan oleh motor driver L298. Sehingga MRT dapat berjalan
14. 2WD MiniQ (rangka) :
Tidak terlihat pada diagram. Berfungsi sebagai tempat untuk menumpuk board Arduino Leonardo.
13. Untuk melindungi komponen MRT :
Dibuat sederhana tampilan body MRT seperti kotak terbuat dari foamboard.
Gambar 3.4. Prototype MRT
14. Track MRT
Agar MRT melalui lintasan yang diharapkan maka dibuatkanlah track berbentuk elips yang terbuat dari kayu dengan ukuran : panjang 2,5 m x lebar 1 m. Dan pada bagian kiri dan kanannya diberi pembatas, sehingga membuat MRT berjalan sesuai lintasan pada track.
Gambar 3.5. Prototype Track MRT
15. Ring Tamiya :
Agar MRT pada saat berjalan pada track khususnya pada saat berbelok dapat berjalan dengan mulus, maka dibagian kiri dan kanan MRT baik di bagian depan dan bagian belakang diberi ring tamiya.
3.1.3. Flow Chart Ya Tidak Ya Tidak Ya Mulai LCD : Hello MRT Pintu Terbuka Hidupkan tombol on/off Tombol Kuning on
Lampu merah menyala “Pintu akan ditutup”
“Stasiun selanjutnya, stasiun B” Pintu Tertutup
MRT berjalan menuju stasiun B
MRT melalui RFID B
“Anda telah sampai di stasiun B” “Pintu akan dibuka”
Lampu hijau menyala Pintu terbuka
“Pintu akan ditutup” Lampu merah menyala
“Stasiun selanjutnya, stasiun C” MRT berjalan menuju stasiun B
Tidak Ya Tidak Ya Tidak Ya A B MRT melalui RFID C
“Anda telah sampai di stasiun C” “Pintu akan dibuka”
Lampu hijau menyala Pintu terbuka
“Pintu akan ditutup” Lampu merah menyala
“Stasiun selanjutnya, stasiun D” MRT melalui
RFID D
“Anda telah sampai di stasiun D” “Pintu akan dibuka”
Lampu hijau menyala Pintu terbuka
“Pintu akan ditutup” Lampu merah menyala
“Stasiun selanjutnya, stasiun E”
MRT melalui RFID E
“Anda telah sampai di stasiun E” “Pintu akan dibuka”
Lampu hijau menyala Pintu terbuka
“Pintu akan ditutuip” Lampu merah menyala
“Stasiun selanjutnya, stasiun E”
Tidak
Ya
Tidak
Ya
Gambar 3.6. Flow Chart MRT
B
MRT melalui RFID F
A “Anda telah sampai di stasiun F”
“Pintu akan dibuka” Lampu hijau menyala Pintu terbuka
“Pintu akan ditutup” Lampu merah menyala
“Stasiun selanjutnya, stasiun A”
MRT melalui RFID A
“Anda telah sampai di stasiun A” “Pintu akan dibuka
Lampu hijau menyala Pintu terbuka
“Pintu akan ditutup” Lampu merah menyala
Stasiun selanjutnya, stasiun B” Stop
3.1.4. Program Arduino : // Encoder
const byte encoder0pinA = A2;//A pin -> the interrupt pin 0 //const byte encoder0pinB = 2;//B pin -> the digital pin 2 byte encoder0PinALast;
int duration;//the number of the pulses boolean Direction;//the rotation direction int kecepatan = 0;
int counterJarak = 0;
// 05. Tambahan sensor line follower #define LFkiri A4 #define LFkanan A5 #define PUTIH 1 #define HITAM 0 // Data Kartu String listId[6] = {"D0 24 66 34", "F0 38 ED 34", "C0 39 ED 34", "00 3A ED 34", "50 1F 77 35", "40 3A 66 34"};
char stationName[6] = {'A','B','C','D','E','F'};
// Tombol
#define pushButton A3 #define ditekan LOW
// LED #define ledRed A0 #define ledGreen A1 // SERVO #include <Servo.h>
Servo myservo1; // create servo object to control a servo // a maximum of eight servo objects can be created //Servo myservo2; // create servo object to control a servo // a maximum of eight servo objects can be created
// LCD
#include <Wire.h>
LiquidCrystal_I2C lcd(0x20,16,2); // set the LCD address to 0x27 for a 16 chars and 2 line display
// MP3 player I2C
// librarynya sdh ada di lcd, pakai I2C, alamatnya yang beda
#define ArduinoPlayer_address 0x35 //ArduinoPlayer I2C address 0x35 (default)
void TwiSend(const char *cmd) //I2C Command {
char len = 0;
len = strlen(cmd); //Calculate the length of the command
Wire.beginTransmission(ArduinoPlayer_address); // ArduinoPlayer I2C address while(len--) { Wire.write(*(cmd++)); }
Wire.endTransmission(); // stop transmitting }
// NFC #include <SPI.h> #include <PN532_SPI.h> #include "PN532.h" #include <NfcAdapter.h> PN532_SPI pn532spi(SPI, 10); NfcAdapter nfc = NfcAdapter(pn532spi);
// Motor shield ini menggunakan pin 4,5,6,7 untuk mengontrol 2 motor // Sambungkan motor DC ke M1+, M1-, M2+, M2-
// Upload sketch ke Arduino
// Via serial monitor, ketikkan "a", "s", "d", "w", dan "x" // untuk mengontrol kedua motor
// Last Modified :
#define motorKiri_Dir 4 // arah putar (Motor 2 / Kiri)
#define motorKiri_Vel 5 // kontrol kecepatan (Motor 2 / Kiri) #define motorKanan_Vel 6 // kontrol kecepatan (Motor 1 / Kanan) #define motorKanan_Dir 7 // arah putar (Motor 1 / Kanan)
#define jalan true #define diam false
void motorKanan(int pwm, boolean reverse) {
analogWrite(motorKanan_Vel, map(pwm,0,100,0,255)); if (reverse) digitalWrite(motorKanan_Dir, HIGH); else digitalWrite(motorKanan_Dir, LOW);
}
void motorKiri(int pwm, boolean reverse) {
analogWrite(motorKiri_Vel, map(pwm,0,100,0,255)); if (reverse) digitalWrite(motorKiri_Dir, HIGH); else digitalWrite(motorKiri_Dir, LOW);
} int x,delay_en; char val; void setup() { Serial1.begin(9600); Serial.begin(9600);
// EncoderInit();//Initialize the module
// nanti ini harus dihilangkan // while (!Serial) {
// ; // }
lcd.init(); // initialize the lcd
pinMode(pushButton, INPUT); pinMode(ledRed, OUTPUT); pinMode(ledGreen, OUTPUT); pinMode(LFkiri, INPUT); pinMode(LFkanan, INPUT); Wire.begin(); delay(2000);
TwiSend("\\:v 255\r\n"); // set the volume, from 0 (minimum)-255 (maximum)
int i;
for(i=4;i<=7;i++) //set pin 4,5,6,7 to output mode pinMode(i, OUTPUT);
// Print a message to the LCD. lcd.backlight(); lcd.print("Hello, MRT"); nfc.begin(); myservo1.attach(9); myservo1.write(0); } // Local Variable long lastPlayed = 0; int durasiMP3 = 5000; boolean mp3Played = false; boolean awal = true;
boolean engineOn = false; int stationNum = 0; boolean ayoMaju = false;
void loop() { // cek data Xbee
if (Serial1.available()) { // baca datanya
char dataMasuk = Serial1.read(); if (dataMasuk == 'm') { ayoMaju = true; //engineOn = false; digitalWrite(ledRed, HIGH); digitalWrite(ledGreen, LOW); } else if (dataMasuk == 's') { stop(); ayoMaju = false; engineOn = false; digitalWrite(ledRed, LOW); digitalWrite(ledGreen, HIGH); } }
// (JIKA POSISI MAJU : optional. Lewat untuk testing) // Baca ID RFID
// Jika terdetek ID dalam list : // 1. maka berhenti
// 2. Bunyikan MP3 berhenti di stasiun // 3. Buka pintu
// 4. Lampu Merah OFF, Green ON // 5. Kirim sinyal ke Xbee
// Jalankan lagi MRT
// - Ketika pushbutton di tekan
// - ketika delay > durasiTunggu (setelah berhenti) // - Atau ada perintah dari Xbee
// 1. Bunyikan MP3 pintu ditutup // 2. Tutup Pintu
// 3. Lampu Merah ON, Green OFF
// Bunyikan MP3 (nantinya berdasar jarak saja)
if (mp3Played) {
if ((millis() - lastPlayed) > durasiMP3) { Serial.println("mp3 off");
TwiSend("\\:p\r\n"); mp3Played = false; }
if (engineOn) { //followLine();
if (nfc.tagPresent()) { NfcTag tag = nfc.read();
String idKey = tag.getUidString(); Serial.println(idKey);
boolean stationOK = false; // Cek di daftar
for (int i=0; i<6; i++) { if (idKey == listId[i]) {
Serial.print("Ini berhenti di stasiun ke-"); stationNum = i; Serial.println(i+1); stationOK = true; break; } } if (stationOK) { Serial.println("mp3 play");
TwiSend("\\:n\r\n"); // 3. Buka pintu lcd.clear(); lcd.setCursor(0,0); lcd.print(" MRT"); lcd.setCursor(0,1); lcd.print("Stop STATION : "); lcd.print(stationName[stationNum]);
// kirim via xbee
Serial1.print(stationName[stationNum]); delay(100);
// 1. maka berhenti
// jangan langsung berhenti, supaya kartunya tidak terbaca ketika nanti maju lagi
delay(500); stop();
//delay(5000); delay(durasiMP3);
Serial.println("mp3 stop"); TwiSend("\\:p\r\n"); delay(2500);
// 4. Lampu Merah OFF, Green ON Serial.println("Lampu : HIJAU"); digitalWrite(ledRed, LOW); digitalWrite(ledGreen, HIGH); lcd.clear(); lcd.setCursor(0,0); lcd.print(" MRT"); lcd.setCursor(0,1); lcd.print("Pintu Dibuka");
// 2. Bunyikan MP3 berhenti di stasiun Serial.println("mp3 play"); TwiSend("\\:n\r\n"); // 3. Buka pintu //delay(5000); delay(durasiMP3); Serial.println("mp3 stop");
TwiSend("\\:p\r\n"); delay(2500); // Tutup Pintu Serial.println("Pintu : OPEN"); bukaPintu();
// 5. Kirim sinyal ke Xbee
Serial.println("Nunggu 10 detik"); delay(10000); ayoMaju = true; engineOn = false; } } }
int tombol = digitalRead(pushButton); delay(50);
//Serial.println(tombol);
lcd.clear(); lcd.setCursor(0,0); lcd.print(" MRT"); lcd.setCursor(0,1); lcd.print("Pintu Ditutup"); // Lampu Merah Serial.println("Lampu : MERAH"); digitalWrite(ledRed, HIGH); digitalWrite(ledGreen, LOW);
// Bunyikan MP3 pintu akan ditutup Serial.println("mp3 play"); if (awal) { TwiSend("\\:s\r\n"); awal = false; } else TwiSend("\\:n\r\n"); // Delay //delay(5000); delay(durasiMP3);
Serial.println("mp3 stop"); TwiSend("\\:p\r\n"); delay(2500); // Tutup Pintu Serial.println("Pintu : CLOSED"); tutupPintu(); // Jalankan Motor maju(); //followLine(); engineOn = true; lcd.clear(); lcd.setCursor(0,0); lcd.print(" MRT"); lcd.setCursor(0,1); lcd.print("Next STATION : "); if (stationNum == 5) stationNum = -1; lcd.print(stationName[stationNum+1]);
// kirim via xbee
delay(100); Serial.println("mp3 play"); TwiSend("\\:n\r\n"); lastPlayed = millis(); mp3Played = true; ayoMaju = false; } //else tutupPintu(); //delay(300); } void stop() { motorKanan(0,false); motorKiri(0,false); }
// Ini sekarang bergantung dengan sensor // gak selalu dua-dua motornya maju
void followLine() {
// KIRI KANAN ACTION // Putih Putih LURUS
// Putih Hitam BELOK KANAN // Hitam Putih BELOK KIRI // Hitam Hitam --
byte sensorKiri = digitalRead(LFkiri); byte sensorKanan = digitalRead(LFkanan);
if ( (sensorKiri == PUTIH) && (sensorKanan == PUTIH) ) { maju();
}
else if ( (sensorKiri == PUTIH) && (sensorKanan == HITAM) ) { belokKanan();
}
else if ( (sensorKiri == HITAM) && (sensorKanan == PUTIH) ) { belokKiri();
} else { stop(); }
} void maju() { motorKanan(20,true); motorKiri(20,true); } void belokKanan() { motorKanan(0,true); motorKiri(20,true); } void belokKiri() { motorKanan(20,true); motorKiri(0,true); } void tutupPintu() {
for (int i=0; i<=90; i++) { myservo1.write(90); delay(30);
}
// myservo2.write(0); }
void bukaPintu() {
for (int i=90; i>=0; i--) { myservo1.write(0); delay(30); } // myservo2.write(90); } void cekJarak() {
int Lstate = digitalRead(encoder0pinA);
if ((encoder0PinALast == LOW) && Lstate == HIGH) { Serial.println("ini dia"); } encoder0PinALast = Lstate; counterJarak++; }
3.2. Perancangan Sistem Monitoring Simulasi Otomatisasi Mass Rapid Transit (MRT) dengan menggunakan PC dengan software Visual Basic dan Flash.
3.2.1. Mengapa Arduino
Pada penelitian ini digunakan Arduino Uno R3 sebagai mikroprosessor. Dipilihnya Arduino Uno R3 pun tak lepas dari beberapa pertimbangan, yaitu :
Ringkas
Di dalam board Arduino Uno R3 sudah terdiri dari mikroprosessor utama ATMEGA8, mikroprosessor pengisi program ATMEGA8U2, USB-TTL converter, Interkoneksi yang mudah dengan Header, Pin Assignment yang mudah untuk Input, Output maupun Softserial, Voltage Regulator protector, Analog/Digital Converter, Pulse Width Modulation (PWM), hardware Serial yang terkoneksi dengan port USB dan tombol reset.
Dukungan Shield Tambahan yang kompatibel.
Terdapat berbagai modul dan shield tambahan yang dapat digunakan untuk membangun suatu proyek dari berbagai vendor, misalnya digunakannya GPRS Shield V2.0 dari Seedstudio pada proyek ini. Selain itu pula terdapat shield-shield yang lain seperti Ethernet Shield, Wifi Shield, RF Shield, Relay Shield, L298 Motor Shield, MP3 player shield, Grove base shield, SD card shield, dan masih banyak lainnya.
Dukungan Software
Board Arduino didukung oleh software yang dikembangkan oleh Arduino sendiri, yaitu Sketch. Sketch ini dapat dijalankan dengan system operasi Linux, Windows maupun Machintos. Pada saat penelitian, software Arduino Sketch sudah sampai pada versi 1.5.8 (beta) dan dapat diperoleh secara gratis.
Dukungan tutorial
Banyak sumber turorial yang dapat dijadikan referensi di internet. Sayang sekali untuk Indonesia belum banyak memiliki buku-buku yang berisi program-program Arduino.
Terpercaya
3.2.2. Blok Diagram
Gambar 3.7. Blok Diagram Alat monitoring Simulasi MRT
Pada Blok diagram Gambar 3.7. diperlihatkan bahwa Visual Basic mengirim data ke Adobe Flash kemudian meneruskannya ke Arduino Uno Board dan menunggu komunikasi dari Xbee Shield yang tersambung ke Arduino Board melalui perantaraan Expansion Board. Setelah ada komunikasi antara Xbee Shield antara Xbee Shield yang ada pada modul coordinator dan Xbee Shield yang ada pada modul MRT (End Device), Visual Basic menerima data dari Arduino Leonardo tentang kondisi yang diinginkan dari modul MRT (End Device). Pada saat ini terjadi komunikasi dua arah antara modul MRT (End Device) dengan software Visual Basic sehingga Visual Basic dapat menampilkan data dan mengendalikan kondisi yang
diinginkan dari modul MRT (End Device).
Visual
Basic Adobe Flash Arduino Uno
IO Expansion Shield Xbee Shield Xbee Shield pada MRT modul Arduino Leonardo
3.2.3. Skema Rangkaian
Pada Gambar 3.8. Skema Rangkaian adalah skema koneksi untuk sistem ini. Dapat dijelaskan dengan pembagian sebagai berikut:
Arduino Uno
Arduino Uno R3 ini adalah PCB yang dibeli dalam keadaan jadi. Pada Arduino Uno R3 ini terdapat Mikrokontroller yang mengendalikan proses monitoring dan kendali.
PC
Personal Computer dapat berupa laptop ataupun desktop yang mempunyai program Visual Basic dan Flash Player. Port yang digunakan adalah port USB.
Kabel USB
Kabel USB digunakan untuk menghubungkan PC dan perangkat coordinator. IO Expansion Shield
IO Expansion Shield berfungsi menghubungkan Arduino Uno dengan Xbee Shield
Xbee Shield
Xbee Shield sebagai sarana komunikasi WPAN antara PC dengan modul MRT (End Device).
3.2.4. Cara Kerja Sistem Monitoring MRT Mengaktifkan Alat Monitoring
Pertama kali kita menghidupkan PC kemudian kita mennyambungkan perangkat coordinator ke port USB. Setelah alat terpasang barulah kita mengaktifkan program Visual Basic. Setelah Program aktif lalu tekan F5 untuk menjalankan program. Apabila tampilan Flash muncul artinya program dalam keadaan stand by menunggu koneksi dari modul MRT (End Device).
Modul MRT (End Device) dihidupkan
Pada saat modul MRT (End Device) dihidupkan maka Xbee Shield pada perangkat coordinator akan terhubung dengan Xbee Shield yang ada pada modul MRT (End Device).
Modul MRT (End Device) berjalan
Selama modul MRT (End Device) berjalan komunikasi antar Xbee Shield terus berlangsung sehingga PC dapat mengetahui dimana lokasi MRT dan kecepatannya berdasarkan data yang dikirimkan melalui Xbee Shield yang ada pada modul MRT (End Device).
Tombol Tampilan PC Diaktifkan
Pada saat tombol pada tampilan PC diaktifkan maka Xbee Shield yang ada pada perangkat coordinator akan mengirim perintah ke Xbee Shield pada modul MRT (End Device) sehingga modul MRT (End Device) dikendalikan secara remote melalui PC.
3.2.5 .Flow Chart Program
3.2.6. Script
3.2.6.1.Skrip Arduino
Gambar 3.10 script Arduino MRT Control
SoftwareSerial Serial1(2,3); void setup() { Serial.begin(9600); Serial1.begin(9600); } void loop() { if (Serial.available()) { char msg = Serial.read(); Serial1.print(msg); delay(50); } if (Serial1.available()) { char msg = Serial1.read(); Serial.print(msg); delay(50); } }
3.2.6.2.Skrip Visual Basic
Gambar 3.11. Tampilan Visual Basic Private WithEvents ShockwaveFlash1 As ShockwaveFlash Private Sub Command1_Click()
MSComm1.PortOpen = False End
End Sub
Private Sub Form_Load() Form1.ScaleMode = 2
Set ShockwaveFlash1 =
Form1.Controls.Add("ShockwaveFlash.ShockwaveFlash", "ShockwaveFlash1")
ShockwaveFlash1.Movie = "C:\Users\Siang Widjaja\Desktop\Software TA\UPDATE MRT\MRT_VB.swf"
ShockwaveFlash1.AllowFullScreen = True ShockwaveFlash1.Visible = True
'ShockwaveFlash1.Left = 0 ShockwaveFlash1.Top = 0
ShockwaveFlash1.Width = 1024 ShockwaveFlash1.Height = 580 ShockwaveFlash1.Play MSComm1.RThreshold = 1 MSComm1.InputLen = 1 MSComm1.Settings = "9600,n,8,1" MSComm1.CommPort = 2 MSComm1.PortOpen = True MSComm1.DTREnable = False End Sub
Private Sub Form_Unload(Cancel As Integer) MSComm1.PortOpen = False
End Sub
Private Sub MSComm1_OnComm()
' If MSComm1.CommEvent = comEvReceive Then Label2.Caption = MSComm1.Input
Select Case (Label2.Caption) Case "0"
ShockwaveFlash1.SetVariable "statusMRT", "Menuju Stasiun A" Case "A"
ShockwaveFlash1.SetVariable "statusMRT", "Berhenti di Stasiun A" Case "1"
ShockwaveFlash1.SetVariable "statusMRT", "Menuju Stasiun B" Case "B"
ShockwaveFlash1.SetVariable "statusMRT", "Berhenti di Stasiun B" Case "2"
ShockwaveFlash1.SetVariable "statusMRT", "Menuju Stasiun C" Case "C"
ShockwaveFlash1.SetVariable "statusMRT", "Berhenti di Stasiun C" Case "3"
ShockwaveFlash1.SetVariable "statusMRT", "Menuju Stasiun D" Case "D"
ShockwaveFlash1.SetVariable "statusMRT", "Berhenti di Stasiun D" Case "4"
ShockwaveFlash1.SetVariable "statusMRT", "Menuju Stasiun E" Case "E"
ShockwaveFlash1.SetVariable "statusMRT", "Berhenti di Stasiun E" Case "5"
ShockwaveFlash1.SetVariable "statusMRT", "Menuju Stasiun F" Case "F"
ShockwaveFlash1.SetVariable "statusMRT", "Berhenti di Stasiun F" Case "O" ShockwaveFlash1.SetVariable "speedMRT", "0" Case "S" ShockwaveFlash1.SetVariable "speedMRT", "100" Case "M" ShockwaveFlash1.SetVariable "speedMRT", "150" Case "H" ShockwaveFlash1.SetVariable "speedMRT", "200" End Select ' End If End Sub
Private Sub ShockwaveFlash1_FSCommand(ByVal command As String, ByVal args As String)
label1.Caption = args
If label1.Caption = "maju" Then MSComm1.Output = "m" Else
If label1.Caption = "stop" Then MSComm1.Output = "s" End If
End If End Sub
Private Sub Text1_Change() Label2.Caption = Text1.Text Select Case (Label2.Caption) Case "0"
ShockwaveFlash1.SetVariable "statusMRT", "Menuju Stasiun A" Case "A"
ShockwaveFlash1.SetVariable "statusMRT", "Berhenti di Stasiun A" Case "1"
ShockwaveFlash1.SetVariable "statusMRT", "Menuju Stasiun B" Case "B"
ShockwaveFlash1.SetVariable "statusMRT", "Berhenti di Stasiun B" Case "2"
ShockwaveFlash1.SetVariable "statusMRT", "Menuju Stasiun C" Case "C"
ShockwaveFlash1.SetVariable "statusMRT", "Berhenti di Stasiun C" Case "3"
ShockwaveFlash1.SetVariable "statusMRT", "Menuju Stasiun D" Case "D"
ShockwaveFlash1.SetVariable "statusMRT", "Berhenti di Stasiun D" Case "4"
ShockwaveFlash1.SetVariable "statusMRT", "Menuju Stasiun E" Case "E"
ShockwaveFlash1.SetVariable "statusMRT", "Berhenti di Stasiun E" Case "5"
ShockwaveFlash1.SetVariable "statusMRT", "Menuju Stasiun F" Case "F"
ShockwaveFlash1.SetVariable "statusMRT", "Berhenti di Stasiun F" Case "O" ShockwaveFlash1.SetVariable "speedMRT", "0" Case "S" ShockwaveFlash1.SetVariable "speedMRT", "100" Case "M" ShockwaveFlash1.SetVariable "speedMRT", "150" Case "H" ShockwaveFlash1.SetVariable "speedMRT", "200" End Select End Sub
3.2.7.Tampilan Monitor
Gambar 3.12. Tampilan Monitor Dapat kita lihat disini tampilan yang ada di monitor. Fungsi monitor terdiri dari:
Lokasi MRT Status MRT Kecepatan MRT
Fungsi dari kendali terdiri dari: Maju
Stop Exit