Timer.Alarm nested in another Timer.Alarm possible?
-
Hi.
I am able to use the Timer.Alarm() without any problems normally.
But i run into problems when i have a Timer.Alarm() nested inside of a method that is called by another Timer.Alarm().
I am creating a program, which is supposed to use lightsleep mode until a wakeup from the accelerometer.
The program has two Timer.Alarms running in main() which starts when it wakes up. One of these runs a method which initiates yet another alarm to take measurements from the accelerometer. But it seems this alarm is never activated. So is this sort of "nesting" of Timer.Alarms not possible / bad practice, and what is the alternatives?
I am posting a example here, i hope it is understandable without you needing the whole of my main().
#Initial Alarm activity_alarm = Timer.Alarm(lambda y: timer_sampler(), s = 1, periodic = True) #The method that the activity_alarm uses, which starts yet another alarm (ignore the prints for debugging) def timer_sampler(): print("Entering timer_sampler() method!") global is_active acc.set_odr(6) acc.set_full_scale(3) acc.enable_activity_interrupt(126, 10) if acc.activity(): print("There is activity in timer_sampler() method!") if is_active == False: is_active = True print("Starting ALARM!!") alarm = Timer.Alarm(lambda x: sample(), ms = 10, periodic = True) #elif not acc.activity(): print("There is now NO activity in timer_sampler() method!") if is_active == True: is_active = False alarm.cancel()
-
@railmonitor You do not need the lamda function for setting the callback. Simply giving the name of the callback function is sufficient.
Timer.Alarm(timer_sampler, s = 1, periodic = True)
Obviously, the function timer_sampler has to be placed in your script before using if for the alarm callback notification, and the callback has to have a single argument, the alarm object.
-
did you get it to work .
My timer only works once then stops , Even if the periodic = true