Je vous présente tout d'abord le peit afficheur LCD récupéré sur un lecteur dvd de salon :
(image trouvée sur le net)
marque : KEHONG
modèle numéro : KHN70241
(source : http://sell.bizrice.com/selling-leads/928548/7-digits-led-display-Use-in-DVD-VCD.html)
Nous avons donc affaire à 7 afficheurs 7 segments dans un même afficheur, avec quelques leds supplémentaire (comme MP :D, play, pause, ...)
Après quelques mesures, il s'avère que l'afficheur n'est autre qu'une matrice à led, dont j'ai noté le fonctionnement :
On a 17 broches sous le composant.
Les pattes 10 à 16 correspondent aux 7 digits :
10 -> 3ème chiffre
11 -> 1er chiffre
12 -> 2ème chiffre
13 -> 4ème chiffre
14 -> 5ème chiffre
15 -> 6ème chiffre
16 -> 7ème chiffre
Les pattes 1 à 7 correspondent aux 7 segments de chaque chiffres.
La patte 17 correspond aux logos, et aux ':'.
D'autres paramètres sont possibles mais la liste est longue !
Les pattes 10 à 17 sont actives au 0v et les pattes 1 à 8 sont actives au +5v
Voilà pour ce qui est de la présentation de l'afficheur, maintenant, je passe à la pratique !
Je relie les pattes de 1 à 7 sur les sorties 12 à 6 (respectivement) de mon arduino nano.
Je relie les pattes de 10 à 16 sur les sorties 4,3,5,2,1(tx),0(rx) (respectivement) de mon nano également, je n'utilise pas la patte 17 du LCD pour l'instant.
Maintenant, le code !
Et c'est là que j'aurais besoins de votre aide pour m'organiser !
Préoccupons nous uniquement des chiffre pour ce topic.
Etant donné que l'on ne peut allumer q'un seul segment à la fois, nous sommes obligé de passer par du multiplexage (charlieplexing), et n'ayant pas de multiplexeur ou autre composant spécial pour réaliser celà, je dois me débrouiller avec le code.
Donc, j'ai utilisé des fonctions pour chaque étapes, çà évite de taper un code de 30km de long pour écrire 3 mots...
Le problème par contre, c'est que du coup çà me fait un gros code en un bloc et qui n'est pas franchement optimisé, si vous y jetez un oeil, chaque fonction correspond à un caratère (chiffre ou lettre) que je peut assigner à un digit (D1, D2, D3, D4, D5, D6 ou D7), ce qui m'oblige à utiliser la fonction boucle pour incrémenter une variable it. Cette variable it sert à cadencer l'affichage de mes lettres (ex : si 0<it<100, on écrit 'hey'), on utilise une fonction reset à chaque opération pour faire du multiplexage, exemple :
Pour écrire la lettre o, on allume le segment g, puis on reset, puis le segmentc, puis on reset, puis segment d, puis reset et enfin segment e puis reset.
Mes questions :
Comment puis-je procéder pour éviter l'utilisation de la fonction reset ?
Comment puis-je convertir mes fonctions en librairie interne (dans nouvel onglet), car je n'ai pas compris les tutos trouvés sur le net.
Si quelqu'un peut m'aiguiller, ce serais vachement sympas !
Edit : voilà le code, je l'avais oublié : arduinolcddvd - Pastebin.com