Arduino #37: Int Vs float

[Total : 0   Moyenne : 0/5]

Objectifs

  1. Comprendre la différente entre une valeur Int et Float
  2. Savoir convertir une valeur Int vers Float
  3. Exemple d’utilisation d’une entrée analogique
  4. Savoir calculer l’erreur relative
  5. Etc.

Int

  • char (8 bits), int (16), byte (16), unsigned int (16), long (32)
  • Valeurs entières, discrets
  • La définie des valeurs (max, min) dépend du type de la variable
  • Le pas d’incrémentation minimale est égal à “1”
  • Le pas de décrémentation minimale est égal à “-1”
  • On ne peut pas avoir un pas fractionnel (Ex: 0.1,1.5, etc.)

float, double

  • Valeurs réelles sur 32 bits (float) ou 64 bits (double)
  • Inclut les valeurs entières
  • On peut avoir un pas fractionnel

float (32 bits) Vs double (64 bits)

format float 32 bits

format float 64 bits

Comment convertir une valeur int en float ?

Val_float=(float)Val_int;

Comment convertir une valeur float en int ?

Val_int=Val_float;          // Conversion automatique

// ou bien

Val_int=(int)Val_float;   // Conversion forcée

Exemple

*/

unsigned int ADC_int, A0_int;

float A0_float=0.00;




void setup() {

  // Init serial port

  Serial.begin(9600);

}




void loop() {

  // Lecture entrée analogique A0

  ADC_int=analogRead(A0);




  // Conversion valeur en tension (INT)

  A0_int=5*ADC_int/1023;




  // Conversion valeur en tension (INT)

  A0_float=5.0*(float)ADC_int/1023.0;




  // Affichage des valeurs

  Serial.print("Tension en V, (INT): ");Serial.println(A0_int); 

  Serial.print("Tension en V,  (FLOAT): ");Serial.println(A0_float);

  Serial.print("Erreur en (mV): ");Serial.println(A0_float-(float)A0_int);

  Serial.print("Erreur relative (%): ");Serial.println(100.0*(A0_float-(float)A0_int)/(float)A0_int);

  Serial.print("\n");




  // Loop delay

  delay(1000);  

}

Articles

Laisser un commentaire

Votre adresse de messagerie ne sera pas publiée. Les champs obligatoires sont indiqués avec *

Anti-Robot *