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

Loulou
Loulou
Ouvrier
22 Déc 2006
373
Bordeaux
  • Auteur de la discussion
  • #1
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
Z
zekill
Apprenti
25 Jan 2009
99
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
15 Oct 2009
2 283
indre et loire
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
25 Juil 2011
203
79
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));
 
jpbbricole
jpbbricole
Compagnon
26 Mai 2016
2 265
Corsier-sur-Vevey (Vaud)
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
9 Nov 2010
1 873
Fronton (31)
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
 
Loulou
Loulou
Ouvrier
22 Déc 2006
373
Bordeaux
  • Auteur de la discussion
  • #8
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
@+
 
Loulou
Loulou
Ouvrier
22 Déc 2006
373
Bordeaux
  • Auteur de la discussion
  • #10
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.

@+
 
Loulou
Loulou
Ouvrier
22 Déc 2006
373
Bordeaux
  • Auteur de la discussion
  • #11
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
Haut