MATLAB

Matlab GUI calculator

Shin_jisoo 2020. 10. 28. 20:42
728x90

MATLAB을 실행화면

MATLAB을 실행시켜 줍니다.

 

MATLAB 왼쪽 상단

홈 → 새로 만들기 → 프로젝트 → 빈프로젝트

 

새 프로젝트

프로젝트 이름을 적어준 후 '만들기' 를 선택합니다.

 

가운데 아래쪽

명령 창에 guide 를 입력해줍니다.

 

GUIDE 빠른 시작

'새 GUI 만들기' 에서 첫 번째에 있는 'Blank GUI(Default)' 를 선택합니다.

 

GUIDE

파일 → 기본 설정

 

기본 설정

기본설정 → GUIDE → 구성요소 팔레트에 이름 표시

 

편집가능 텍스트

편집가능 텍스트를 선택하여 만들어줍니다.

계산식과 결과 값을 보여줄 LCD 입니다.

 

LCD_editText 인스펙터

'HorizontalAlignment' 를 'right' 로 설정해줍니다.

 

LCD_editText 인스펙터

'편집가능 텍스트'를 더블클릭하여 '인스펙터'를 열어줍니다.

'String' 을 '0' 으로 변경하고

'Tag' 를 'LCD_editText' 로 변경합니다.

Tag 는 본인이 원하는대로 설정 가능하지만 LCD의 이름은 나중에도 자주 쓰이니 외워두는 것이 좋습니다.

 

누름 버튼

'누름 버튼'을 선택하여 만들어줍니다.

 

d_ac 인스펙터

'FontSize' 를 '15' 로 설정해줍니다.

 

d_ac 인스펙터

'String' 을 'AC' 로 설정해주고

'Tag' 를 'd_ac' 로 설정해줍니다.

 

ctrl+c , ctrl+v

'AC' 를 Ctrl+C , Ctrl+V 를 하여 5X4 배열을 만들어줍니다.

 

String, Tag 변경

(AC , d_ac) (( , d_lb) () , d_rb) (+ , d_add)

(1 , d1) (2 , d2) (3 , d3) (- , d_sub)

(4 , d4) (5 , d5) (6 , d6) (X , d_mult)

(7 , d7) (8 , d8) (9 , d9) (/ , d_div)

(. , d_dot) (0 , d0) (del , d_del) (= , d_eq)

로 String 과 Tag 를 설정해줍니다.

 

객체 정렬

정렬할 버튼들을 마우스로 Drag 하여 선택한 후

세로 줄(열)을 맞춰줄 것 입니다.

왼쪽에서 10번째 '객체 정렬' 을 선택해줍니다.

 

열 정렬

저 아이콘 두개를 선택한 후 '확인'을 누르면 정렬됩니다.

 

열 정렬

나머지도 반복해줍니다.

 

행 정렬

이번에는 행 정렬을 해줄 것입니다.

 

행 정렬

저 아이콘 두개를 선택한 후 '확인'을 누르면 정렬됩니다.

 

행 정렬

나머지도 반복해줍니다.

 

bold 만들기

Bold checkbox 를 만들기 위해 체크박스를 클릭하여 만들어줍니다.

 

bold checkbox 인스펙터

String 을 bold 로 설정해주고

Tag 을 bold_checkbox 로 설정해줍니다.

 

버튼 그룹

Radio button 을 만들기위해 버튼 그룹을 먼저 만들어줍니다.

 

라디오 버튼

라디오 버튼을 선택하여 버튼 그룹 안에 세개를 만들어 줍니다.

아까 했던 열 정렬 방법을 사용하여 정렬해주었습니다.

 

Radio button 인스펙터

String 은 08 설정해주고

Tag 은 radiobutton_08 로 설정해주었습니다.

 

radio button

나머지 라디오 버튼도

String : 16 , Tag : radiobutton_16

String : 20 , Tag : radiobutton_20

으로 설정해줍니다.

 

팝업 메뉴

팝업 메뉴를 선택하여 만들어줍니다.

 

팝업메뉴 String 지정

팝업메뉴의 인스펙터에 들어가 String 에 있는 저 버튼을 클릭한 후 08 enter 16 enter 20 enter 24 로 설정해줍니다.

 

슬라이더

슬라이더를 생성해줍니다.

 

슬라이더 인스펙터

슬라이더의 Max 는 100 으로 설정해주고

Min 은 0 으로 설정해줍니다.

 

 

슬라이더 LCD

편집가능 텍스트를 만들어줍니다.

슬라이더의 값을 보여줄 LCD 입니다.

 

Slider 인스펙터

String 은 없애주고

Tag 는 LCD_slider 로 설정해줍니다.

 

실행

이제 guide 에서 할 일은 끝났습니다.

제일 오른쪽에 있는 초록색 실행버튼을 눌러줍니다.

 

 

 

 


 

 

 

 

 

함수 만들기

편집기 → 새로 만들기 → 함수 선택합니다.

 

myNumber 소스코드

function myNumber(hObject,handles,value)
cv=get(handles.LCD_editText,'String'); %cv 변수에 LCD_editText 값 가져오기
if(str2num(cv)==0) %cv값을 str2num 하여 0이면(str2num 은 문자형 배열, String 형을 숫자형 배열로 변환하는 것)
    cv=[]; %cv는 공백
end %if문 끝내기
nv=[cv,value]; %nv변수에 cv 값 넣어주기
set(handles.LCD_editText,'String',nv); %nv 값을 LCD_editText에 입력하기
end%함수 끝내기

 

myNumber 함수 저장하기

편집기 → 저장 선택하기

 

다른 이름으로 저장할 파일 선택

