MATLAB을 실행시켜 줍니다.
홈 → 새로 만들기 → 프로젝트 → 빈프로젝트
프로젝트 이름을 적어준 후 '만들기' 를 선택합니다.
명령 창에 guide 를 입력해줍니다.
'새 GUI 만들기' 에서 첫 번째에 있는 'Blank GUI(Default)' 를 선택합니다.
파일 → 기본 설정
기본설정 → GUIDE → 구성요소 팔레트에 이름 표시
편집가능 텍스트를 선택하여 만들어줍니다.
계산식과 결과 값을 보여줄 LCD 입니다.
'HorizontalAlignment' 를 'right' 로 설정해줍니다.
'편집가능 텍스트'를 더블클릭하여 '인스펙터'를 열어줍니다.
'String' 을 '0' 으로 변경하고
'Tag' 를 'LCD_editText' 로 변경합니다.
Tag 는 본인이 원하는대로 설정 가능하지만 LCD의 이름은 나중에도 자주 쓰이니 외워두는 것이 좋습니다.
'누름 버튼'을 선택하여 만들어줍니다.
'FontSize' 를 '15' 로 설정해줍니다.
'String' 을 'AC' 로 설정해주고
'Tag' 를 'd_ac' 로 설정해줍니다.
'AC' 를 Ctrl+C , Ctrl+V 를 하여 5X4 배열을 만들어줍니다.
(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 checkbox 를 만들기 위해 체크박스를 클릭하여 만들어줍니다.
String 을 bold 로 설정해주고
Tag 을 bold_checkbox 로 설정해줍니다.
Radio button 을 만들기위해 버튼 그룹을 먼저 만들어줍니다.
라디오 버튼을 선택하여 버튼 그룹 안에 세개를 만들어 줍니다.
아까 했던 열 정렬 방법을 사용하여 정렬해주었습니다.
String 은 08 설정해주고
Tag 은 radiobutton_08 로 설정해주었습니다.
나머지 라디오 버튼도
String : 16 , Tag : radiobutton_16
String : 20 , Tag : radiobutton_20
으로 설정해줍니다.
팝업 메뉴를 선택하여 만들어줍니다.
팝업메뉴의 인스펙터에 들어가 String 에 있는 저 버튼을 클릭한 후 08 enter 16 enter 20 enter 24 로 설정해줍니다.
슬라이더를 생성해줍니다.
슬라이더의 Max 는 100 으로 설정해주고
Min 은 0 으로 설정해줍니다.
편집가능 텍스트를 만들어줍니다.
슬라이더의 값을 보여줄 LCD 입니다.
String 은 없애주고
Tag 는 LCD_slider 로 설정해줍니다.
이제 guide 에서 할 일은 끝났습니다.
제일 오른쪽에 있는 초록색 실행버튼을 눌러줍니다.
편집기 → 새로 만들기 → 함수 선택합니다.
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(hObject,handles,'1'); %myNumber에 값1을 넣어 호출
2~0까지 반복합니다.
myNumber(hObject,handles,'2');
myNumber(hObject,handles,'3');
myNumber(hObject,handles,'4');
myNumber(hObject,handles,'5');
myNumber(hObject,handles,'6');
myNumber(hObject,handles,'7');
myNumber(hObject,handles,'8');
myNumber(hObject,handles,'9');
myNumber(hObject,handles,'0');
사칙연산도 똑같이 구현해줍니다.
myNumber(hObject,handles,'+');
myNumber(hObject,handles,'-');
myNumber(hObject,handles,'*');
myNumber(hObject,handles,'/');
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은 숫자를 문자형으로 변환한다
myNumber(hObject,handles,'.');
myNumber(hObject,handles,'(');
myNumber(hObject,handles,')');
set(handles.LCD_editText,'String','0');%LCD_editText 에 있는 문자를 0으로 입력하기
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%함수 끝내기
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 문 끝내기
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문 끝내기
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문 끝내기
sliderValue=get(handles.slider1,'Value'); %sliderValue 변수에 slider1의 값 가져오기
버튼 그룹위에서 우클릭 → 콜백 보기 → SelectionChangedFcn 선택하기
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문 끝내기
끝났습니다!
실행버튼을 누르면
MATLAB GUI CALCULATOR COMPLETE!
'MATLAB' 카테고리의 다른 글
MATLAB Smulink 사용하여 수식 계산하기(1) (0) | 2020.12.22 |
---|---|
MATLAB Simulink Library Browser (0) | 2020.12.07 |