ajout quelques scripts de test + WIP morse
pour projet lumières dans la nuit, sense_morse.py
This commit is contained in:
4
sense_clear.py
Normal file
4
sense_clear.py
Normal file
@ -0,0 +1,4 @@
|
|||||||
|
from sense_hat import SenseHat
|
||||||
|
|
||||||
|
sense = SenseHat()
|
||||||
|
sense.clear()
|
104
sense_morse.py
Normal file
104
sense_morse.py
Normal file
@ -0,0 +1,104 @@
|
|||||||
|
#!/usr/bin/python3
|
||||||
|
# -*- coding: utf-8 -*-
|
||||||
|
"""
|
||||||
|
test d'aide à l'écriture de message en morse
|
||||||
|
sur raspberry pi + sense hat
|
||||||
|
|
||||||
|
principe : saisie d'un message en morse via le joystick de la sense hat
|
||||||
|
la grille LED permet d'avoir un retour / analyse de ce qui est saisi
|
||||||
|
|
||||||
|
|
||||||
|
utilisation du joystick de la sense hat
|
||||||
|
gauche = saisir un point
|
||||||
|
droit = saisir un trait
|
||||||
|
haut = valider (selon le contexte : lettre, mot, message), ajouter un espace
|
||||||
|
bas = corriger / annuler la dernière entrée
|
||||||
|
|
||||||
|
utilise la lib morse-talk pour le decodage / encodage
|
||||||
|
$ pip install morse-talk
|
||||||
|
"""
|
||||||
|
|
||||||
|
from sense_hat import SenseHat, ACTION_PRESSED, ACTION_HELD, ACTION_RELEASED
|
||||||
|
from signal import pause
|
||||||
|
import time, morse_talk
|
||||||
|
|
||||||
|
|
||||||
|
DOT = '.'
|
||||||
|
DASH = '-'
|
||||||
|
PAUSE = ' '
|
||||||
|
END_CHAR = ' '
|
||||||
|
END_WORD = ' '
|
||||||
|
|
||||||
|
|
||||||
|
class MorseSenseHatKeyer:
|
||||||
|
|
||||||
|
def __init__(self):
|
||||||
|
self.sense = SenseHat()
|
||||||
|
# self.sense.stick.direction_up = pushed_up
|
||||||
|
# self.sense.stick.direction_down = pushed_down
|
||||||
|
self.sense.stick.direction_left = self.pushed_left
|
||||||
|
self.sense.stick.direction_right = self.pushed_right
|
||||||
|
self.sense.stick.direction_any = self.refresh
|
||||||
|
self.message_ascii = ''
|
||||||
|
self.current_morse_char = ''
|
||||||
|
self.sense.show_message("morse ready")
|
||||||
|
|
||||||
|
def pushed_left(self, event):
|
||||||
|
if event.action != ACTION_RELEASED:
|
||||||
|
self.show_dot()
|
||||||
|
self.current_morse_char += '.'
|
||||||
|
self.show_char()
|
||||||
|
|
||||||
|
def pushed_right(self, event):
|
||||||
|
if event.action != ACTION_RELEASED:
|
||||||
|
self.show_dash()
|
||||||
|
self.current_morse_char += '-'
|
||||||
|
self.show_char()
|
||||||
|
|
||||||
|
def pushed_down(self, event):
|
||||||
|
# correction
|
||||||
|
if event.action != ACTION_RELEASED:
|
||||||
|
self.current_morse_char = ''
|
||||||
|
|
||||||
|
def pushed_up(self, event):
|
||||||
|
# selon le cas : validation de la lettre, du mot etc
|
||||||
|
if event.action != ACTION_RELEASED:
|
||||||
|
if self.current_morse_char == '': # pas de lettre en cours, validation du mot, et affichage
|
||||||
|
self.sense.show_message(self.message_ascii)
|
||||||
|
elif self.current_morse_char != '': # validation de la lettre
|
||||||
|
self.message_ascii += morse_talk.decode(self.current_morse_char)
|
||||||
|
self.current_morse_char = ''
|
||||||
|
|
||||||
|
def show_dot(self, duration=0.1):
|
||||||
|
self.sense.clear()
|
||||||
|
for x in range(3, 5):
|
||||||
|
for y in range(3, 5):
|
||||||
|
self.sense.set_pixel(x, y, 255, 255, 255)
|
||||||
|
time.sleep(duration)
|
||||||
|
|
||||||
|
def show_dash(self, duration=0.1):
|
||||||
|
self.sense.clear()
|
||||||
|
for x in range(1, 7):
|
||||||
|
for y in range(3, 5):
|
||||||
|
self.sense.set_pixel(x, y, 255, 255, 255)
|
||||||
|
time.sleep(duration)
|
||||||
|
|
||||||
|
def refresh(self, event):
|
||||||
|
pass
|
||||||
|
# self.sense.clear()
|
||||||
|
|
||||||
|
def show_char(self):
|
||||||
|
char = morse_talk.decode(self.current_morse_char)
|
||||||
|
self.sense.clear()
|
||||||
|
self.sense.show_letter(char)
|
||||||
|
|
||||||
|
|
||||||
|
if __name__ == "__main__":
|
||||||
|
try:
|
||||||
|
keyer = MorseSenseHatKeyer()
|
||||||
|
# waiting for jostick events and directing them to keyer
|
||||||
|
pause()
|
||||||
|
except (KeyboardInterrupt, SystemExit) as err:
|
||||||
|
sense = SenseHat()
|
||||||
|
sense.show_message('out')
|
||||||
|
sense.clear()
|
41
sense_stick.py
Normal file
41
sense_stick.py
Normal file
@ -0,0 +1,41 @@
|
|||||||
|
from sense_hat import SenseHat, ACTION_PRESSED, ACTION_HELD, ACTION_RELEASED
|
||||||
|
from signal import pause
|
||||||
|
|
||||||
|
x = 3
|
||||||
|
y = 3
|
||||||
|
sense = SenseHat()
|
||||||
|
|
||||||
|
def clamp(value, min_value=0, max_value=7):
|
||||||
|
return min(max_value, max(min_value, value))
|
||||||
|
|
||||||
|
def pushed_up(event):
|
||||||
|
global y
|
||||||
|
if event.action != ACTION_RELEASED:
|
||||||
|
y = clamp(y - 1)
|
||||||
|
|
||||||
|
def pushed_down(event):
|
||||||
|
global y
|
||||||
|
if event.action != ACTION_RELEASED:
|
||||||
|
y = clamp(y + 1)
|
||||||
|
|
||||||
|
def pushed_left(event):
|
||||||
|
global x
|
||||||
|
if event.action != ACTION_RELEASED:
|
||||||
|
x = clamp(x - 1)
|
||||||
|
|
||||||
|
def pushed_right(event):
|
||||||
|
global x
|
||||||
|
if event.action != ACTION_RELEASED:
|
||||||
|
x = clamp(x + 1)
|
||||||
|
|
||||||
|
def refresh():
|
||||||
|
sense.clear()
|
||||||
|
sense.set_pixel(x, y, 255, 255, 255)
|
||||||
|
|
||||||
|
sense.stick.direction_up = pushed_up
|
||||||
|
sense.stick.direction_down = pushed_down
|
||||||
|
sense.stick.direction_left = pushed_left
|
||||||
|
sense.stick.direction_right = pushed_right
|
||||||
|
sense.stick.direction_any = refresh
|
||||||
|
refresh()
|
||||||
|
pause()
|
12
sense_temp.py
Normal file
12
sense_temp.py
Normal file
@ -0,0 +1,12 @@
|
|||||||
|
#!/usr/bin/python3
|
||||||
|
# -*- coding: utf-8 -*-
|
||||||
|
from sense_hat import SenseHat
|
||||||
|
|
||||||
|
sense = SenseHat()
|
||||||
|
|
||||||
|
temp = sense.get_temperature()
|
||||||
|
|
||||||
|
message = "{0:.2f}°".format(temp)
|
||||||
|
|
||||||
|
for i in range(0,3):
|
||||||
|
sense.show_message(message)
|
Reference in New Issue
Block a user