Outils pour utilisateurs

Outils du site


issue119:python

Différences

Ci-dessous, les différences entre deux révisions de la page.

Lien vers cette vue comparative

Les deux révisions précédentesRévision précédente
Prochaine révision
Révision précédente
issue119:python [2017/04/09 23:01] d52frissue119:python [2017/04/12 10:52] (Version actuelle) andre_domenech
Ligne 11: Ligne 11:
 Qu'est-ce donc que Firmata ? Qu'est-ce donc que Firmata ?
  
-Firmata est un protocole de communication série utilisé depuis longtemps pour les communications entre des micro-controlleurs et les programmes sur un autre ordinateur. Firmata donne un accès direct à la carte Arduino. Vous pouvez communiquer par le port série de l'ordinateur « hôte » en utilisant simplement n'importe quel langage série, dont Python. Il est basé sur la spécif. MIDI.+Firmata est un protocole de communication série utilisé depuis longtemps pour les communications entre des micro-contrôleurs et les programmes sur un autre ordinateur. Firmata donne un accès direct à la carte Arduino. Vous pouvez communiquer par le port série de l'ordinateur « hôte » en utilisant à peu près n'importe quel langage série, dont Python. Il est basé sur la spécif. MIDI.
  
-En utilisant le script « Standard Firmata » inclus dans les exemples Arduino, vous pouvez avoir accès et piloter n'importe quelle connexion analogique ou numérique de la carte Arduino, sans avoir à écrire du code spécifique. Si vous le voulez, vous pouvez écrire du code spécialisé en incorporant la bibliothèque Firmata pour l'Arduino qui réalise des fonctions spécialisées.+En utilisant le script « Standard Firmata » inclus dans les exemples Arduino, vous pouvez avoir accès à, et pilotern'importe quelle connexion analogique ou numérique de la carte Arduino, sans avoir à écrire du code spécifique. Si vous le voulez, vous pouvez écrire du code spécialisé en incorporant la bibliothèque Firmata pour l'Arduino qui réalise des fonctions spécialisées.
  
 **Getting Started **Getting Started
Ligne 35: Ligne 35:
 Si vous testez Firmata/Arduino sur le Raspberry Pi, vous devrez télécharger une version du programme Firmata Test qui est compilée pour le RPi sur : https://github.com/freetronics/PiLeven/wiki/Direct-Control-with-Firmata ; autrement, vous pouvez télécharger Firmata Test depuis firmata.org/wiki/Main_Page#Firmata_Test_Program. Je l'ai sauvegardé sur le bureau de mon RPi, mais vous pouvez le sauvegarder où vous voulez. Si vous testez Firmata/Arduino sur le Raspberry Pi, vous devrez télécharger une version du programme Firmata Test qui est compilée pour le RPi sur : https://github.com/freetronics/PiLeven/wiki/Direct-Control-with-Firmata ; autrement, vous pouvez télécharger Firmata Test depuis firmata.org/wiki/Main_Page#Firmata_Test_Program. Je l'ai sauvegardé sur le bureau de mon RPi, mais vous pouvez le sauvegarder où vous voulez.
  
-Assurez-vous de paramétrer les permissions qui permettent de l'exécuter, car c'est un fichier .bin. Puis, lancez-le.+Assurez-vous de paramétrer les permissions pour qu'il puisse être exécuté, car c'est un fichier .bin. Puis, lancez-le.
  
 ./firmata_test ./firmata_test
Ligne 41: Ligne 41:
 Réglez le port sur le même port que celui de l'Arduino. Dans mon cas, c'est sur /dev/ttyACM0. Ensuite, après quelques secondes, le programme affichera les 13 ports digitaux et les 5 ports analogiques. Réglez le port sur le même port que celui de l'Arduino. Dans mon cas, c'est sur /dev/ttyACM0. Ensuite, après quelques secondes, le programme affichera les 13 ports digitaux et les 5 ports analogiques.
  
-Cliquez sur le bouton marqué « Low » pour la broche 13. Il devrait changer pour « High » et la LED de la carte Arduino devrait s'allumer. Cliquez à nouveau et ça devrait revenir à « Low », avec extinction de la LED.+Cliquez sur le bouton marqué « Low » pour la broche 13. Il devrait changer pour « High » et la LED de la carte Arduino devrait s'allumer. Cliquez à nouveau : il devrait revenir à « Low », avec extinction de la LED.
  
 **Going Further **Going Further
