From 320333cc1686ace65336d67eb907b962b3cd7d59 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Je=CC=81re=CC=81mie=20DUCASTEL?= Date: Tue, 26 May 2020 22:14:02 +0200 Subject: [PATCH] ajout commentaires --- sense_morse.py | 77 ++++++++++++++++++++++++++------------------------ 1 file changed, 40 insertions(+), 37 deletions(-) diff --git a/sense_morse.py b/sense_morse.py index fe2d5b8..c2b19e1 100644 --- a/sense_morse.py +++ b/sense_morse.py @@ -6,30 +6,25 @@ 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 - +une fois le message construit, transmission via la matrice LED 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 +haut = saisir un point +bas = saisir un trait +droite = valider (selon le contexte : lettre, mot, message), ajouter un espace +gauche = corriger / annuler la dernière entrée -utilise la lib morse-talk pour le decodage / encodage +utilise la lib morse-talk pour le decodage / encodage. pour l'installation : $ pip install morse-talk + +utilisation : +$ python sense_morse.py """ 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: green = [0, 255, 0] @@ -38,16 +33,19 @@ class MorseSenseHatKeyer: def __init__(self): self.sense = SenseHat() + # association des evenements générés par le joystick de la SenseHat + # aux méthodes de traitement internes self.sense.stick.direction_up = self.pushed_up self.sense.stick.direction_down = self.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 = '' + # initalisation des variables de traitement + self.message_ascii = '' # message construit sous forme ASCII + self.current_morse_char = '' # caractère morse en cours de construction def pushed_left(self, event): - """ correction """ + """ correction (réinitialise caractère courant) """ # correction if event.action != ACTION_RELEASED: self.current_morse_char = '' @@ -62,48 +60,49 @@ class MorseSenseHatKeyer: self.validate_char() def pushed_down(self, event): - """ ajout trait """ - if event.action == ACTION_HELD: - self.show_dash() - if event.action == ACTION_RELEASED: - self.add_dash() + """ ajout d'un trait """ + if event.action == ACTION_HELD: # tant que le bouton est pressé + self.show_dash() # affichage d'un trait + if event.action == ACTION_RELEASED: # au relachement + self.add_dash() # ajout du trait si possible def pushed_up(self, event): """ ajout point """ - if event.action == ACTION_HELD: - self.show_dot() + if event.action == ACTION_HELD: # tant que le bouton est pressé + self.show_dot() # affichage d'un point if event.action == ACTION_RELEASED: - self.add_dot() - + self.add_dot() # ajout du point si possible def show_dot(self, rgb=None): + # affichage d'un point sur la matrice LED rgb = rgb or [150, 150, 150] self.sense.clear() for x in range(3, 5): for y in range(3, 5): self.sense.set_pixel(x, y, rgb) - # time.sleep(duration) def show_dash(self, rgb=None): + # affichage d'un trait sur la matrice LED rgb = rgb or [150, 150, 150] self.sense.clear() for x in range(1, 7): for y in range(3, 5): self.sense.set_pixel(x, y, rgb) - # time.sleep(duration) def refresh(self, event): pass # self.sense.clear() def show_char(self, char, rgb=None): - """ affiche un caractère """ + """ affiche un caractère dans la couleur définie (gris par defaut)""" rgb = rgb or [150, 150, 150] self.sense.clear() self.sense.show_letter(char, rgb) def add_dot(self): - """ ajout d'un point au caractère courant """ + """ ajout d'un point au caractère courant + tant que le caractère courant reste interpretable + sinon, affichage d'une erreur et reinitialise le caractère courant """ try: self.current_morse_char += '.' char = morse_talk.decode(self.current_morse_char) @@ -113,7 +112,9 @@ class MorseSenseHatKeyer: self.current_morse_char = '' def add_dash(self): - """ ajout d'un trait au caractère courant """ + """ ajout d'un trait au caractère courant + tant que le caractère courant reste interpretable + sinon, affichage d'une erreur et reinitialise le caractère courant """ self.current_morse_char += '-' try: char = morse_talk.decode(self.current_morse_char) @@ -122,13 +123,15 @@ class MorseSenseHatKeyer: self.show_char('X', self.red) self.current_morse_char = '' + def show_error(self): + pass def reset_char(self): """ annule le caractère courant """ - pass + self.current_morse_char = '' def validate_char(self): - """ valide la lettre courante """ + """ valide la lettre courante, et donne un retour visuel """ char = morse_talk.decode(self.current_morse_char) self.show_char(char, self.green) self.message_ascii += char @@ -138,13 +141,13 @@ class MorseSenseHatKeyer: """ affiche le message courant """ -if __name__ == "__main__": +if __name__ == "__main__": # lors de l'execution du script en standalone try: keyer = MorseSenseHatKeyer() keyer.sense.show_message("morse://", 0.02) - # waiting for jostick events and directing them to keyer + # waiting for joystick events and directing them to keyer pause() - except (KeyboardInterrupt, SystemExit) as err: + except (KeyboardInterrupt, SystemExit) as err: # lors d'un CTRL+C pour interruption sense = SenseHat() - sense.show_message('out', 0.02) + sense.show_message('bye', 0.02) sense.clear()