# @name Stopwatch # @desc Stopwatch with HH:MM:SS or MM:SS:hundredths format # @author Avemer # @version 1.0 class Stopwatch # SETTINGS # Stopwatch text color # Format: 0xRRGGBB # Examples: # 0xFFFFFF = White # 0xFF0000 = Red # 0x00FF00 = Green # 0x0000FF = Blue var STOPWATCH_COLOR # Stopwatch format # 0 = HH:MM:SS # 1 = MM:SS:hundredths var STOPWATCH_FORMAT # INTERNAL VARIABLES var running var started var elapsed # INIT def init() self.running = false self.started = 0 self.elapsed = 0 # USER SETTINGS self.STOPWATCH_COLOR = 0xFFFFFF self.STOPWATCH_FORMAT = 0 end # MAIN LOOP def loop() end # DRAW STOPWATCH def draw() clear() # Get current elapsed time in milliseconds. var current = self.elapsed if self.running current = now_ms() - self.started end # FORMAT 0: HH:MM:SS var value = "" if self.STOPWATCH_FORMAT == 0 var total = int(current / 1000) var hours = int(total / 3600) var minutes = int((total - hours * 3600) / 60) var seconds = total - hours * 3600 - minutes * 60 var hh = str(hours) var mm = str(minutes) var ss = str(seconds) # Add leading zero to hours. if hours < 10 hh = "0" + hh end # Add leading zero to minutes. if minutes < 10 mm = "0" + mm end # Add leading zero to seconds. if seconds < 10 ss = "0" + ss end value = hh + ":" + mm + ":" + ss # FORMAT 1: MM:SS:HUNDREDTHS elif self.STOPWATCH_FORMAT == 1 var totalSeconds = int(current / 1000) var minutes2 = int(totalSeconds / 60) var seconds2 = totalSeconds - minutes2 * 60 # Convert milliseconds to hundredths of a second (0-99). var hundredths = int((current % 1000) / 10) var mm2 = str(minutes2) var ss2 = str(seconds2) var ms2 = str(hundredths) # Add leading zero to minutes. if minutes2 < 10 mm2 = "0" + mm2 end # Add leading zero to seconds. if seconds2 < 10 ss2 = "0" + ss2 end # Add leading zero to hundredths. if hundredths < 10 ms2 = "0" + ms2 end value = mm2 + ":" + ss2 + ":" + ms2 end # CENTER TEXT var w = text_ink_width(value) var x = int((width() - w) / 2) # DRAW text( x, 6, value, self.STOPWATCH_COLOR ) end # BUTTON def on_button(btn) if btn == "select" # RUNNING → STOP if self.running self.elapsed = now_ms() - self.started self.running = false # STOPPED WITH TIME → RESET elif self.elapsed > 0 self.elapsed = 0 # RESET → START else self.started = now_ms() self.running = true end end end end return Stopwatch()