In microbit muPython: sleep(ms), the units is milliseconds.
However, if import time module and use sleep() then muPython uses time module’s sleep(s) which is units of full seconds. Coder must substitute time module’s sleep_ms(ms) to get units of milliseconds.
If using time module, how can I force use of the ‘normal’ sleep(ms)?
Or more generally, how can I specify using any command from the ‘normal’ muPython as opposed to the same-spelled command from an imported module?
# Task: Show SAD, sleep 1 sec, show HAPPY
# Problem: HAPPY takes 17 minutes to appear
from microbit import *
from time import *
display.show(Image.SAD)
sleep(1000) # uses time.sleep(units=sec) so 1,000 sec
display.show(Image.HAPPY)
Use from ... import ... as
notation.
from microbit import sleep as microbit_sleep
from time import sleep as normal_sleep
microbit_sleep(1000) # sleeps for one second
normal_sleep(1000) # sleeps for much longer
Or, if you need everything in those two modules, just do a normal import
.
import microbit
import time
microbit.sleep(1000)
time.sleep(1)
from ... import *
is generally considered bad Python style precisely for the reasons you've discovered here. It's okay for really quick scripts, but best avoided as projects get larger and depend on more modules.