Logo Mon Club Elec

Programmer le pcDuino : Python simple : Sortie numérique : Faire clignoter une LED sans delay() en utilisant un Timer.

Le pcDuino est un système de développement open source qui permet aux développeurs de créer des applications et des programmes pour leurs projets. Il est très facile à programmer et à utiliser, et offre une variété de fonctionnalités et de possibilités. Dans cet article, nous allons vous montrer comment utiliser le pcDuino et le langage Python pour créer une sortie numérique et faire clignoter une LED sans utiliser la fonction delay(). Nous allons utiliser un Timer pour réaliser cette tâche.

Programmer le pcDuino : Python simple : Sortie numérique : Faire clignoter une LED sans delay() en utilisant un Timer.

Programmer le pcDuino : Python simple : Sortie numérique : Faire clignoter une LED sans delay() en utilisant un Timer.

Ce que l’on va faire ici

  • Dans ce code,je vous montre comment faire clignoter une LED sans delay() en utilisant la fonction Pyduino timer(), ce qui permet de faire autre chose entre 2 clignotements d’une part mais surtout, ceci permet de faire chuter l’utilisation de la CPU à quasiment 0% puisqu’elle n’est sollicitée que lorsqu’il faut allumer/éteindre la LED.
  • Le principe de la fonction timer est le suivant : on précise le délai d’attente voulu en millisecondes et la fonction à appeler. Une fois le délai écoulé, la fonction voulue est appelée. On appelle à nouveau la fonction timer en fin de fonction pour un nouvel appel dans le délai voulu.
  • Retenez cette technique assez simple à utiliser, qui pourra permettre également de réaliser du « multi-tâches » au sein d’un même code, la fonction timer() pouvant être utilisées pour appeler plusieurs fonctions différentes gérant des tâches différentes avec des délais différents. Chose beaucoup plus simple à réaliser avec Pyduino qu’avec le langage Arduino natif !

Pré-requis

Matériel nécessaire

  • une plaque d’essai pour montage sans soudures,
Programmer le pcDuino : Python simple : Sortie numérique : Faire clignoter une LED sans delay() en utilisant un Timer.
  • des straps,
Programmer le pcDuino : Python simple : Sortie numérique : Faire clignoter une LED sans delay() en utilisant un Timer.
  • une LED rouge 5mm,
Programmer le pcDuino : Python simple : Sortie numérique : Faire clignoter une LED sans delay() en utilisant un Timer.
  • une résistance 1/4w de 270 Ohms environ,
Programmer le pcDuino : Python simple : Sortie numérique : Faire clignoter une LED sans delay() en utilisant un Timer.

Instructions de montage

  • Connecter sur la broche 2 (configurée en sortie) une LED et sa résistance (270 Ohms) en série connectée au 0V

Le montage à réaliser

Programmer le pcDuino : Python simple : Sortie numérique : Faire clignoter une LED sans delay() en utilisant un Timer.

Le fichier *.yno

Copier/coller ce code dans l’IDE Pyduino

# entete declarative
LED=2  # declare la broche a utiliser
etatLED=LOW # memorise etat LED
delai=250 # pause   a utiliser en millisecondes

#— setup —
def setup():

        pinMode(LED,OUTPUT) # met la broche en sortie
        Serial.println(« La broche «  +str(LED)+  » est en sortie ! »)

        timer(delai, LEDEvent) # lance timer

# — fin setup —

# — loop —
def loop():
        return # si vide       

# — fin loop —

# LEDEvent : appelé lors survenue evenement timer
def LEDEvent():

        global etatLED # traiter etatLED comme variable globale

        if etatLED==LOW:
                digitalWrite(LED,HIGH) # allume la LED
                Serial.println(« La LED est allumee ! »)
                etatLED=HIGH # memorise etat LED

        else:  
                digitalWrite(LED,LOW) # eteint la LED
                Serial.println(« La LED est eteinte ! »)
                etatLED=LOW # memorise etat LED

        timer(delai, LEDEvent) # relance le timer

 

Ce code est également disponible ici :

Le fichier *.py

Copier/coller ce code dans l’éditeur Geany :

#!/usr/bin/python
# -*- coding: utf-8 -*-

# exemple pyDUino – par X. HINAULT – www.mon-club-elec.fr
# Juin 2013 – Tous droits réservés – GPLv3
# voir : https://github.com/sensor56/pyDuino

# LED clignote – sans delay – avec timer

from pyduino import * # importe les fonctions Arduino pour Python

# entete declarative
LED=2  # declare la broche a utiliser
etatLED=LOW # memorise etat LED
delai=250 # pause   a utiliser en millisecondes

#— setup —
def setup():

        pinMode(LED,OUTPUT) # met la broche en sortie
        Serial.println(« La broche «  +str(LED)+  » est en sortie ! »)

        timer(delai, LEDEvent) # lance timer

# — fin setup —

# — loop —
def loop():
        return # si vide       

# — fin loop —

# LEDEvent : appelé lors survenue evenement timer
def LEDEvent():

        global etatLED # traiter etatLED comme variable globale

        if etatLED==LOW:
                digitalWrite(LED,HIGH) # allume la LED
                Serial.println(« La LED est allumee ! »)
                etatLED=HIGH # memorise etat LED

        else:  
                digitalWrite(LED,LOW) # eteint la LED
                Serial.println(« La LED est eteinte ! »)
                etatLED=LOW # memorise etat LED

        timer(delai, LEDEvent) # relance le timer

#— obligatoire pour lancement du code —
if __name__==« __main__ »: # pour rendre le code executable
        setup() # appelle la fonction setup
        #while(1): loop() # appelle fonction loop sans fin
 

Ce code est également disponible ici : https://raw.github.com/sensor56/pyduino-exemples/master/1.Basics/BlinkWithoutDelayTimer.py

Utilisation

  • Réaliser le montage indiqué,
  • Appuyer sur le bouton <Exécuter> dans Geany
  • Une fenêtre de Terminal vide doit apparaître avec des messages et la LED doit clignoter
Programmer le pcDuino : Python simple : Sortie numérique : Faire clignoter une LED sans delay() en utilisant un Timer.
Noter cet article

Laisser un commentaire

Votre adresse e-mail ne sera pas publiée. Les champs obligatoires sont indiqués avec *

Archive Mon Club Elec

Articles populaires

Newsletter

Inscrivez-vous maintenant et bénéficiez d'un soutien continu pour réaliser vos travaux électriques en toute sécurité.