Paso 6: Más programación
Una vez que tienes las lecturas, la última parte es decidir qué lecturas a utilizar. Opté por usar la lectura de xAvg.Ahora es sólo el proceso de agregar una declaración simple 'if' y entonces programar las luces. Asegúrese de indicar el LED en la parte superior al lado de las clavijas del acelerómetro. Y también al declararlas salida o entrada.
Aquí está el código que he utilizado.
Código adaptado de programación de interactividad (pp. 234-235) por Joshua Noble ***
flower1 int = 5; Pasadores LED
int flower2 = 6;
int flower3 = 9;
flower4 int = 10;
flower5 int = 11;
int xpin = A3; eje x del acelerómetro
int ypin = A4; eje y
zpin int = A5; eje z (sólo en modelos de 3 ejes)
xVal int = 0;
yVal int = 0;
zVal int = 0;
int xVals [8]; una amplia gama de los últimos 8 x coordenadas lecturas
int yVals [8]; una matriz de los último 8 lecturas de coordenadas y
int zVals [8]; una matriz de las últimas 8 lecturas de coordenadas z
int xAvg = 0; Finalmente leeremos el valor de x
yAvg int = 0;
int zAvg = 0;
int currentSample = 0;
void setup()
{
pinMode (flower1, salida); configurar el pinModes para que las luces se apaga y enciende.
pinMode (flower2, salida);
pinMode (flower3, salida);
pinMode (flower4, salida);
pinMode (flower5, salida);
pinMode (xpin, entrada);
pinMode (ypin, entrada);
pinMode (zpin, entrada);
Serial.Begin(9600); Inicializa la comunicación con los equipos
}
void loop()
{
Utilizamos currentSample como un índice en la matriz e incremento en la
final de la loop)() principal, así que ver si necesitamos restablecer en el
principio del bucle
Si (currentSample == 8) {}
currentSample = 0;
}
xVal = analogRead(xpin);
yVal = analogRead(ypin);
zVal = analogRead(zpin);
Esto almacena 8 valores. Básicamente, almacena
el pasado 8 leer los valores y lo continuamente promedios (más adelante en el código).
xVals [currentSample] = xVal;
yVals [currentSample] = yVal;
zVals [currentSample] = zVal;
Aquí es donde los valores son lo que usted
finalmente obtener los valores últimos 8
para (int i = 0; i < 8; i ++) {}
xAvg += xVals [i];
yAvg += yVals [i];
zAvg += zVals [i];
}
Estos van a leer los primeros 7 ciclos, pero que no hará una gran diferencia
a menos que necesite leer inmediatamente el valor del acelerómetro
Calcular el promedio
xAvg = (xAvg 20);
yAvg = (yAvg / 20);
zAvg = (zAvg 20);
Imprimir la media
Serial.Print(xAvg);
Serial.Print("");
Serial.Print(yAvg);
Serial.Print("");
Serial.println(zAvg);
Delay(100);
Si (xAvg < 180) //set if instrucción a reaccionar según sus lecturas.
{
digitalWrite (flower1, HIGH); las luces se enciende y se apaga les otra vez
Delay(300);
digitalWrite (flower2, HIGH);
digitalWrite (flower1, LOW);
Delay(300);
digitalWrite (flower3, HIGH);
digitalWrite (flower2, bajo);
Delay(300);
digitalWrite (flower4, HIGH);
digitalWrite (flower3, bajo);
Delay(300);
digitalWrite (flower4, LOW);
}
else if (xAvg > 190 & & xAvg < 195)
{
digitalWrite (flower4, HIGH);
Delay(500);
digitalWrite (flower4, LOW);
Delay(500);
digitalWrite (flower3, HIGH);
Delay(500);
digitalWrite (flower3, bajo);
Delay(500);
digitalWrite (flower2, HIGH);
Delay(500);
digitalWrite (flower2, bajo);
Delay(500);
digitalWrite (flower1, HIGH);
Delay(500);
digitalWrite (flower1, LOW);
Delay(500);
}
else if (xAvg > 195 & & xAvg < 215)
{
digitalWrite (flower1, HIGH);
digitalWrite (flower3, HIGH);
digitalWrite (flower2, bajo);
digitalWrite (flower4, LOW);
Delay(600);
digitalWrite (flower1, LOW);
digitalWrite (flower2, HIGH);
digitalWrite (flower3, bajo);
digitalWrite (flower4, HIGH);
Delay(600);
}
currentSample ++; incremento de la muestra
}