DRO Pac chinois et lecture déportée avec Arduino

L

Loulou

Ouvrier
Bonjour à tous,


Je me suis récemment mis à 'l'Arduino" et souhaitait utiliser un Pac chinois 150mm pour afficher les déplacement en Y sur mon tour.

Je me suis inspiré des travaux de Scrachi sur ce forum ICI et de Martin's ICI

Je ne souhaite utiliser que 1 Pac pour des raisons d'encombrement sur mon tour, l'axe X plus long étant "lu " par une règle chinoise avec son écran déporté.

J'utilise une carte Nano et un écran 16x2 en I2C. (la photo est trompeuse, je n'utilise pas l'alim. à gauche, uniquement l'USB actuellement)
IMG_0402.JPG


Je fais apparaitre la cote "Y" sur la 1ere ligne
et sur 2e ligne la valeur correspondante par rapport au Diamètre de la pièce. (je ne sais pas si c'est bien clairement exprimé ... :smt017)

Ça a l'air de fonctionner pas trop mal, mais je rencontre un petit souci de code sur lequel je butte.
Il me semble avoir "codé" un affichage avec 2 décimales, mais lorsque je lis des valeurs > à 100.00 mm et que je reviens en arrière, je me retrouve avec 3 décimales

IMG_0409.JPG
IMG_0403.JPG
IMG_0411.JPG



En Pj mon code , si quelqu'un vois comment limiter l'affichage à 2 chiffres après la virgule, je suis preneur. :-D


Par ailleurs, le montage est très simple.

2 résistances de 10k Ohms pour passer du 3,3V au 1,5V
4 résistances 10k Ohms et 2 transistors Types 2N3904 pour traiter le signal envoyé sur 2 entrées de l'arduino (Pin 7 & 8 dans mon cas)
Branchement classique en I2C du LCD 16x2


Merci d'avance pour vos retours.
 

Fichiers joints

  • Code DRO Y.txt
    2.4 KB · Affichages: 141
Z

zekill

Apprenti
joli,
pour ton bug d'affichage:
c'est pas tout simplement le dernier chiffre à droite affiché à la dernière valeur plus grand que 100.00 qui reste à l'écran ?
 
S

speedjf37

Compagnon
Bonjour,


Pour limiter la tension vers le pac j'utilise le seuil d'une LED rouge.
Renvoyer les valeurs sur le port série , si elles sont bonnes (2 décimales) c'est uniquement un bug d'affichage.

Voir la réponse précédente !!!

JF
 
T

topette79200

Apprenti
bonjour
ton problème d'affichage vient du fait que quand tu affiches 12.23 mm tu utilises 5 "cases " le point y compris
quand tu affiches 123.45 mm tu utilises 6 "cases",mais quand tu remets 12.34 mm la 6ieme case n'est pas effaccée donc le "5" reste affiché.
je pense que le plus simple est qu'a chaque nouvel affichage tu affiches dans la 6ieme case un "blanc" c'est a dire un espace, comme ça tu est sur d'être bon a tous les coups.
ton code avec les lignes modifiées

lcd.backlight();
lcd.setCursor(0, 0);
lcd.print("Y = ");
lcd.setCursor(9,0); // remise du caractere en position 9 avec " "
lcd.print(" ");

lcd.setCursor(4, 0);
lcd.print(result,2);
lcd.setCursor(10, 0);
lcd.print(" mm");


lcd.setCursor(0, 1);
lcd.print(char(0));
lcd.setCursor(2,1);
lcd.print("=");
lcd.setCursor(9,1); // remise du caractere en position 9 avec " "
lcd.print(" ");

lcd.setCursor(4, 1);
lcd.print(resultD,2);
lcd.setCursor(10, 1);
lcd.print(" mm =");
lcd.setCursor(15, 1);
lcd.print(char(0));
 
J

jpbbricole

Compagnon
Beau boulot!
Renvoyer les valeurs sur le port série , si elles sont bonnes (2 décimales) c'est uniquement un bug d'affichage.
+1
Voilà ce que j'ai réalisé, et le prochain développement sera un Arduino qui permettra de lire, en même temps un pac et une règle chinoise.

Cordialement
jpbbricole
 
Dernière édition par un modérateur:
V

vince_007

Compagnon
Salut,

Écrire le texte de cette façon posera toujours problème, il est préférable d'utiliser une chaine de caractère formatée, en clair la fonction sprintf().
Je te laisse chercher sur Google car je ne code pas sur Arduino mais sur PIC mais j'ai trouvé ça rapidement : http://forum.arduino.cc/index.php?topic=304101.0
 
L

Loulou

Ouvrier
Bonsoir à tous,


et merci pour vos indications. :smt023


@ 59JAG : merci, ton code fonctionne bien.

@ topette79200 : merci, mais j'ai du modifier ton code pour que la 3e décimale disparaisse, ci-dessous ma modif :

lcd.backlight();
lcd.setCursor(0, 0);
lcd.print("Y = ");
lcd.setCursor(8,0); // remise du caractere en position 8 avec " " (2 espaces)
lcd.print
(" ");
lcd.setCursor(4, 0);
lcd.print(result,2);
lcd.setCursor(10, 0);
lcd.print(" mm");

lcd.setCursor(0, 1);
lcd.print(char(0));
lcd.setCursor(2,1);
lcd.print("=");
lcd.setCursor(8,1); // remise du caractere en position 8 avec " " (2 espaces)
lcd.print
(" ");
lcd.setCursor(4, 1);
lcd.print(resultD,2);
lcd.setCursor(10, 1);
lcd.print(" mm =");
lcd.setCursor(15, 1);
lcd.print(char(0));

@_vince007 : merci pour l’indication, mais "sprintf()" est d'un niveau trop complexe pour moi actuellement (débutant en programmation).

Reste à présent à affiner la commande de rétroéclairage, la réalisation du boitier et de l'alim, la commande de RaZ et à monter le dispositif sur mon tour ...

Je vous tiendrai informé de l'avancée du projet.

Bonne soirée à tous
@+
 
L

Loulou

Ouvrier
Super !

Merci 59JAG :-D

Je vais essayer de l'intégrer ce soir sur mon montage.
Tes commentaires (à moi débutant) me sont très utiles pour en comprendre la syntaxe,
merci encore.

@+
 
L

Loulou

Ouvrier
Bonjour à tous,
et en particulier à 59JAG :-D

La fin des vacances et la rentrée ont été bien plus chargés que prévu ! .... :???:
J'ai enfin pu reprendre mon projet.
La fonction de JAG et la modif du code font leur effet :smt038 : affichage propre à présent :prayer: merci à JAG.

J'attends à présent les boitiers commandés pour intégrer l'afficheur et l'électronique et monter le tout sur mon tour.
Je vais certainement abandonner la liaison I2C (la petite carte derrière l'afficheur) entre la carte Nano et l'afficheur LCD pour réduire l'épaisseur du montage dans le boitier et passer à une liaison série.
A voir lorsque les boitiers seront arrivés.

En Pj, le code modifié.

Bonne soirée à tous
@+
 

Fichiers joints

  • Code DRO Y_Sept18.txt
    3.1 KB · Affichages: 107

Sujets similaires

T
Réponses
36
Affichages
5 017
Tristan l'apprenti
T
fauxjetons
Réponses
96
Affichages
74 448
hercule.toto
hercule.toto
G
Réponses
140
Affichages
17 729
gaston83
G
mathias
Réponses
61
Affichages
11 547
mathias
mathias
S
Réponses
112
Affichages
23 043
manum01
M
J
Réponses
113
Affichages
25 052
sabeldom
S
A
Réponses
5
Affichages
2 413
jpbbricole
J
W
Réponses
31
Affichages
9 788
jpbbricole
J
G
Réponses
5
Affichages
2 824
gaston83
G
Haut