==== Ceci est la doc du Sense-hat ====
===Le Sense-hat dans les étoiles : Astro-pi===
{{:sense-hat-etoiles_.jpg?200|}}[[http://www.framboise314.fr/sense-hat-un-tour-dans-les-etoiles/|Sense-hat]]
[[https://youtu.be/6ZcNh_Tpnac|Une video]]
{{:emu_raspi2_600px.png?600|}}[[http://www.framboise314.fr/astropi-emulateur-de-sensehat-et-de-matrice-de-leds/#Installer_lrsquoemulateur_de_matrice_a_LED|Un émulateur de matrice LEDs Sense-Hat]]
===C'est quoi un Sense-Hat===
Le Raspberry Pi Hat Sense est le produit idéal, grâce à ses nombreux capteurs, pour en apprendre davantage sur la programmation et la façon dont nous interagissons avec le monde qui nous entoure.
Le Hat Sense se fixe sur le dessus du Raspberry Pi via les 40 broches GPIO. Ses capteurs de circuits intégrés peuvent être utilisés pour de nombreux type d'expériences, applications, et même jeux.
Le Sense HAT supporte toute une série de projets pour le Pi de framboise, il peut mesurer la vitesse du Pi (Il mesure votre vitesse...), Quelle est la température ? Le taux d'humidité ? (Humidité de l'air), Quelle direction vous prenez ? Et bien plus.
Le 8x8 LED Matrix vous permet d'afficher les données des différents capteurs, il peut vous montrer quel est géomagnétique Nord en programmant une boussole à l'aide du magnétomètre, ou simplement être utilisé pour jouer à des jeux comme Tetris, Pong et Snake avec le joystick. Le joystick peut également être utilisé pour permettre à un utilisateur humain d'interagir avec les programmes exécutés sur le FAT de framboise Pi Sense-Hat
{{:sense-hat-002_.jpg?200|}} {{:800px-rasp-sense-hat-astro-pi-debuter-29.png?200|}}
** Détails techniques **
Gyroscope
Capteur de vitesse angulaire (dps): ~ 245/500/2000
Accéléromètre
Capteur d'accélération linéaire (g): ~ 2/4/8/16
Magnétomètre
Capteur magnétique (gauss): ~ 4/8/12/16
Baromètre: 260 - 1260 hPa plage absolue (la précision dépend de la température et de la pression, ~ 0,1 hPa dans des conditions normales)
Capteur de température: précis à ~ 2 ° C dans la plage 0-65 ° C
Capteur d'humidité relative: précis à ~ 4,5% dans la gamme 20-80% rH, précis à ~ 0,5 ° C dans la gamme 15-40 ° C
Affichage matriciel 8x8 LED
Petit joystick à 5 boutons
Les séparateurs peuvent venir en plastique ou en métal
Dimensions du produit: 65.1mm x 56.6mm x 13.9mm / 2.6 "x 2.2" x 0.5 "
Poids du produit: 20.4g / 0.7oz
=== le schéma du Sense-Hat===
{{ :sense-hat-v1_0.pdf |}}
=== la programmation ===
[[Debuter en Python|Debuter en Python]]
[[https://github.com/bennuttall/sense-hat-examples|Des exemples sur github]]
[[https://www.raspberrypi.org/documentation/hardware/sense-hat/README.md| documentation > hardware > sense-hat]]
[[http://pythonhosted.org/sense-hat/api/|Référence des API Sense Hat]]
{{ :sense-hat-examples-master.zip |La librairie des exemples Hense-hat}}
** Les programmes d'essai d'Henri **
#!/usr/bin/python
from sense_hat import SenseHat
sense = SenseHat()
sense.set_rotation(180)
blue = (0, 0, 255)
sense.show_message("Un petit pas pour le R_Pi", text_colour=blue)
#Environnemeent
#!/usr/bin/python
from sense_hat import SenseHat
import time
sense = SenseHat()
while True:
t = sense.get_temperature()
p = sense.get_pressure()
h = sense.get_humidity()
t = round(t, 1) #arrondi à un hiffre aorès la virgule
p = round(p, 1)
h = round(h, 1)
msg = "Temperature = %s, Pression=%s, Humidity= %s" % (t,p,h)
sense.show_message (msg, scroll_speed=0.1)
#motions
#!/usr/bin/python
from sense_hat import SenseHat
import time
sense = SenseHat()
while True:
pitch, roll, yaw = sense.get_orientation(). values()
print ("Elevation/pitch=%s, Roulis/roll=%s, Embardee/yaw=%s" % (pitch,yaw, roll))
time.sleep(2)
#Temperature
#!/usr/bin/python
from sense_hat import SenseHat
sense = SenseHat()
temp = sense.get_temperature()
print("Temperature; %s C" % temp)
#PMIX_COLOUR
from sense_hat import SenseHat
sense = SenseHat()
r = 255
g = 255
b = 255
sense.clear ((r,g,b))
#Eteindre les LED
from sense_hat import SenseHat
sense = SenseHat()
sense.clear()
#!/usr/bin/python
from sense_hat import SenseHat
sense = SenseHat()
sense.clear()
# importer l'image " space_invader.png" dans le repertoire du programme /usr/src/sensehat/examples
sense.load_image("space_invader.png")
#!/usr/bin/python
import time
from sense_hat import SenseHat
sense = SenseHat()
pixels = [
[255, 0, 0], [255, 0, 0], [255, 87, 0], [255, 196, 0], [205, 255, 0], [95, 255, 0], [0, 255, 13], [0, 255, 122],
[255, 0, 0], [255, 96, 0], [255, 205, 0], [196, 255, 0], [87, 255, 0], [0, 255, 22], [0, 255, 131], [0, 255, 240],
[255, 105, 0], [255, 214, 0], [187, 255, 0], [78, 255, 0], [0, 255, 30], [0, 255, 140], [0, 255, 248], [0, 152, 255],
[255, 223, 0], [178, 255, 0], [70, 255, 0], [0, 255, 40], [0, 255, 148], [0, 253, 255], [0, 144, 255], [0, 34, 255],
[170, 255, 0], [61, 255, 0], [0, 255, 48], [0, 255, 157], [0, 243, 255], [0, 134, 255], [0, 26, 255], [83, 0, 255],
[52, 255, 0], [0, 255, 57], [0, 255, 166], [0, 235, 255], [0, 126, 255], [0, 17, 255], [92, 0, 255], [201, 0, 255],
[0, 255, 66], [0, 255, 174], [0, 226, 255], [0, 117, 255], [0, 8, 255], [100, 0, 255], [210, 0, 255], [255, 0, 192],
[0, 255, 183], [0, 217, 255], [0, 109, 255], [0, 0, 255], [110, 0, 255], [218, 0, 255], [255, 0, 183], [255, 0, 74]
]
msleep = lambda x: time.sleep(x / 1000.0)
def next_colour(pix):
r = pix[0]
g = pix[1]
b = pix[2]
if (r == 255 and g < 255 and b == 0):
g += 1
if (g == 255 and r > 0 and b == 0):
r -= 1
if (g == 255 and b < 255 and r == 0):
b += 1
if (b == 255 and g > 0 and r == 0):
g -= 1
if (b == 255 and r < 255 and g == 0):
r += 1
if (r == 255 and b > 0 and g == 0):
b -= 1
pix[0] = r
pix[1] = g
pix[2] = b
while True:
for pix in pixels:
next_colour(pix)
sense.set_pixels(pixels)
msleep(2)
#!/usr/bin/python
import sys
from sense_hat import SenseHat
# To get good results with the magnetometer you must first calibrate it using
# the program in RTIMULib/Linux/RTIMULibCal
# The calibration program will produce the file RTIMULib.ini
# Copy it into the same folder as your Python code
led_loop = [4, 5, 6, 7, 15, 23, 31, 39, 47, 55, 63, 62, 61, 60, 59, 58, 57, 56, 48, 40, 32, 24, 16, 8, 0, 1, 2, 3]
sense = SenseHat()
sense.set_rotation(0)
sense.clear()
prev_x = 0
prev_y = 0
led_degree_ratio = len(led_loop) / 360.0
while True:
dir = sense.get_compass()
dir_inverted = 360 - dir # So LED appears to follow North
led_index = int(led_degree_ratio * dir_inverted)
offset = led_loop[led_index]
y = offset // 8 # row
x = offset % 8 # column
if x != prev_x or y != prev_y:
sense.set_pixel(prev_x, prev_y, 0, 0, 0)
sense.set_pixel(x, y, 0, 0, 255)
prev_x = x
prev_y = y
{{:emulateur_sense_hat.jpg?200|}}[[https://www.raspberrypi.org/blog/sense-hat-emulator/|Emulateur : un Sense-Hat sans Sense-Hat]]
Codes d'exemples en langage Python pour débuter:
#!/usr/bin/python
from sense_hat import SenseHat
sense = SenseHat()
sense.show_message("Hello world!")
#!/usr/bin/python
import time
from sense_hat import SenseHat
sense = SenseHat()
r = 255
g = 0
b = 0
msleep = lambda x: time.sleep(x / 1000.0)
def next_colour():
global r
global g
global b
if (r == 255 and g < 255 and b == 0):
g += 1
if (g == 255 and r > 0 and b == 0):
r -= 1
if (g == 255 and b < 255 and r == 0):
b += 1
if (b == 255 and g > 0 and r == 0):
g -= 1
if (b == 255 and r < 255 and g == 0):
r += 1
if (r == 255 and b > 0 and g == 0):
b -= 1
while True:
sense.clear([r, g, b])
msleep(2)
next_colour()
#!/usr/bin/python
from sense_hat import SenseHat
sense = SenseHat()
sense.set_rotation(180)
red = (255, 0, 0)
sense.show_message("One small step for Pi!", text_colour=red)
#!/usr/bin/python
import sys
from sense_hat import SenseHat
# To get good results with the magnetometer you must first calibrate it using
# the program in RTIMULib/Linux/RTIMULibCal
# The calibration program will produce the file RTIMULib.ini
# Copy it into the same folder as your Python code
led_loop = [4, 5, 6, 7, 15, 23, 31, 39, 47, 55, 63, 62, 61, 60, 59, 58, 57, 56, 48, 40, 32, 24, 16, 8, 0, 1, 2, 3]
sense = SenseHat()
sense.set_rotation(0)
sense.clear()
prev_x = 0
prev_y = 0
led_degree_ratio = len(led_loop) / 360.0
while True:
dir = sense.get_compass()
dir_inverted = 360 - dir # So LED appears to follow North
led_index = int(led_degree_ratio * dir_inverted)
offset = led_loop[led_index]
y = offset // 8 # row
x = offset % 8 # column
if x != prev_x or y != prev_y:
sense.set_pixel(prev_x, prev_y, 0, 0, 0)
sense.set_pixel(x, y, 0, 0, 255)
prev_x = x
prev_y = y