Projet

Général

Profil

test-float-raspi.py

Test envoi/réception de float sur le bus I2C (master) - Tarek Benhnini, 16/12/2015 15:47

 
1
# ============================================================
2
# Communication entre Arduino et Raspberry Pi via le bus I2C
3
# ============================================================
4
# Programme Master qui envoie des instructions vers la Arduino en simulant des registres
5
# sur la Arduino. S'utilise avec le programme Arduino test-float-arduino.ino
6
#
7
# Ce programme doit permettre de recevoir sur la Raspi une valeur float de la part de la Arduino.
8

    
9
import time
10
import struct
11
from Adafruit_I2C import Adafruit_I2C
12

    
13
i2c = Adafruit_I2C( 0x04 )
14

    
15
# --- Demander une valeur décimale ---
16
# Transfert d'un type double
17

    
18
# Demander l'opération de réception d'un float, placer 0x02 dans le
19
# registre d'exécution 0
20
i2c.write8( 0x00, 0x02 )
21
time.sleep( 0.100 )
22
i2c.debug = True
23

    
24
# Lire 4 octets pour recevoir le float
25
# Doit recevoir les valeurs [164, 112, 181, 64]
26
i2c.debug = True
27
lstData = i2c.readList( 0x00, 4 )
28

    
29
# transformer en string pour unpack
30
sData = ''
31
for aByte in lstData:
32
        sData = sData + chr(aByte)  # chr() retourne un string à partir d'un caractère
33

    
34
f_data, = struct.unpack('<f', sData)
35
print f_data # Affiche la valeur en float