% タイマー更新
function updateTime(~, ~)
elapsedTime = elapsedTime + 1;
mins = floor(elapsedTime / 60);
secs = mod(elapsedTime, 60);
set(timeText, 'String', sprintf('%02d:%02d', mins, secs));
end
% GUI閉じたときの後始末
fig.CloseRequestFcn = @(src, event) cleanup();
% スタート
function startTimer(~, ~)
if ~strcmp(t.Running, 'on')
start(t);
end
end
% ストップ
function stopTimer(~, ~)
if strcmp(t.Running, 'on')
stop(t);
end
end
% リセット
function resetTimer(~, ~)
stopTimer();
elapsedTime = 0;
set(timeText, 'String', '00:00');
end
% タイマーオブジェクトの作成
t = timer('ExecutionMode', 'fixedRate', 'Period', 1, ...
'TimerFcn', @updateTime);
elapsedTime = 0; % 経過秒数
% ==== 各コールバック関数 ====
% リセットボタン
resetBtn = uicontrol('Style', 'pushbutton', 'String', 'リセット', ...
'FontSize', 12, 'Position', [200 60 80 40], ...
'Callback', @resetTimer);
% ストップボタン
stopBtn = uicontrol('Style', 'pushbutton', 'String', 'ストップ', ...
'FontSize', 12, 'Position', [110 60 80 40], ...
'Callback', @stopTimer);
% スタートボタン
startBtn = uicontrol('Style', 'pushbutton', 'String', 'スタート', ...
'FontSize', 12, 'Position', [20 60 80 40], ...
'Callback', @startTimer);
function presentation_timer_gui
% GUI作成
fig = figure('Name', 'プレゼン練習タイマー', 'Position', [500 500 300 250]);
% タイマー表示用ラベル
timeText = uicontrol('Style', 'text', 'String', '00:00', ...
'FontSize', 30, 'Position', [50 140 200 60]);




