Go Down

Topic: calcule d'une vitesse (Read 1 time) previous topic - next topic

Bonjour,

Voila, je voudrais calculer une vitesse avec mon arduino en l'occurrence représenter par des boutons poussoir en PULL DOWN, donc le premier récupère le temps en microseconde ou milliseconde (mon choix) le second récupère le temps aussi et je réaliser la soustraction des deux pour obtenir le temps entre les deux actions et donc après je voudrais utiliser la formule V = D/T pour obtenir le vitesse sauf que le résultat est un entier donc je n'est pas un chiffre a virgule et moi je recherche ceci.

Savez vous si c'est possible de réaliser un résultat avec une virgules ?
Be-creation.fr
Arduino UNO SMD Edition - Raspberry PI B 512 Mb

Christian_R

Il faut choisir le bon type de variable (float)
http://arduino.cc/fr/Main/SyntheseTypesDonnees
Christian

#2
Apr 18, 2013, 10:30 pm Last Edit: Apr 18, 2013, 11:10 pm by san41 Reason: 1
ok, merci de la réponse c'est bien ce que j'avais oublier.

Sinon autre question

V = D/T donc dans mon exemple j'ai 3 seconde donc 30000012 ms environ donc divisée par 100000 µM pour les 10 cm et j'obtient -0.010 et non 0.033 alors que la formule est la division normal.

par exemple ceci   vitesse = (100000/ 30000012); l'arduino renvoi 0
Be-creation.fr
Arduino UNO SMD Edition - Raspberry PI B 512 Mb

Rovhell

Prends une calculette et vérifie, l'arduino à raison! En quelle unité veux-tu afficher la vitesse?

Moi je rechercher en M/S à partir des microseconde,

même me calcule comme  vitesse = (100000 / 3000000); j'ai 0.00000 m/s alors que dans la calculatrice j'ai 0.03333333.
Be-creation.fr
Arduino UNO SMD Edition - Raspberry PI B 512 Mb

Christian_R

Je présume que tu as mis : vitesse = distance/temps;
au lieu de : vitesse= (float)distance/temps;
Christian

Ok, merci cela répond bien à ma question, je test demain et je dirais ce que sa donne.

Merci  :)
Be-creation.fr
Arduino UNO SMD Edition - Raspberry PI B 512 Mb

Bonjour,

Donc avec le float , c'est mieux mais j'obtient toujours pas le bon résultat avec la division V = D/T.

Dans mon exemple :
D = 100000
T = 3000012 ms

Ce qui donne 0.033 et l'arduino calcule -0.01036

Be-creation.fr
Arduino UNO SMD Edition - Raspberry PI B 512 Mb

Christian_R

Ca sent le dépassement de capacité (mauvais choix de type de variable pour D et T) :smiley-mr-green:
Un entier (int) doit être compris entre -32767 et 32767
http://arduino.cc/en/Reference/Int
Quote
x = 32767;
   x = x + 1;       // x now contains -32,768 - rolls over

donc ça produit des négatifs et n'importe quoi
Christian

#9
Apr 19, 2013, 12:23 pm Last Edit: Apr 19, 2013, 12:25 pm by san41 Reason: 1
Ok, je commence à avoir un doute par rapport au choix.

Un choix du type long serais préférable ?

Edit : Oui type long cela ne pose plus de problème, je découvre l'arduino depuis 4 jours et me rend compte des limites quand je tombe dessus :)

Merci
Be-creation.fr
Arduino UNO SMD Edition - Raspberry PI B 512 Mb

fdufnews

Les constantes en float s'écrivent avec le point décimal sinon elles sont prises pour des entiers.

vitesse = (100000.0 / 3000000.0)

Go Up