Page 1 of 4

Opti-Défi n°4 : codeur MORSE lumineux

Unread postPosted: 23 Feb 2015, 12:05
by grosged
(remplace le sujet initial "décodeur MORSE" qui posait trop de problèmes de conception/compatibilité)


:important: Oyez, braves gens, oyez :important: , ça fait un bail depuis le dernier Opti-Défi !..
Vous êtes partant(e)s pour un 4ème ? :D

Je vous propose de concevoir un codeur MORSE lumineux:

Image

Ce programme sera capable de coder en temps réel : pendant que l'on tapera les lettres et chiffres sur le clavier (la touche
alpha
aura pour fonction de permuter en mode alphabet/chiffres), le programme produira les séries de flash correspondant, avec un débit de transmission déterminé au préalable (lent, normal, rapide)
Le programme ne sera pas ralenti/perturbé par nos entreés clavier : il codera à son rythme ce que l'on sera en train de taper à notre rythme.
Et lorsqu'il n'aura plus de caractère à coder, il se mettra simplement en attente.

On se réfèrera au code morse international, dans sa version de base (l'alphabet + les 10 chiffres).

Image
Comme d'habitude , le programme (100% en TI-Basic) doit prendre le moins d'octets possible !
Alors ?..ça vous tente ?.. :D

Re: Opti-Défi n°4 : décodeur MORSE

Unread postPosted: 23 Feb 2015, 14:05
by Ti64CLi++
Bonne idée ce concours. :D
Je participe. ;)

Re: Opti-Défi n°4 : décodeur MORSE

Unread postPosted: 23 Feb 2015, 18:14
by Wistaro
Je participe !
Super :p

Re: Opti-Défi n°4 : décodeur MORSE

Unread postPosted: 23 Feb 2015, 22:19
by grosged
Okay, Super, les gars ! ;) :D

De mon côté, je viens de faire une première ébauche...Hey ! pas si simple, finalement !

Re: Opti-Défi n°4 : décodeur MORSE

Unread postPosted: 24 Feb 2015, 10:05
by Wistaro
Grosged, t'es sûr que c'est possible ?

La répétition de séquences est un peu random..

Je viens de tester avec une boucle comportant juste quelques éléments d'éléments texte, et les 0 ne sont pas pris en compte, ou une fois sur 10/15. Vraiment bizarre..

Difficile de gèrer sa

Re: Opti-Défi n°4 : décodeur MORSE

Unread postPosted: 24 Feb 2015, 10:17
by grosged
Pas évident... mais c'est possible : le tout c'est de se caler sur la fréquence de répétition de la touche ;)

Je m'explique:
En prenant pour exemple la touche [DEL],
Afin de savoir si getKey est (complètement) à 0 ou (par intermittence) à 23
il nous suffit de tester par "paquet de getKey" , ainsi on sera sur de tomber (au moins) sur l'une des valeurs 23 si [DEL] est pressé ;)
Il faut trouver le nb de getKey idéal...(ni trop, ni trop peu)

EDIT: ... rien de tel qu'un mini-programme :
Code: Select all
Prompt B                    ; combien de getKey va-t-on regrouper?
While 1
0:For(A,1,B:getKey+Ans:End  ; en maintenant [DEL] appuyé
Disp Ans                    ; il s'affichera 23, parfois 0 (=paquet trop petit) ou 46 (=paquet trop grand)
End

Re: Opti-Défi n°4 : décodeur MORSE

Unread postPosted: 24 Feb 2015, 13:00
by Wistaro
Ouai. Mais le paquet varie suivant le modèle de la calculatrice (fréquence du processeur, état...), du coup il sera incompatible sur d'autres modèles...

Re: Opti-Défi n°4 : décodeur MORSE

Unread postPosted: 24 Feb 2015, 16:33
by grosged
C'est vrai que d'un modèle à l'autre, la sensibilité/vivacité diffère....J'avoue que je ne m'en étais pas vraiment soucié :#roll#: , merci de le souligner, Wistaro ;)
On pourrait résoudre ce problème de compatibilité en paramétrant en fonction de la machine, le programme s'auto-adapterait
après avoir deviné le modèle de calculatrice[/u] sur lequel il tourne !
Etant donné que, dès le début du programme, celui-ci attend que l'on maintienne la touche [DEL] pressée
c'est le moment de quantifier le délai entre la pression initiale et la première répétition

Ainsi...
Code: Select all
Repeat getKey:End
0:Repeat getKey:Ans+1:End

En fonction des modèles TI83+, TI84Pocket.fr, TI82, TI83 , Ans contiendra respectivement 46, 50, 58/59, 64/65

J'ai, ensuite testé ce petit programme sur chacunes des machines en question, afin de trouver le nb de getKey nécessaires pour un paquet fiable:
Code: Select all
Prompt B
While 1
0:For(A,1,B:getKey+Ans:End
Disp Ans
End

J'ai tatonné et trouvé (respectivement aux modèles pré-cités) ces valeurs pour B : 7, 8, 9, 11

On pourrait donc déterminer B en fonction de la valeur Ans du tout début , genre
Code: Select all
int(Ans/6)+(Ans>59→B

(formule, pour l'instant, adéquate)

Malheureusement, je ne possède que ces 4 modèles :'( Alors , je compte sur vous, si vous avez d'autres TI-z80, merci ;)

Re: Opti-Défi n°4 : décodeur MORSE

Unread postPosted: 24 Feb 2015, 18:12
by Wistaro
J'ai 2 TI84+, je pourrais donc faire plusieurs tests sur le même modèle pour en vérifier la fiabilité.

J'ai aussi une TI83 (ancien modèle).

Mais encore une fois, il y a un autre problème. Sur ma ti84+, j'ai remarqué que lorsque tu allumes ta calculatrice et que tu lances le programme, il va à sa vitesse maximale. Ensuite, si tu l'interrompt et que tu le relances ensuite, ils ira moins moins vite. Sa n'arrive que chez moi?
Il faut aussi prendre en compte l'état des piles.

J'ignore pourquoi, mais sa risque de poser beaucoup de problèmes.

Re: Opti-Défi n°4 : décodeur MORSE

Unread postPosted: 24 Feb 2015, 19:36
by grosged
Aïe, aïe ! j'avais pas (non plus!) pensé aux piles !
Plus ce problème sur ta TI84+ ...tous ces problèmes de compatibilité...
J'ai bien peur que cet opti-défi soit compromis, quel dommage ! :#roll#:

Il faut vite rebondir !..

Je réfléchis... :=):

:idea: J'ai une idée : un codeur MORSE lumineux ! :D

(voir l'intitulé et l'énoncé, svp)