==== 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