Paso 5: programación
Ahora aquí está la parte difícil. Para realmente obtener lecturas precisas acelerómetro que necesita llevar la falda o utilizar su proyecto de la manera ha destinado a ser utilizado. De lo contrario obtendrás lecturas absolutamente inútiles. Utilizar Arduino como plataforma de programación. Así que puso en la falda, puede conectarlo a la computadora y prance alrededor de su sótano llevar su ordenador portátil durante un minuto o dos.Con el fin de obtener lecturas necesita tener cargado el código en el Lilypad y después dio vuelta en el serial monitor (la lupa en la esquina superior derecha).
Aquí está el código que he utilizado. Promedia las lecturas del acelerómetro para hacerlo más estable.
Código adaptado de programación de interactividad (pp. 234-235) por Joshua Noble ***
int led1 = 5;
int led2 = 6;
led3 int = 9;
led4 int = 10;
led5 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 (led1, salida);
pinMode (led2, salida);
pinMode (led3, salida);
pinMode (led4, salida);
pinMode (led5, salida);
pinMode (xpin, entrada);
pinMode (ypin, entrada);
pinMode (zpin, entrada);
Serial.Begin(9600);
}
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);
currentSample ++; incremento de la muestra
Si (xAvg > 570 & & xAvg < 590)
{
digitalWrite (LED 1, HIGH);
Delay(100);
digitalWrite (LED 1, bajo);
Delay(100);
digitalWrite (led2, HIGH);
Delay(100);
digitalWrite (led2, LOW);
Delay(100);
digitalWrite (LED 3, alto);
Delay(100);
digitalWrite (LED 3, bajo);
}
}