Étape 3: Le Code
par Christian Liljedahl
Christian.Liljedahl.dk
Cellules de pesage sont linéaires. Donc une fois que vous avez établi deux paires de données, vous pouvez interpoler le reste.
Étape 1: Télécharger ce croquis sur votre carte arduino
Vous avez besoin de deux charges de bien connaître le poids. Dans cet exemple A = 10 kg. B = 30 kg
Chaussez de charge A
lire la présentation de la valeur analogique (il s’agit d’analogvalA)
Chaussez de charge B
lire la valeur analogique B
Vous entrez des valeurs analogiques propres ici
flotter à loadA = 10 ; kg
int analogvalA = 200 ; lecture analogique prise avec charge A la cellule de pesage
float loadB = 30 ; kg
int analogvalB = 600 ; valeur analogique notée avec charge B sur la cellule de pesage
Télécharger le croquis à nouveau et de confirmer, que le kilo-lecture de la série sortie maintenant est correct, à l’aide de vos charges connues
float analogValueAverage = 0 ;
Combien de fois nous faisons lectures ?
long temps = 0 ; //
int timeBetweenReadings = 200 ; Nous voulons une lecture chaque 200 ms ;
void setup() {}
Serial.Begin(9600) ;
}
void loop() {}
int analogValue = analogRead(0) ;
moyen - nous lisser les lectures un peu
analogValueAverage = 0,99 * analogValueAverage + 0, 01 * analogValue ;
Il est temps d’imprimer ?
if(Millis() > temps + timeBetweenReadings) {}
charge de flotteur = analogToLoad(analogValueAverage) ;
Serial.Print ("analogValue:") ; Serial.println(analogValueAverage) ;
Serial.Print ("load:") ; Serial.println(Load,5) ;
temps = millis() ;
}
}
flotteur analogToLoad(float analogval) {}
utilisant une fonction de carte personnalisée, car la fonction de carte arduino standard utilise seulement int
charge de flotteur = mapfloat (analogval, analogvalA, analogvalB, loadA, loadB) ;
revenir à la charge ;
}
float mapfloat (float x, float in_min, float in_max, float out_min, float out_max)
{
retour (x - in_min) * (out_max - out_min) / (in_max - in_min) + out_min ;
}