파일 이름을 꼭 myNumber로 저장해주세요

 

 

 

 

 


 

 

 

 

 

d1_Callback

myNumber(hObject,handles,'1'); %myNumber에 값1을 넣어 호출

 

2~0까지 반복합니다.

 

d2_Callback

myNumber(hObject,handles,'2');

 

d3_Callback

myNumber(hObject,handles,'3');

 

d4_Callback

myNumber(hObject,handles,'4');

 

d5_Callback

myNumber(hObject,handles,'5');

 

d6_Callback

myNumber(hObject,handles,'6');

 

d7_Callback

myNumber(hObject,handles,'7');

 

d8_Callback

myNumber(hObject,handles,'8');

 

d9_Callback

myNumber(hObject,handles,'9');

 

d0_Callback

myNumber(hObject,handles,'0');

 

 

 

 


 

 

 

 

사칙연산도 똑같이 구현해줍니다.

 

d_add_Callback

myNumber(hObject,handles,'+');

 

d_sub_Callback

myNumber(hObject,handles,'-');

 

d_mult_Callback

myNumber(hObject,handles,'*');

 

d_div_Callback

myNumber(hObject,handles,'/');

 

 


 

 

d_eq_Callback

cv=get(handles.LCD_editText,'String'); %cv변수에 LCD_editText 값 가져오기
total=eval(cv); %total 변수는 cv 값을 eval 한 것(eval은 수식을 커맨드 창에 그대로 입력하여 나온 결과값을 보여준다)
set(handles.LCD_editText,'String',[cv,'=',num2str(total)]); %LCD_editText 창에 cv=num2str(total) 값을 입력한다

                                                                                           %num2str은 숫자를 문자형으로 변환한다

 

d_dot_Callback

myNumber(hObject,handles,'.');

 

d_lb_Callback

myNumber(hObject,handles,'(');

 

d_rb_Callback

myNumber(hObject,handles,')');

 

d_ac_Callback

set(handles.LCD_editText,'String','0');%LCD_editText 에 있는 문자를 0으로 입력하기

 

d_del_Callback

cv=get(handles.LCD_editText,'String');%cv 변수에 LCD_editText 값을 가져오기
if ~isempty(cv)%cv값이 비어있지 않으면
    nv=cv(1:end-1);%nv 변수에 cv의 1부터 end-1 까지 저장
    if isempty(cv)%cv 값이 비어있으면
        set(handles.LCD_editText,'String','0');%LCD_editText 값 0으로 입력
    else%아니면
        set(handles.LCD_editText,'String',nv);%nv값 입력
    end%if문 끝내기
end%함수 끝내기

 


 

popupmenu1_Callback

v=get(handles.popupmenu1,'Value') %v 변수에 popupmenu1의 값을 가져오기
switch v %switch 문 이용하여
    case 1 %첫 번째 case 경우
        set(handles.LCD_editText,'FontSize',8); %LCD_editText 의 FontSize를 8로 입력하기
    case 2
        set(handles.LCD_editText,'FontSize',16);
    case 3
        set(handles.LCD_editText,'FontSize',20);
    case 4
        set(handles.LCD_editText,'FontSize',24);
end %if 문 끝내기

 


bold_checkbox_Callback

checkboxStatus=get(handles.bold_checkbox,'Value'); %checkboxStatus에 bold_checkbox의 값 가져오기
if(checkboxStatus) %checkboxStatus가 1이면(즉, 선택되면)
    set(handles.LCD_editText,'FontWeigh','bold'); %LCD_editText의 FontWeigh가 bold
else %아니면(즉, 선택이 되지 않으면)
    set(handles.LCD_editText,'FontWeigh','normal'); %LCD_editText의 FontWeigt가 normal
end %if문 끝내기

 


 

LCD_slider_Callback

sliderValue=get(handles.slider_editText,'String'); %sliderValue 변수에 slider_editText 값 가져오기
sliderValue=str2num(sliderValue); %sliderValue 변수에 str2num(sliderValue) 가져오기
if(isempty(sliderValue)||sliderValue<0||sliderValue>100) %sliderValue 값이 비어있거나||0보다 작거나||100보다 크면
    set(handles.slider1,'Value',0); %slider1의 값은 0으로 입력하기
    set(handles.LCD_slider,'String','0'); %LCD_slider 의 값 0으로 입력하기
else %아니면
    set(handles.slider1,'Value',sliderValue); %slider1의 값에 sliderValue 입력하기
end %if문 끝내기

 

slider1_Callback

sliderValue=get(handles.slider1,'Value'); %sliderValue 변수에 slider1의 값 가져오기

 


 

라디오 버튼 구현하기

버튼 그룹위에서 우클릭 → 콜백 보기 → SelectionChangedFcn 선택하기

 

uibuttongroup1_SelectionChangeFcn

switch get(eventdata.NewValue,'Tag') %Tag 값을 이용하여 switch문 사용
    case 'radiobutton_08' %Tag 값이 radiobutton_08이면
        set(handles.LCD_editText,'FontSize',8); %LCD_editText 의 FontSize 값을 8로 입력하기
    case 'radiobutton_16'
        set(handles.LCD_editText,'FontSize',16);
    case 'radiobutton_20'
        set(handles.LCD_editText,'FontSize',20);
end %if문 끝내기

 

 

 

 


 

 

 

 

 

끝났습니다!

 

실행

실행버튼을 누르면

 

calculator

MATLAB GUI CALCULATOR COMPLETE!

'MATLAB' 카테고리의 다른 글

MATLAB Smulink 사용하여 수식 계산하기(1)  (0) 2020.12.22
MATLAB Simulink Library Browser  (0) 2020.12.07