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.

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
- un mini-PC (pcDuino conseillé) avec système Lubuntu opérationnel. Voir si besoin la page d’accueil du pcDuino
- Langage Python (2.7) et l’IDE Pyduino ou l’éditeur Geany installés. Voir si besoin : Logiciel pour développer avec Pyduino
- ma librairie pyDuino installée : voir si besoin : Télécharger et installer Pyduino sur le pcDuino
Matériel nécessaire
- une plaque d’essai pour montage sans soudures,

- des straps,

- une LED rouge 5mm,

- une résistance 1/4w de 270 Ohms environ,

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
Le fichier *.yno
Copier/coller ce code dans l’IDE Pyduino
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 :
# -*- 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

Articles similaires:
- Programmer le pcDuino : Python simple : Sortie numérique : Faire clignoter une LED sans delay() en utilisant millis()
- Programmer le pcDuino : Python simple : Sortie numérique : Faire clignoter une LED
- Programmer le pcDuino : Python simple : Entrée numérique : L’appui sur un bouton poussoir allume une LED
- Programmer le pcDuino : Python simple : Entrée numérique : Détecter l’appui sur un bouton poussoir
- Programmer le RaspberryPi : Python simple : Sortie numérique : Faire clignoter une LED
Articles Liés
- Programmer le pcDuino : Python simple : Sortie numérique : Faire clignoter une LED sans delay() en utilisant millis()
Le pcDuino est un système de développement open source qui permet aux développeurs de créer…
- Javascript : Graphique Dygraphs simple
Le Javascript est un langage de programmation très populaire et puissant qui permet aux développeurs…
- Javascript : Afficher 6 widgets graphiques fournis par une librairie graphique externe.
Le Javascript est un langage de programmation très populaire qui permet aux développeurs de créer…