Étape 2: Code, il vers le haut
Avant d’entrer dans le code de l’esquisse, vous devez savoir qu’il y a beaucoup de variabilité dans les valeurs de résistance pour chaque LDR (bien, certainement à 0,36 $ chaque), et je veux les lectures est aussi proche les uns des autres que possible, en termes d’échelle. Ainsi, partie du code est destinée à la lecture pour chacun de la LDR pour mettre à niveau les lectures de poids.
Mon approche est peut-être maladroit, mais il semble fonctionner.
J’utilise pour les boucles pour initialiser les broches analogiques de l’Arduino :
for(int indexA = 0; indexA < 6; indexA++) { pinMode(indexA, INPUT); }
puis j’établir la moyenne pour tous les LDR et la pondération pour chaque LDR (contre cette moyenne)
void averageLDR()<br>{ int tmpAvg = 0; for(int indexA = 0; indexA < 6; indexA++) { int tmpVal = 0; for(int indexB = 0; indexB < 100; indexB++) { tmpVal += analogRead(indexA); } LDR[indexA] = tmpVal / 100; ldrAvg += LDR[indexA]; } ldrAvg = ldrAvg / 6; for(int indexA = 0; indexA < 6; indexA++) { LDR[indexA] = ldrAvg - LDR[indexA]; } }
La moyenne se faite en prenant 100 lectures pour chaque LDR, en additionnant les valeurs et en divisant par 100. La moyenne est écrite dans un tableau de 6 éléments. Les valeurs du tableau sont additionnés, puis divisés par 6 pour donner une moyenne globale pour le LDR, enfin, le montant individuel de la LDR est ajouté à la matrice comme la moyenne globale - la moyenne individuelle. Ainsi, vous vous retrouvez avec une moyenne globale (ldrAverage) et 6 coefficients correcteurs (LDR[6]) qui s’appliqueront à chaque analogRead, ainsi :
void loop()<br>{ for(int indexA = 0; indexA < 6; indexA++) { inputValue = analogRead(indexA) + LDR[indexA]; String se = String("LDR: " + String(indexA) + " Value: " + String(inputValue)); Serial.println(se); } Serial.println("------------------------------"); delay(3000); }
L’esquisse regarder simplement de conserve à la lecture de chacun de la LDR séquentiellement.
Ce que vous vous retrouvez avec est une sortie série qui vous donne quelques informations d’initialisation sur le processus de calcul de la moyenne, puis les lectures de LDR.
Vous pouvez voir comment cela peut ensuite être appliqué à un esquisse de suivi de mouvement.
Obtenir la valeur la plus élevée lecture, voilà où est le centre du mouvement, vous pourriez obtenir le prochain voisin plus haut pour voir si le mouvement est juste à gauche ou à droite de la LDR.
Si deux LDR est équivalentes, la motion est centrée entre ces deux LDR... et ainsi de suite.
Ainsi, au lieu d’envoyer juste la sortie de la série, vous pouvez faire quelque chose de sympa avec eux... et aller tourner une tourelle !