Ligne 77: Ligne 77:
 Notre premier exemple Python nécessitera un bouton-poussoir temporaire connecté à la broche 2 de l'Arduino. La disposition sur la plaque d'essai en Fritzing est ci-dessous. Notre premier exemple Python nécessitera un bouton-poussoir temporaire connecté à la broche 2 de l'Arduino. La disposition sur la plaque d'essai en Fritzing est ci-dessous.
  
-De base, nous connectons simplement le +5 VDC de l'Arduino à la borne digitale n°2 de l'Arduino, à travers le bouton-poussoir. À la place, si vous n'avez pas de petit bouton-poussoir disponible, vous pouvez faire une connexion brève avec un cavalier entre la broche +5 VDC et la borne digitale n°2.+De base, nous connectons simplement le +5 VDC de l'Arduino à la borne digitale n° 2 de l'Arduino en passant par le bouton-poussoir. À la place, si vous n'avez pas de petit bouton-poussoir disponible, vous pouvez faire une connexion brève avec un cavalier entre la broche +5 VDC et la borne digitale n° 2.
  
 Sur l'Arduino, compilez le fichier exemple DigitalRealSerial tiré du menu Fichiers|Exemple|01 Bases. Sur l'Arduino, compilez le fichier exemple DigitalRealSerial tiré du menu Fichiers|Exemple|01 Bases.
  
-Sur votre ordinateur, vous pouvez soit essayer simplement d'utiliser l'interface du terminal Python, soit entrer le code suivant dans un IDE comme Geany et le faire tourner dans un terminal.+Sur votre ordinateur, vous pouvez soit essayer simplement d'utiliser l'interface du terminal Python, soit entrer le code suivant dans un IDE comme Geany et le lancer dans un terminal.
  
 **import serial **import serial
Ligne 99: Ligne 99:
 import serial import serial
  
-s = serial.Serial('/dev/ttyACM0',9600) # You might need to change this to ACM1 or whatever your Arduino is connected to +s = serial.Serial('/dev/ttyACM0',9600) # Vous devrez peut-être changer ceci à ACM1 ou à un autre endroit auquel votre Arduino est connecté.
 while True: while True:
    
    print s.readline()    print s.readline()
        
-Si vous appuyez puis relâchez le bouton, vous devriez voir la sortie sur le terminal passer de 0 à 1 puis de 1 à 0.+Si vous appuyez sur, puis relâchezle bouton, vous devriez voir la sortie sur le terminal passer de 0 à 1 puis de 1 à 0.
  
 Pour quitter le programme, utilisez <Ctrl> + C. Pour quitter le programme, utilisez <Ctrl> + C.
  
-Maintenant, vous avez écrit votre premier programme en Python pour piloter l'Arduino.+Vous venez d'écrire votre premier programme en Python pour piloter l'Arduino.
  
 **Now we’ll do something a bit more complicated. We’ll “monitor” an analogue voltage (controlled by a potentiometer) on analogue input A0 and if the voltage is over a certain value (.50) we’ll turn on a LED connected to digital pin #2. Below is the Fritzing breadboard. **Now we’ll do something a bit more complicated. We’ll “monitor” an analogue voltage (controlled by a potentiometer) on analogue input A0 and if the voltage is over a certain value (.50) we’ll turn on a LED connected to digital pin #2. Below is the Fritzing breadboard.
Ligne 129: Ligne 128:
 Here we are setting up for 4 analogue pins to be handled, even though we are only going to use pin 0 for this example.** Here we are setting up for 4 analogue pins to be handled, even though we are only going to use pin 0 for this example.**
  
-Maintenant, nous allons faire quelque chose d'un peu plus compliqué. Nous allons « suivre » une tension analogique (contrôlée par un potentiomètre) sur l'entrée analogique A0 et, si la tension est au-dessus d'une certaine valeur (0,50), nous allumerons la LED connectée à la sortie digitale n°2. La plaque d'essai en Fritzing est ci-dessous.+Maintenant, nous allons faire quelque chose d'un peu plus compliqué. Nous allons « suivre » une tension analogique (contrôlée par un potentiomètre) sur l'entrée analogique A0 et, si la tension est au-dessus d'une certaine valeur (0,50), nous allumerons la LED connectée à la sortie digitale n° 2. La plaque d'essai en Fritzing est ci-dessous.
  
-En utilisant à nouveau le code StandardFirmata de l'Arduino, démarrons la carte Arduino.+En utilisant à nouveau le code StandardFirmata de l'Arduino, démarrez la carte Arduino.
  
 Le code Python est ci-dessous. Je l'ai nommé « analogue_test1.py ». Le code Python est ci-dessous. Je l'ai nommé « analogue_test1.py ».
