Ligne 36 : |
Ligne 36 : |
| == Programmation == | | == Programmation == |
| | | |
− | On software side, the Pi acts as a “server”, taking simple display commands via serial link. You could even start the Pi server script and connect to the serial port with Putty, and the session could look a bit like the following:
| + | === Côté Raspberry Pi === |
| + | Du côté logiciel, le PI agit comme un "serveur", acceptant des commandes d'affichage simple par l'intermédiaire de la connexion série. |
| + | |
| + | Vous pouvez même démarrer le script serveur du Pi et vous conneter sur le port série à l'aide de Putty. La session pourrait ressembler à ceci: |
| + | <nowiki># initialiser le viewport - pas encore implémenté dans le code serveur |
| + | init 500 500 |
| + | # Dessiner un rectangle de 10x10 à la position (5,15) |
| + | draw 5 15 10 10 |
| + | # quitter le serveur |
| + | quit |
| + | </nowiki> |
| + | |
| + | Le serveur Python utilise la [http://pyserial.sourceforge.net/ libraire de communication pyserial], configurée sur 9600 bauds, mais le Pi et Arduino devraient également être capable de dialoguer à 115 200 bauds. |
| + | |
| + | Pour l'interface graphique, c'est le framework de [http://www.pygame.org/ pygame] qui est utilisé. La version du code initialize le viewport graphique à 500×500 points (''500x500 pixels''), mais il serait possible de passer ce paramètre à une commande "init" envoyée depuis un Arduino (comme cela, c'est le programme Arduino qui défini également le ViewPort). |
| + | |
| + | Le code devrait être assez facile à comprendre: il n'y a que deux commandes cupportées, “draw” (dessiner) avec 4 paramètres, et “quit” pour quitter le programme (sinon une boucle infinie attends les commandes de dessin) |
| + | |
| + | (I named the file ar2pi.py): |
| + | |
| + | <nowiki>#!/usr/bin/env python |
| + | |
| + | # Code source de Joonas Pihlajamaa pour codeandlife.com (Juillet 2012) |
| + | # Article original: http://codeandlife.com/2012/12/27/raspberry-pi-as-arduino-hdmi-shield/ |
| + | # Article Français: |
| + | |
| + | import serial |
| + | import string |
| + | import pygame |
| + | |
| + | ser = serial.Serial("/dev/ttyAMA0",9600) |
| + | ser.open() |
| + | |
| + | pygame.init() |
| + | window = pygame.display.set_mode((500, 500)) |
| + | colour = pygame.Color("blue") |
| + | pygame.mouse.set_visible(False) |
| + | |
| + | quit = False |
| + | |
| + | while not quit: |
| + | line = ser.readline() |
| + | words = line.split() |
| + | |
| + | if words[0] == "rect": |
| + | pygame.draw.rect(window, colour, (int(words[1]), |
| + | int(words[2]), int(words[3]), int(words[4]))) |
| + | elif words[0] == "exit": |
| + | quit = True |
| + | |
| + | pygame.display.flip() |
| + | |
| + | ser.close() |
| + | </nowiki> |
| | | |
| <hr /> | | <hr /> |