
Visual Graphical User Interface (GUI) di atas dibuat menggunakan fuzzy logic FIS Mamdani dengan fungsi keanggotaan Gauss. Input yang digunakan adalah suhu dan cahaya sedangkan output berupa kecepatan mesin. Berikut ini adalah diagram alur (flowchart) program yang telah dibuat :

Berdasarkan program dan flowchart yang telah dibuat di atas, maka dapat dijelaskan sebagai berikut :
1. Form 1 (Login)
User harus login terlebih dahulu untuk masuk ke form perhitungan kecepatan mesin.

Dalam program ini username dan password tidak dihubungkan ke database namun di-setting untuk satu user dengan username = “aprilia” dan password = “123”. Password dapat ditampilkan ataupun hidden dengan klik check box. Selanjutnya akan dilakukan pengecekan username dan password, jika terdapat kesalahan maka program akan muncul warning dan user harus melakukan input ulang. Berikut ini tampilan warning yang dirancang :

Jika username dan password telah sesuai maka user dapat klik push button login.
2. Form 2 (Perhitungan Kecepatan Mesin)
Pada perhitungan kecepatan mesin, user hanya perlu menginputkan suhu dan cahaya yang dapat memilih langsung input dengan menggerakkan slider atau secara manual kemudian menekan tombol hitung pada GUI.
- Input parameter secara manual
Sedangkan ketika user melakukan input suhu dan cahaya secara manual, sistem akan melakukan pengecekan nilai input terlebih dahulu apakah input sesuai dengan rules atau tidak. Selanjutnya user harus menekan push button hitung terlebih dahulu untuk menjalankan fuzzy logic kecepatan mesin sehingga hasil fuzzy logic kecepatan mesin akan muncul pada display. Berikut ini adalah tampilan warning ketika user melakukan input suhu dan cahaya diluar rentang yang ditentukan :
- Input parameter menggunakan slider
Ketika user melakukan input data suhu dan cahaya dengan menggeser slider maka hasil fuzzy logic kecepatan mesin akan langsung muncul. Sistem tidak akan melakukan pengecekan nilai input dikarenakan nilai input pada slider sudah di setting sesuai dengan rules yaitu untuk suhu 0-50 0C dan cahaya 0-100 Cd. Selanjutnya hasil fuzzy logic kecepatan mesin akan langsung muncul dan ditampilkan.
Ketika user telah melakukan input data parameter dan hasil fuzzy logic kecepatan mesin telah ditampilkan maka dapat dilanjutkan pada proses berikutnya dengan menekan push button Reset atau Exit. Push button Reset berfungsi untuk menghilangkan data input dan hasil perhitungan. Sedangakan push button Exit berfungsi untuk keluar dari form perhitungan kecepatan mesin dan akan muncul form exit.
3. Form 3 (Exit)
Form exit akan muncul ketika user menekan push button Exit pada form (2) perhitungan kecepatan mesin.

