Advertisements

Aide Division qui ne marche pas?

F
fred250
Compagnon
8 Mai 2007
3 043
Vienne Isére 38
  • Auteur de la discussion
  • #1
Bonjour,

J'ai une variable A (appuis d'un bouton poussoir "+" ajoute 1 et un bouton "-" soustrait 1) qui ne peut avoir que trois valeur; -1 , 0 ou 1, je veut diviser cette variable par 10 mais la valeur retourner est toujours 0.00, cette variable me sert a incrémenter ou décrémenter une autre variable B par pas de 0.10 puis je repasse A a 0.00 et ainsi de suite
Toutes mes variables sont en float

J'ai essayer de faire le calcul 1/10 dans un nouveau programme test dédier pour être sur que le soucis ne viennent pas d'un bug dans mon programme et c'est toujours pareil que ce soit sur le moniteur série ou un écran lcd, il doit y avoir une subtilité, mais je ne l'ai pas trouver sur google.
Si quelqu'un a la réponse ça m’arrangerait bien, car la je sais plus quoi tester...
 
Advertisements
C
cr-_-
Compagnon
29 Septembre 2009
831
FR-31 Plaisance du touch
Bonjour

Avec le code c'est plus facile de trouver le problème

Peut être ta_variable += 1.0; // ça force les opérandes en float sinon c'est du int par défaut

Sinon surtout sur les microcontrôleurs 8 bits on évite de travailler en flottant (c'est pas précis et très gourmand en ressources)
Le plus simple si ta résolution doit être de 0.1 tu fait tout tes calculs en int
 
J
Jujucoy
Compagnon
11 Avril 2012
548
Monterau/Fontainebleau/Melun
Bonjour fred250.

Je n'ai pas programmé en Arduino depuis un certain temps, mais l'instruction de division est elle bien la bonne ?

Je sais qu'il y'a des langages ou la division se fait avec un symbole particulier !

De plus tu précise que tes variables sont délcarées en float donc ça devrait le faire.

Jujucoy
 
C
cr-_-
Compagnon
29 Septembre 2009
831
FR-31 Plaisance du touch
Yep il n'y en a qu'une en C, la division flottante et la division entière on le même symbole, c'est l'interface chaise clavier qui doit faire attention (comme beaucoup d'autre choses en C) :)
 
jpbbricole
jpbbricole
Compagnon
26 Mai 2016
1 982
Corsier-sur-Vevey (Vaud)
Bonjour
Un bon truc en Arduino pour travailler des int et des bytes et des float et éviter de tout mettre en float, ce qui gaspille de la mémoire.

Si je veux ajouter le dixième d'une variable integer (ou byte) à une variable flottante il faut "maquiller" la variable integer en flottante comme ceci:
variableFlottante += (float)variableInteger/10;

Un petit bout de programme:
Voilà, pour l'apéro:drinkers:

Cordialement
jpbbricole
 
F
fred250
Compagnon
8 Mai 2007
3 043
Vienne Isére 38
  • Auteur de la discussion
  • #6
Merci pour vos réponses, je retiendrai ta combine jpbbricole.
Finalement il y avait un bug dans la fonction qui incrémentais la variable A lors de l'appuie sur une touche, j'en avais un aussi dans l'incrémentation de ma variable B, et comme si ça suffisait pas en plus j'avais mal placer un lcd.clear, du coup j'avais un 1 parasite d'un message précèdent dans l'affichage d'une variable, ce qui donnait 10.00 au lieu de 0.00 du coup c'était le grand n'importe quoi quand ma variable s'affichais.
Enfin maintenant tout fonctionne parfaitement, mais le programme n'est pas fini, il y a encore quelques heures de prise de tête en vue a cause d'erreur a la con :mrgreen:

Par contre avec ce code j'ai toujours 0.00 comme résultat de la division.... je suis curieux de savoir pourquoi, j'ai pourtant essayer plusieurs syntaxes... surement encore un truc a deux balles!

 
F
fred250
Compagnon
8 Mai 2007
3 043
Vienne Isére 38
Au final c'est toutes ces petites subtilités et les petites connerie dans la syntaxe et la manipulation des variables qui pose le plus de problèmes, la programmation en elle même n'est pas bien compliqué finalement, on trouve facilement de l'info sur les instructions et il y a pas mal de bibliothèques pour éviter tout ce qui est un peut prise de tête dans l'utilisation ou la communication avec des composants externes courant.
 
La dernière réponse à ce sujet date de plus de 6 mois
Advertisements
Haut