Träna: En interaktiv fitness motivation system (7 / 10 steg)
Steg 7: Programmering ditt plagg | Accelerometer behandlingen
Arduino maskinvara används
1 - LilyPad SimpleSnap
1 - LilyPad SimpleSnap Protoboard
1 - LilyPad XBee (breakout styrelser)
1 - LilyPad XBee 1mW Trace antenn - serie 1
1 - LilyPad programmerare
1 - LilyPad Accelerometer ADXL335
Accelerometer kod
Den nedan koden var anpassad från Arduino Accelerometer exemplet.
Dessa konstanter beskriver stiften. De kommer inte ändra:
CONST int xpin = A5; / / x-axeln av accelerometern
CONST int ypin = A2; / / y-axeln
CONST int zpin = A3; / / z-axel (endast på 3-axlig modeller)
int sampleDelay = 500. / / antalet millisekunder mellan behandlingen
void setup()
{
/ / initiera den seriell kommunikationen:
Serial.BEGIN(9600);
Se till att analog-till-digital-omvandlare tar dess referens spänning från
AREF pin
pinMode (xpin, ingång);
pinMode (ypin, ingång);
pinMode (zpin, ingång);
}
void loop()
{
float oldy = 0;
float tröskel = 0;
int x = analogRead(xpin);
lägga till en liten fördröjning mellan pin avläsningar. Jag läste att du skall
göra detta men har inte testat vikten
Delay(1);
int y = analogRead(ypin);
lägga till en liten fördröjning mellan pin avläsningar. Jag läste att du bör göra detta men har inte testat vikten
Delay(1);
int z = analogRead(zpin);
/ * zero_G är den behandlingen som vi förväntar oss från sensorn när den upptäcker ingen acceleration.
Subtrahera värdet från sensorn läser för att få en skiftade sensor läsa. */
flyta zero_G = 512;
/ * skala är antalet enheter vi förväntar oss den sensor behandlingen att förändras när det
accelerationen längs en axel ändras av 1G. Dela den skiftade sensor läsa av
skala för att få acceleration i Gs. * /
flyta skala = 102,3;
/*Serial.Print (((float) x - zero_G) / skala);
Serial.Print("\t"); */
för detta projekt, vi skriver ut ut "y" värden, detta bidrar till att avgöra tröskelvärdet:
tröskel = oldy - ((float) y - zero_G) / skala;
Serial.Print ("y =");
Serial.Print (((float) y - zero_G) / skala);
Serial.Print("; tröskel = ");
Serial.println(Threshold);
/ * Serial.print (((float) z - zero_G) / skala);
Serial.Print("\n"); */
om (tröskelvärde > 1,3) / / värdet av din tröskel ändras, måste du testa och avgöra vad din tröskel kommer att
steg ++;
Serial.Print ("steg =");
Serial.Print(Steps);
fördröjning innan nästa läsning:
Delay(sampleDelay);
}