Aide Division qui ne marche pas?

  • Auteur de la discussion fred250
  • Date de début
F

fred250

Compagnon
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...
 
C

cr-_-

Compagnon
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
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
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) :)
 
J

jpbbricole

Compagnon
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
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
Ah ba oui c'est un truc a deux balles :smt021
Merci.

A plus
 
F

fred250

Compagnon
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.
 

Sujets similaires

J
Réponses
113
Affichages
23 356
sabeldom
S
V
Réponses
62
Affichages
39 187
Dardar88
Dardar88
J
Réponses
1
Affichages
1 819
pinou29
pinou29
J
Réponses
18
Affichages
4 382
jpbbricole
J
S
Réponses
112
Affichages
21 732
manum01
M
Haut