Skip to content
This repository was archived by the owner on Oct 29, 2018. It is now read-only.

Files

Latest commit

Daniel Spindelbauergitbook-bot
Daniel Spindelbauer
and
Aug 15, 2018
78cc91b · Aug 15, 2018

History

History
53 lines (37 loc) · 1.66 KB

File metadata and controls

53 lines (37 loc) · 1.66 KB

Timers

Detailed information about this class can be found in Timer.

Chronometer

The Chronometer can be used to measure how much time has elapsed in a block of code. The following example uses a simple stopwatch.

from machine import Timer
import time

chrono = Timer.Chrono()

chrono.start()
time.sleep(1.25) # simulate the first lap took 1.25 seconds
lap = chrono.read() # read elapsed time without stopping
time.sleep(1.5)
chrono.stop()
total = chrono.read()

print()
print("\nthe racer took %f seconds to finish the race" % total)
print("  %f seconds in the first lap" % lap)
print("  %f seconds in the last lap" % (total - lap))

Alarm

The Alarm can be used to get interrupts at a specific interval. The following code executes a callback every second for 10 seconds.

from machine import Timer

class Clock:

    def __init__(self):
        self.seconds = 0
        self.__alarm = Timer.Alarm(self._seconds_handler, 1, periodic=True)

    def _seconds_handler(self, alarm):
        self.seconds += 1
        print("%02d seconds have passed" % self.seconds)
        if self.seconds == 10:
            alarm.callback(None) # stop counting after 10 seconds

clock = Clock()

{% hint style="info" %} There are no restrictions to what can be done in an interrupt. For example, it is possible to even do network requests with an interrupt. However, it is important to keep in mind that interrupts are handled sequentially, so it’s good practice to keep them short. More information can be found in Interrupt Handling. {% endhint %}