Modifications

Sauter à la navigation Sauter à la recherche
1 971 octets ajoutés ,  13 janvier 2013 à 13:27
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 />
29 837

modifications

Menu de navigation