Mode interpréteur

Le langage Python est un langage interprété : les instructions sont exécutées "à la volée", sans avoir besoin d'être compilées au préalable.

La première façon d'utiliser micropython est donc logiquement le mode interpréteur. Ceci se fait via un terminal en ligne de commande (voir installation).

Ouvrir un terminal et saisir :

screen /dev/ttyACM0

ce qui donne :

Nickel, on a le prompt >>> de l'interpréteur MicroPython. Si pour une quelconque raison, vous n'avez le prompt, faire un Reset sur la carte ou bien faire CTRL+B.

La première fonction utile est la fonction help(),

qui renvoie :

Welcome to Micro Python!

For online help please visit http://micropython.org/help/.

Quick overview of commands for the board:
  pyb.info()    -- print some general information
  pyb.delay(n)  -- wait for n milliseconds
  pyb.millis()  -- get number of milliseconds since hard reset
  pyb.Switch()  -- create a switch object
                   Switch methods: (), callback(f)
  pyb.LED(n)    -- create an LED object for LED n (n=1,2,3,4)
                   LED methods: on(), off(), toggle(), intensity(<n>)
  pyb.Pin(pin)  -- get a pin, eg pyb.Pin('X1')
  pyb.Pin(pin, m, [p]) -- get a pin and configure it for IO mode m, pull mode p
                   Pin methods: init(..), value([v]), high(), low()
  pyb.ExtInt(pin, m, p, callback) -- create an external interrupt object
  pyb.ADC(pin)  -- make an analog object from a pin
                   ADC methods: read(), read_timed(buf, freq)
  pyb.DAC(port) -- make a DAC object
                   DAC methods: triangle(freq), write(n), write_timed(buf, freq)
  pyb.RTC()     -- make an RTC object; methods: datetime([val])
  pyb.rng()     -- get a 30-bit hardware random number
  pyb.Servo(n)  -- create Servo object for servo n (n=1,2,3,4)
                   Servo methods: calibration(..), angle([x, [t]]), speed([x, [t]])
  pyb.Accel()   -- create an Accelerometer object
                   Accelerometer methods: x(), y(), z(), tilt(), filtered_xyz()

Pins are numbered X1-X12, X17-X22, Y1-Y12, or by their MCU name
Pin IO modes are: pyb.Pin.IN, pyb.Pin.OUT_PP, pyb.Pin.OUT_OD
Pin pull modes are: pyb.Pin.PULL_NONE, pyb.Pin.PULL_UP, pyb.Pin.PULL_DOWN
Additional serial bus objects: pyb.I2C(n), pyb.SPI(n), pyb.UART(n)

Control commands:
  CTRL-A        -- on a blank line, enter raw REPL mode
  CTRL-B        -- on a blank line, enter normal REPL mode
  CTRL-C        -- interrupt a running program
  CTRL-D        -- on a blank line, do a soft reset of the board

For further help on a specific object, type help(obj)

Bien noter les raccourcis utiles, notamment CTRL+B ou CTRL+C

Bon ben là, on y est, on peut faire mumuse... et tester la bête :

for i in range(10):
 print(i)

Noter que l'indentation fonctionne avec un seul espace.

ce qui donne :

0
1
2
3
4
5
6
7
8
9

Yes !

Quelques essais en vrac de langage Python :

>>> 100000000000000000000*200034
20003400000000000000000000

>>> import math
>>> math.sin(math.radians(90))
1.0
>>> math.sin(math.radians(45))
0.7071068

>>> semaine=['Lu', 'Ma', 'Me', 'Je', 'Ve', 'Sa', 'Di']
>>> for jour in semaine:
...  print(jour)
... 
Lu
Ma
Me
Je
Ve
Sa
Di

>>> chaine="Bonjour"
>>> chaine[-1]
'r'
>>> chaine[:-3]
'Bonj'
>>> chaine[::2]
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
NotImplementedError: only slices with step=1 (aka None) are supported
>>> chaine[2:3]
'n'

>>> x = [1, 2, 3]
>>> y = [4, 5, 6]
>>> zipped = zip(x, y)
>>> list(zipped)
[(1, 4), (2, 5), (3, 6)]
>>> x2, y2 = zip(*zip(x, y))
>>> x2
(1, 2, 3)
>>> y2
(4, 5, 6)

Bref, bien cool tout çà, même si il y a deci-delà quelques (minimes ou contournables) limitations comparativement au langage Python standard.

Quand on a terminé, refermer l'interpréteur en fermant le terminal.