Lampiran 1
Kode Program Untuk Perangkat Arduino
#include <Wire.h>
#include <Adafruit_BMP085.h>
Adafruit_BMP085 tinggi; // create a BMP085 object char input;
void setup() {
Serial.begin(9600); Wire.begin(); tinggi.begin(); }
void loop() {
input = Serial.read(); switch(input) {
case 'R': // R is sent from Scilab to ask whether Radio is ready or not Serial.println("Ready");
break;
case 'P': // P is sent from Scilab to command Radio start sending data Serial.println(tinggi.readAltitude());
Lampiran 2
Kode Program Untuk Scilab
/////////////////////////////////////////////////////////////////////////////// // CREATE A WINDOW AND ITS COMPONENTS /////////////////////////////////////////////////////////////////////////////// clear;
gui = createWindow(); gui.axes_size = [770480]; gui.figure_name = "Skripsi"; gui.backgroundcolor = [111]; gui.figure_position = [32080]; gui.resize = "off";
handles.gui = 1;
/////////////////////////////////////////////////////////////////////////////// // Connect Button
pbConnect = uicontrol(gui, 'Style', 'pushbutton', 'Units', 'points', ... 'position', [202807020], 'String', 'Connect', ... 'HorizontalAlignment', 'center', 'Callback', 'connect');
// Disconnect Button
pbDisconnect = uicontrol(gui, 'Style', 'pushbutton', 'Units', 'points', ... 'position', [202407020], 'String', 'Disconnect', ... 'HorizontalAlignment', 'center', 'Callback', 'disconnect');
// Plotting Button
pbPlot = uicontrol(gui, 'Style', 'pushbutton', 'Units', 'points', ... 'position', [202007020], 'String', 'Plot', ...
'HorizontalAlignment', 'center', 'Callback', 'dataPlot');
// Stop the Plotting Button
pbStop = uicontrol(gui, 'Style', 'pushbutton', 'Units', 'points', ... 'position', [201607020], 'String', 'Stop Plotting', ... 'HorizontalAlignment', 'center', 'Callback', 'stop');
// Load Data Button
pbCallLoad = uicontrol(gui, 'Style', 'pushbutton', 'Units', 'points', ... 'position', [201207020], 'String', 'Load', ...
'HorizontalAlignment', 'center', 'Callback', 'callDataLoad');
// Save and Exit Button
pbCallSaveandExit = uicontrol(gui, 'Style', 'pushbutton', 'Units', 'points', ... 'position', [03487020], 'String', 'Save & Exit', ...
'HorizontalAlignment', 'center', ... 'Callback', 'callSaveExit');
/////////////////////////////////////////////////////////////////////////////// // A place for Axes
handles.frame4axes = uicontrol(gui, 'Style', 'frame', 'Position', [150120450360], ... 'HorizontalAlignment', 'center', ...
'Background', [111]);
// A place for Status Text
handles.frame4status = uicontrol(gui, 'Relief', 'solid', ... 'Style', 'frame', 'Position', [403069580], ... 'HorizontalAlignment', 'center', ...
'Background', [111]);
// Title for the place of Status Text
handles.frame4statusTitle = uicontrol(gui, 'Style', 'text', 'String', 'Status', ... 'Position', [601005020], ...
'HorizontalAlignment', 'center', ... 'Background', [111]);
// Status Text
handles.txtStatus = uicontrol(gui,'Style', 'text', 'Position', [504067560], ... 'FontSize', [16], 'FontWeight', 'bold', ...
'HorizontalAlignment', 'left', ... 'Background', [111]); set(handles.txtStatus,"String","Welcome");
/////////////////////////////////////////////////////////////////////////////// // A place for Height Variable each second
parameter = [" ""Height"];
awalTabel1 = ["detik 1""detik 2""detik 3""detik 4""detik 5""detik 6", ... "detik 7""detik 8""detik 9""detik 10"]';
awalTabel2 = [" "" "" "" "" "" "" "" "" "" "]'; table = [parameter; [ awalTabel1 awalTabel2 ]];
handles.tableTinggi = uicontrol(gui, 'Style', 'table', 'String', table, ... 'Position', [600163150187]);
/////////////////////////////////////////////////////////////////////////////// // What is the height now?
handles.txtHeight = uicontrol(gui,'Style', 'text', 'Position', [6004206020], ... 'FontSize', [12], 'FontWeight', 'bold', ...
'HorizontalAlignment', 'left', ... 'Background', [111]); set(handles.txtHeight,"String","Height :");
handles.txtHeightVar = uicontrol(gui,'Style', 'text', 'Position', [6604205020], ... 'FontSize', [12], 'FontWeight', 'bold', ...
'HorizontalAlignment', 'center', ... 'Background', [111]);
handles.txtMeter = uicontrol(gui,'Style', 'text', 'Position', [7104204020], ... 'FontSize', [12], 'FontWeight', 'bold', ...
'HorizontalAlignment', 'right', ... 'Background', [111]);
set(handles.txtMeter,"String","Meter");
/////////////////////////////////////////////////////////////////////////////// // Creating an Axes
handles.axes1 = newaxes(handles.frame4axes);
// Axes1 title and axis
handles.axes1.title.text = "Height"; handles.axes1.title.font_size = 4;
// Axes1 X label
handles.axes1.x_label.text = "Time (Second)"; handles.axes1.x_label.font_size = 2;
// Axes1 Y label
handles.axes1.y_label.text = "Height (Meter)"; handles.axes1.y_label.font_size = 2;
// Initialization
global bthpanjangtinggiGUIstatusPLOTstatusSAVEstatusFilePathk
GUIstatus = 0; PLOTstatus = 0; SAVEstatus = 0; k = 0;
panjang = 41; // terdapat 41 sampel data ketinggian
b = zeros(1,panjang); // membuat tempat 1 x 41 untuk data ketinggian tinggi = zeros(1,10); // variabel untuk data ketinggian per detik t = 0:0.25:10; // banyaknya waktu sampel
h = 150; // tinggi pada axis Y
FilePath = 'C:\Users\ASUS\Desktop\DATA\Scilab files\SOD files\';
/////////////////////////////////////////////////////////////////////////////// // CALLBACK FOR EACH BUTTON
///////////////////////////////////////////////////////////////////////////////
// Connect to Arduino through Radio function connect
global radioGUIstatus
// Koneksi antara penerima dan pengirim belum terhubung (GUIstatus = 0) if GUIstatus == 0then
radio = openserial(6, "9600,n,8,1"); sleep(2000);
writeserial(radio,"R"); sleep(1000);
set(handles.txtStatus,"String",readserial(radio)); readserial(radio);
// Menutup koneksi jika penerima dan pengirim masih terhubung (GUIstatus = 1) if GUIstatus == 1then
closeserial(radio);
function dataPlot
global abtzkpanjangheighttinggiradioGUIstatusPLOTstatusSAVEstatus
awalTabel2 = [" "" "" "" "" "" "" "" "" "" "]'; table = [parameter; [ awalTabel1 awalTabel2 ]];
set(handles.tableTinggi,"String",table); // Menghapus tabel delete(handles.axes1.children); // Menghapus grafik
// Membuat tombol selain tombol "Stop Plotting" dalam keadaan OFF set(pbConnect,'Enable','Off');
set(handles.txtStatus,"String","Processing and Plotting Data..."); for z = 1:panjang set(handles.tableTinggi,"String",table);
// Interrupt and stop the plot function stop
global kradioPLOTstatusSAVEstatus
global FilePathFileNameH1FileNameH0FullPathguiLoad
set(FileNameH1,"String","H1 File Name...");
FileNameH0 = uicontrol(guiLoad,'Style', 'edit', ... 'Position', [31612320], ...
'FontSize', [10], 'HorizontalAlignment', 'left'); set(FileNameH0,"String","H0 File Name...");
global SAVEstatusFilePathFileNameH1FileNameH0FullPathguiLoad
SAVEstatus = 0;
delete(handles.axes1.children);
//Memuat data b, t, dan tinggi untuk H0 dengan dari file LoadFileNameH0 LoadFileNameH0 = get(FileNameH0,"String");
FullPath = strcat([FilePath,LoadFileNameH0]);
// Memuat data b, t, dan tinggi FileName dengan path FullPath load(FullPath,'b','t','tinggi');
H0Data = b; H0 = tinggi';
//Memuat data b, t, dan tinggi untuk H1 dengan dari file LoadFileNameH1 LoadFileNameH1 = get(FileNameH1,"String");
FullPath = strcat([FilePath,LoadFileNameH1]);
load(FullPath,'b','t','tinggi');
table = [parameter; [ awalTabel1 awalTabel2 awalTabel3 ]]; set(handles.tableTinggi,"String",table);
set(handles.txtStatus,"String","Loaded."); close(guiLoad);
endfunction
// Save data and exit function callSaveExit
global SAVEstatusFileNameguiSave
if SAVEstatus == 1then
global bttinggiFilePathFileNameFullPathguiSave
// Menyimpan variabel b, t, dan tinggi ke FullPath // Disimpan dengan nama SaveFileName
SaveFileName = get(FileName,"String"); FullPath = strcat([FilePath,SaveFileName]); save(FullPath,'b','t','tinggi');
close(guiSave);
set(handles.txtStatus,"String","Saving..."); sleep(1000);