Paso 2: Código para arriba
Antes de entrar en el código del bosquejo, usted necesita saber que hay mucha variabilidad en los valores de resistencia para cada LDR (bueno, ciertamente en $0,36), y quiero que las lecturas que tan cerca entre sí como sea posible, en términos de escala. Por lo tanto, parte del código está destinado a las lecturas de cada uno de lo LDR a nivel de las lecturas de peso.
Mi enfoque puede ser torpe, pero parece que funciona.
Estoy usando para los bucles para inicializar los pines analógicos de Arduino:
for(int indexA = 0; indexA < 6; indexA++) { pinMode(indexA, INPUT); }
entonces trabajar hacia fuera de la media para todos los LDR y la ponderación para cada LDR (contra eso promedio)
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 media se hace tomando 100 lecturas para cada LDR, suma de los valores y dividiendo por 100. La media se escribe en un array de 6 elementos. Los valores de la matriz se suman y divide por 6 para dar un promedio general para el LDR, finalmente, el valor individual de la LDR se agrega a la matriz como el promedio global - el promedio individual. Por lo tanto, terminan con un promedio general (ldrAverage) y 6 ponderaciones (LDR[6]) que se aplicará a cada analogRead, así:
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); }
El bosquejo mirar simplemente mantiene en cada uno de lo LDR leyendo secuencialmente.
Lo que usted termina con es una salida serial que te da información sobre el proceso de promediación y entonces las lecturas del LDR inicialización.
Puedes ver cómo esto puede aplicarse a un esquema de seguimiento del movimiento.
Obtener el valor más alto de la lectura, que es donde está el centro de la propuesta, usted podría conseguir el vecino más próximo para ver si el movimiento es solo izquierda o justo de la LDR.
Si dos LDR es equivalentes, el movimiento se centra entre estas dos LDR... y así sucesivamente.
Así, en lugar de simplemente enviar la salida a la serie, se puede hacer algo ingenioso con ellos... e ir girar una torreta!