Premier programme : blink !
Pour débuter sous circuitPython, nous allons bien sûr faire clignoter une LED ! Mais avant cela, regardons la structure d'un programme sous micropython en partant d'un exemple sous Arduino. Un programme vide sous arduino ressemble à ceci :
// déclaration des variables globalesint maVariable;
void setup() {
// code pour l'initialisation}
void loop() {
// boucle infinie qui contient le programme principal}
Le code équivalent sous circuitPython sera le suivant :
import blablabla
# déclaration des variables globalesmaVariable = 0
# initialisation des divers composants du programmewhile True:
# boucle infinie qui contient le programme principal...
Remarque :
Il n'y a cependant aucune contrainte forçant le programme principal à se trouver dans une boucle infinie. Un programme circuitPython peut très bien lire la valeur d'un capteur, afficher un message et se terminer ainsi.
Méthode : Le programme blink
Je ne reprends pas ici le programme blink de l'Arduino, mais on voit que le programme circuitPython est très similaire.
import time
import digitalio
import board
# déclaration des variables globalesled = digitalio.DigitalInOut(board.D13)
# initialisation des divers composants du programmeled.direction = digitalio.Direction.OUTPUT
while True:
time.sleep(1)
led.value = True
time.sleep(1)
led.value = False
La librairie digitalio permet de gérer ce qui à rapport avec les entrées sorties numériques. On y trouve entre autre :
DigitalInOutprend en paramètre la broche à contrôlerDirectionpeut valoirDirection.INPUTouDirection.OUTPUTPullutilisé pour les entrées numériques pour configurer la broche en pull-up (Pull.UP) ou pull-down(Pull.DOWN).
La librairie board pemet de référencer clairement les broches de la carte utilisée. Celle-ci dépend donc de la carte et son contenu varie d'une carte à l'autre. Le board d'une CPX permettra d'atteindre les broches mais aussi les différents capteurs. Le board de ma carte Metro M4 express contient 'A0', 'A1', 'A2', 'A3', 'A4', 'A5', 'D0', 'D1', 'D10', 'D11', 'D12', 'D13', 'D2', 'D3', 'D4', 'D5', 'D6', 'D7', 'D8', 'D9', 'I2C', 'LED_RX', 'LED_TX', 'MISO', 'MOSI', 'NEOPIXEL', 'RX', 'SCK', 'SCL', 'SDA', 'SPI', 'TX', 'UART' qui sont en fait toutes les broches accessibles sur cette carte en particulier.
La librairie time gère tout ce qui a trait au temps. On en a pratiquement toujours besoin.
La méthode
sleepest l'équivalent de la fonctiondelayen Arduino, mais attention, le temps passé en paramètre est exprimé en secondes ! On peut bien sûr utiliser des nombres décimaux pour avoir des fractions de secondes.La méthode
monotonicest l'équivalent de la fonction Arduinomillis(). Elle donne le temps passé depuis le démarrage de la carte. Ce temps est exprimé également en secondes. Pour plus de précision, on peut utilisermonotonic_nsen nanosecondes ! On en verra un exemple juste après.