Ligne 137: Ligne 136:
 import pyfirmata import pyfirmata
  
-PORT = "/dev/ttyACM0"Modifier ceci pour refléter votre paramétrage+PORT = "/dev/ttyACM0"Modifiez ceci pour refléter votre configuration.
  
 board = pyfirmata.Arduino(PORT) board = pyfirmata.Arduino(PORT)
Ligne 145: Ligne 144:
 PINS = (0, 1, 2, 3) PINS = (0, 1, 2, 3)
  
-Ici, nous faisons le paramétrage pour manipuler 4 broches analogiques, même si nous n'allons en utiliser que la broche 0 dans cet exemple.+Ici, nous faisons le paramétrage pour pouvoir manipuler 4 broches analogiques, même si nous n'allons en utiliser que la broche 0 dans cet exemple.
  
 **The next two lines create an iterator to handle the serial communications for the analogue ports. This is recommended in the pyfirmata documentation. **The next two lines create an iterator to handle the serial communications for the analogue ports. This is recommended in the pyfirmata documentation.
Ligne 166: Ligne 165:
 board.pass_time(1)** board.pass_time(1)**
  
-Les deux prochaines lignes créeront un itérateur pour manipuler les communications série pour les ports analogiques. Ceci est recommandé dans la documentation de pyfirmata.+Les deux prochaines lignes créeront un itérateur pour gérer les communications série pour les ports analogiques. Ceci est recommandé dans la documentation de pyfirmata.
  
 it = pyfirmata.util.Iterator(board) it = pyfirmata.util.Iterator(board)
Ligne 204: Ligne 203:
 The board.pass_time command takes an integer of t number of whole seconds. It is a non-blocking call, so it does not block other processing.** The board.pass_time command takes an integer of t number of whole seconds. It is a non-blocking call, so it does not block other processing.**
  
-Maintenant, nous démarrons la boucle sans fin+Maintenant, nous démarrons une boucle sans fin :
  
 while True: while True:
Ligne 217: Ligne 216:
  pin2.write(0)  pin2.write(0)
  
-Dans cette boucle, nous lisons la borne analogique (souvenez-vous que la valeur sera entre 0.0 et 0.9) et, si elle est égale ou supérieure à 0,5, nous écrirons alors un 1 sur la sortie digitale de la broche n°2, allumant la LED. Une fois qu'elle est repassée sous 0,50, alors nous écrivons un 0 sur la borne, et éteignons la LED.+Dans cette boucle, nous lisons la borne analogique (souvenez-vous que la valeur sera entre 0,0 et 0,9) et, si elle est égale ou supérieure à 0,5, nous écrirons alors un 1 vers la sortie digitale de la broche n° 2, allumant la LED. Une fois qu'elle est repassée sous 0,50, nous écrivons un 0 sur la borne, et éteignons la LED.
  
  board.pass_time(1)  board.pass_time(1)
  
-La commande board.pass_time prend, sous forme d'entier, un nombre t de secondes entières. C'est un appel non-bloquant ; aussi, il ne bloque pas d'autre traitement.+La commande board.pass_time prend, sous forme d'entier, un nombre t de secondes entières. C'est un appel non bloquant ; aussi, il ne bloque pas d'autre traitement.
  
 **The Python source code is available on pastebin at http://pastebin.com/xG9VJ34i **The Python source code is available on pastebin at http://pastebin.com/xG9VJ34i
Ligne 233: Ligne 232:
 Le code Python est disponible sur pastebin à http://pastebin.com/xG9VJ34i Le code Python est disponible sur pastebin à http://pastebin.com/xG9VJ34i
  
-Maintenant que nous avons l'idée de départ, nous pouvons aller de l'avant.+Maintenant que vous avez l'idée de départ, nous pouvons aller de l'avant.
  
-Vous aurez peut-être réalisé que cette solution ne marche qu'aussi longtemps que nous avons une communication série directe avec la carte Arduino. Cependant, que se passe-t-il si nous devons utiliser un connexion sans-fil avec l'Arduino ? Nous garderons ce sujet pour une autre fois.+Vous aurez peut-être réalisé que cette solution ne marche qu'aussi longtemps que nous avons une communication série directe avec la carte Arduino. Cependant, que se passe-t-il si nous devons utiliser une connexion sans fil avec l'Arduino ? Nous garderons ce sujet pour une autre fois.
  
 Amusez-vous bien ! Amusez-vous bien !
issue119/python.1491771676.txt.gz · Dernière modification : 2017/04/09 23:01 de d52fr