Pada form ini terdapat statement “Are you really want to exit the application?” dan pilihan push button Yes dan No. Push button Yes berfungsi untuk mengakhiri program. Sedangkan Push button No berfungsi untuk kembali ke form sebelumnya yaitu form perhitungan kecepatan mesin.
.
LAMPIRAN SCRIPT GUI
Form 1. Login
function varargout = login(varargin)
gui_Singleton = 1;
gui_State = struct('gui_Name', mfilename, ...
'gui_Singleton', gui_Singleton, ...
'gui_OpeningFcn', @login_OpeningFcn, ...
'gui_OutputFcn', @login_OutputFcn, ...
'gui_LayoutFcn', [] , ...
'gui_Callback', []);
if nargin && ischar(varargin{1})
gui_State.gui_Callback = str2func(varargin{1});
end
if nargout
[varargout{1:nargout}] = gui_mainfcn(gui_State, varargin{:});
else
gui_mainfcn(gui_State, varargin{:});
end
function login_OpeningFcn(hObject, eventdata, handles, varargin)
handles.output = hObject;
guidata(hObject, handles);
function varargout = login_OutputFcn(hObject, eventdata, handles)
varargout{1} = handles.output;
function checkbox4_Callback(hObject, eventdata, handles)
function edit7_Callback(hObject, eventdata, handles)
function edit7_CreateFcn(hObject, eventdata, handles)
if ispc && isequal(get(hObject,'BackgroundColor'), get(0,'defaultUicontrolBackgroundColor'))
set(hObject,'BackgroundColor','white');
end
function edit8_Callback(hObject, eventdata, handles)
function edit8_CreateFcn(hObject, eventdata, handles)
if ispc && isequal(get(hObject,'BackgroundColor'), get(0,'defaultUicontrolBackgroundColor'))
set(hObject,'BackgroundColor','white');
end
function pushbutton4_Callback(hObject, eventdata, handles)
function pushbutton4_Callback(hObject, eventdata, handles)
username = get(handles.edit7,'string');
password = get(handles.edit8,'string');
if strcmp(username,'aprilia') && strcmp(password,'123')
close;
aprilia_mesin_gauss();
else
msgbox('Username / Password yang Anda input salah');
end
Form 2. Perhitungan kecepatan mesin dengan fuzzy logic
function varargout = aprilia_mesin_gauss(varargin)
gui_Singleton = 1;
gui_State = struct('gui_Name', mfilename, ...
'gui_Singleton', gui_Singleton, ...
function varargout = aprilia_mesin_gauss(varargin)
gui_Singleton = 1;
gui_State = struct('gui_Name', mfilename, ...
'gui_Singleton', gui_Singleton, ...
'gui_OpeningFcn', @aprilia_mesin_gauss_OpeningFcn, ...
'gui_OutputFcn', @aprilia_mesin_gauss_OutputFcn, ...
'gui_LayoutFcn', [] , ...
'gui_Callback', []);
if nargin && ischar(varargin{1})
gui_State.gui_Callback = str2func(varargin{1});
end
if nargout
[varargout{1:nargout}] = gui_mainfcn(gui_State, varargin{:});
else
gui_mainfcn(gui_State, varargin{:});
end
function aprilia_mesin_gauss_OpeningFcn(hObject, eventdata, handles, varargin)
handles.output = hObject;
img = imread('STMKG.png'); image(img, 'Parent', handles.axes3)
axis off;
guidata(hObject, handles);
function varargout = aprilia_mesin_gauss_OutputFcn(hObject, eventdata, handles)
varargout{1} = handles.output;
function togglebutton1_Callback(hObject, eventdata, handles)
function togglebutton2_Callback(hObject, eventdata, handles)
function togglebutton3_Callback(hObject, eventdata, handles)
function edit1_Callback(hObject, eventdata, handles)
function edit1_CreateFcn(hObject, eventdata, handles)
if ispc && isequal(get(hObject,'BackgroundColor'), get(0,'defaultUicontrolBackgroundColor'))
set(hObject,'BackgroundColor','white');
end
function edit2_Callback(hObject, eventdata, handles)
function edit2_CreateFcn(hObject, eventdata, handles)
if ispc && isequal(get(hObject,'BackgroundColor'), get(0,'defaultUicontrolBackgroundColor'))
set(hObject,'BackgroundColor','white');
end
function edit3_Callback(hObject, eventdata, handles)
function edit3_CreateFcn(hObject, eventdata, handles)
if ispc && isequal(get(hObject,'BackgroundColor'), get(0,'defaultUicontrolBackgroundColor'))
set(hObject,'BackgroundColor','white');
end
function edit4_Callback(hObject, eventdata, handles)
function edit4_CreateFcn(hObject, eventdata, handles)
if ispc && isequal(get(hObject,'BackgroundColor'), get(0,'defaultUicontrolBackgroundColor'))
set(hObject,'BackgroundColor','white');
end
function edit5_Callback(hObject, eventdata, handles)
function edit5_CreateFcn(hObject, eventdata, handles)
if ispc && isequal(get(hObject,'BackgroundColor'), get(0,'defaultUicontrolBackgroundColor'))
set(hObject,'BackgroundColor','white');
end
function edit6_Callback(hObject, eventdata, handles)
function edit6_CreateFcn(hObject, eventdata, handles)
if ispc && isequal(get(hObject,'BackgroundColor'), get(0,'defaultUicontrolBackgroundColor'))
set(hObject,'BackgroundColor','white');
end
function uipanel2_SizeChangedFcn(hObject, eventdata, handles)
function edit10_Callback(hObject, eventdata, handles)
suhu=str2num(get(handles.edit10, 'String'));
handles.suhu=suhu;
guidata(hObject, handles)
if suhu > 50
msgbox('Suhu tidak boleh lebih dari 50 Celcius','Warning!!!','warn');
else if suhu < 0
msgbox('Suhu tidak boleh kurang dari 0 Celcius','Warning!!!','warn');
return
end
end
function edit10_CreateFcn(hObject, eventdata, handles)
if ispc && isequal(get(hObject,'BackgroundColor'), get(0,'defaultUicontrolBackgroundColor'))
set(hObject,'BackgroundColor','white');
end
function edit11_Callback(hObject, eventdata, handles)
cahaya=str2num(get(handles.edit11, 'String'));
handles.cahaya=cahaya;
guidata(hObject, handles)
if cahaya > 100
msgbox('Cahaya tidak boleh lebih dari 100 Cd','Warning !!!','warn');
else if cahaya < 0
msgbox('Cahaya tidak boleh kurang dari 0 Cd','Warning !!!','warn');
return
end
end
function edit11_CreateFcn(hObject, eventdata, handles)
if ispc && isequal(get(hObject,'BackgroundColor'), get(0,'defaultUicontrolBackgroundColor'))
set(hObject,'BackgroundColor','white');
end
function edit12_Callback(hObject, eventdata, handles)
function edit12_CreateFcn(hObject, eventdata, handles)
if ispc && isequal(get(hObject,'BackgroundColor'), get(0,'defaultUicontrolBackgroundColor'))
set(hObject,'BackgroundColor','white');
end
function slider7_Callback(hObject, eventdata, handles)
slider_suhu = get(hObject,'Value');
slider_suhu_real=slider_suhu*50;
set(handles.edit10, 'string',slider_suhu_real);
if slider_suhu_real >= 36
set(handles.edit18, 'String','PANAS');
else if (28 <= slider_suhu_real) && (slider_suhu_real <=40)
set(handles.edit18, 'String','HANGAT');
else if (21 <= slider_suhu_real) && (slider_suhu_real <=30)
set(handles.edit18, 'String','NORMAL');
else if (11 <= slider_suhu_real) && (slider_suhu_real <=25)
set(handles.edit18, 'String','SEJUK');
else if slider_suhu_real <=15
set(handles.edit18, 'String','DINGIN');
end
end
end
end
end
slider_cahaya_real = get(handles.slider8,'Value');
input=[slider_suhu_real slider_cahaya_real];
fis = readfis('aprilia_mesin_gauss');
out = evalfis(input,fis);
set(handles.edit12, 'string', out);
if out >= 19
set(handles.edit20, 'String','CEPAT');
else if (11 <= out) && (out <=21)
set(handles.edit20, 'String','SEDANG');
else if output <= 15
set(handles.edit20, 'String','LAMBAT');
end
end
end
function slider7_CreateFcn(hObject, eventdata, handles)
if isequal(get(hObject,'BackgroundColor'), get(0,'defaultUicontrolBackgroundColor'))
set(hObject,'BackgroundColor',[.9 .9 .9]);
end
function slider8_Callback(hObject, eventdata, handles)
slider_cahaya = get(hObject,'Value');
slider_cahaya_real=slider_cahaya*100;
set(handles.edit11, 'string', slider_cahaya_real);
if slider_cahaya_real >= 81
set(handles.edit21, 'String','TERANG');
else if (31 <= slider_cahaya_real) && (slider_cahaya_real <=85)
set(handles.edit21, 'String','NORMAL');
else if slider_cahaya_real <= 35
set(handles.edit21, 'String','GELAP');
end
end
end
slider_suhu_real = get(handles.slider7,'Value');
input=[slider_suhu_real slider_cahaya_real];
fis = readfis('aprilia_mesin_gauss');
out = evalfis(input,fis);
set(handles.edit12, 'string', out);
if out >= 19
set(handles.edit20, 'String','CEPAT');
else if (11 <= out) && (out <=21)
set(handles.edit20, 'String','SEDANG');
else if out <= 15
set(handles.edit20, 'String','LAMBAT');
end
end
end
function slider8_CreateFcn(hObject, eventdata, handles)
if isequal(get(hObject,'BackgroundColor'), get(0,'defaultUicontrolBackgroundColor'))
set(hObject,'BackgroundColor',[.9 .9 .9]);
end
function edit18_Callback(hObject, eventdata, handles)
function edit18_CreateFcn(hObject, eventdata, handles)
if ispc && isequal(get(hObject,'BackgroundColor'), get(0,'defaultUicontrolBackgroundColor'))
set(hObject,'BackgroundColor','white');
end
function edit20_Callback(hObject, eventdata, handles)
function edit20_CreateFcn(hObject, eventdata, handles)
if ispc && isequal(get(hObject,'BackgroundColor'), get(0,'defaultUicontrolBackgroundColor'))
set(hObject,'BackgroundColor','white');
end
function edit21_Callback(hObject, eventdata, handles)
function edit21_CreateFcn(hObject, eventdata, handles)
if ispc && isequal(get(hObject,'BackgroundColor'), get(0,'defaultUicontrolBackgroundColor'))
set(hObject,'BackgroundColor','white');
end
function pushbutton3_Callback(hObject, eventdata, handles)
exit();
function pushbutton2_Callback(hObject, eventdata, handles)
set(handles.edit10,'string','')
set(handles.edit11,'string','')
set(handles.edit12,'string','')
set(handles.edit18,'string','')
set(handles.edit21,'string','')
set(handles.edit20,'string','')
set(handles.slider7,'Value',0)
set(handles.slider8,'Value',0)
set(handles.slider9,'Value',0)
guidata(hObject, handles);
function pushbutton1_Callback(hObject, eventdata, handles)
suhu=handles.suhu;
cahaya=handles.cahaya;
fis=readfis('aprilia_mesin_gauss');
output=evalfis([suhu cahaya],fis);
set(handles.edit12, 'string', output);
if suhu >= 36
set(handles.edit18, 'String','PANAS');
else if (28 <= suhu) && (suhu <=40)
set(handles.edit18, 'String','HANGAT');
else if (21 <= suhu) && (suhu <=30)
set(handles.edit18, 'String','NORMAL');
else if (11 <= suhu) && (suhu <=25)
set(handles.edit18, 'String','SEJUK');
else if suhu <=15
set(handles.edit18, 'String','DINGIN');
end
end
end
end
end
if cahaya >= 81
set(handles.edit21, 'String','TERANG');
else if (31 <= cahaya) && (cahaya <=85)
set(handles.edit21, 'String','NORMAL');
else if cahaya <= 35
set(handles.edit21, 'String','GELAP');
end
end
end
if output >= 19
set(handles.edit20, 'String','CEPAT');
else if (11 <= output) && (output <=21)
set(handles.edit20, 'String','SEDANG');
else if output <= 15
set(handles.edit20, 'String','LAMBAT');
end
end
end
Form 3. Exit
function varargout = exit(varargin)
gui_Singleton = 1;
gui_State = struct('gui_Name', mfilename, ...
'gui_Singleton', gui_Singleton, ...
'gui_OpeningFcn', @exit_OpeningFcn, ...
'gui_OutputFcn', @exit_OutputFcn, ...
'gui_LayoutFcn', [] , ...
'gui_Callback', []);
if nargin && ischar(varargin{1})
gui_State.gui_Callback = str2func(varargin{1});
end
if nargout
[varargout{1:nargout}] = gui_mainfcn(gui_State, varargin{:});
else
gui_mainfcn(gui_State, varargin{:});
end
function exit_OpeningFcn(hObject, eventdata, handles, varargin)
handles.output = hObject;
guidata(hObject, handles);
function varargout = exit_OutputFcn(hObject, eventdata, handles)
varargout{1} = handles.output;
function togglebutton1_Callback(hObject, eventdata, handles)
close;
aprilia_mesin_gauss();
close;
function togglebutton2_Callback(hObject, eventdata, handles)
close;
aprilia_mesin_gauss();