Nombre a 4 chiffres

electrique5

Senior Member
Bonjour
j'ai récemment terminée la construction d'un flipper virtuel mais j'ai remarqué qu'il me manquait une chose au niveau du monnayeur.
un système de comptabilisation des pièces et je voudrait modifier le programme que j'ai fait qui gère les crédit en gardant en mémoire les pièces inséré dans 2 eeprom
seul les pièces de 0.50/1.00 et 2.00 € sont accepté dans le monnayeur.

mon souci je voudrait mettre 2 eeprom dans des variables a part une pour les entier l'autre les décimal
j'insère donc une pièce de 1.00€ par exemple et je voudrait faire d'abord une lecture de la première eeprom

Code:
read 0,varA
auquel j'ajoute +1 a la valeur

Code:
let varA = varA+1
puis j'enregistre
Code:
write 0,varA
puis j'affiche la valeur sur écran LCD
Code:
bintoascii varA,b8,b9,b10
serout C.1,N2400_4,(254,128,b8,b9,b10,"             ")
ca fonctionne bien comme ca le souci c'est que je ne peut pas enregistrée un nombre de 4 chiffres
je voudrait donc enregistrer jusqu'a 9999 pour la première eeprom et la seconde servira donc pour les centime donc c'est soit 00 ou 50
ce qui donnerais un résultat sur LCD 0000.00

j'aurais besoin de vos lumière si c'est faisable ou pas ?
Je vous remercie par avance.
 

BESQUEUT

Senior Member
Pour enregistrer un nombre supérieur à 255, varA doit être déclaré en WORD.
Du coup, il faut le préciser à la lecture et à l'écriture dans l'EEPROM :
read 0, WORD varA
De plus il faut fournir une variable de plus à bintoascii pour les dizaines de milliers.

Remarque : 10 000 € en pièces de 1€ dans un flipper, ça doit faire un joli tas ! :p
 

electrique5

Senior Member
J'ai essayé ca mais ca ne fonctionne pas
au départ j'ai mis

Code:
let w1 =1854
pour avoir un nombre de 4 chiffre au départ c'est juste pour testé

ensuite
Code:
let w1 = w1 + 1
write 0, word w1
pour ajouter +1 et l'écrire dans une eeprom 0

ensuite
Code:
read 0, word w1
pour lire et récupérer le nombre dans l'eeprom

c'est après au niveau du LCD que ca merdouille
j'ai mis cela

Code:
bintoascii W1,b8,b9,b10,b11
serout C.1,N2400_4,(254,128,b8,b9,b10,b11,"           ")
mais en mettant ce code je ne peux pas programmer le picaxe il y a une erreur mais je ne sais pas quoi

j'ai essayé
Code:
bintoascii w1,b8,b9,b10,b11,b12
serout C.1,N2400_4,(254,128,b8,b9,b10,b11,b12,"         ")
mais je n'est rien sur l'écran
 

MGU

Senior Member
Bonjour,

Avec un word, bintoascii demande obligatoirement 5 arguments pour les 5 chiffres (0 à 65535) sinon: erreur

Le dernier essai devrait fonctionner.

Donne le total du code, pour voir..

MM
 

electrique5

Senior Member
effectivement ca fonctionne c'est bon
mon souci d'écran c'est con mais c'était juste mon petit câble sur ma carte pour montage rapide c'est dessouder a la jonction du câble et du pin.
mais la c'est bon ca fonctionne très bien
 

electrique5

Senior Member
La j'ai un autre souci je peux pas utiliser en même temps 2 fois la même opération avec des variables différente

exemple :

Code:
read 0, word w0
let w0 = w0 + 1
write 0, word w0
bintoascii w0,b2,b3,b4,b5,b6
serout C.1,N2400_4,(254,128,b3,b4,b5,b6,"")
ce code fonctionne bien il ajoute bien +1 et enregistre bien dans l'eeprom et servira pour les nombre entier

je fait pareille avec une autre variable VarT qui servira pour les décimal mais celui ci j'ai pas besoin de variable word car il stockera soit 0 ou 50 uniquement
Code:
read 1,varT
let VarT = VarT + 1
write 1,VarT
bintoascii VarT,b2,b3,b4
serout C.1,N2400_4,(254,192,b3,b4,"  ")
séparé les 2 codes fonctionne
mais ensemble c'est a dire

Code:
read 0, word w0
let w0 = w0 + 1
write 0, word w0
bintoascii w0,b2,b3,b4,b5,b6
serout C.1,N2400_4,(254,128,b3,b4,b5,b6,"")

read 1,varT
let VarT = VarT + 1
write 1,VarT
bintoascii VarT,b2,b3,b4
serout C.1,N2400_4,(254,192,b3,b4,"  ")

l'eeprom VarT dans write 1 ne s'enregistre pas
 

BESQUEUT

Senior Member
l'eeprom VarT dans write 1 ne s'enregistre pas
En fait, le write 0,word w0
occupe les emplacements 0 et 1 de la mémoire (2 octets...)
L'autre variable doit être enregistrée et lue à l'emplacement N°2...
read 2,varT
write 2,VarT

Autre solution :
compter le nombre de pièces de 50c (entre 1 et 19998) et diviser par 2 au moment de l'affichage en €...
Pour afficher 0 ou 50 après la virgule, il suffit de vérifier le bit N°0 du compteur de pièces.
 
Last edited:
Top