Fånga rörelse med en Arduino Accelerometer w / XBee Comms (11 / 12 steg)
Steg 11: Rörelsedetektorn
Detta steg beskriver hur registeransvarige beslutar vilken typ av rörelse som händer. Genom provning, är var fast besluten att, som refererade från viloläge, detta är det mönster som registeransvarige rörelse följer. (G = större, L = mindre, S = samma)
Ideal: 510, 497, 627
Höger 611, 492, 521... G, S, L
Lämnade 408, 496, 530... L, S, L
Vidarebefordra 512, 598, 526... S, G, L
Omvänd 514, 395, 536... S, L, L
Vad detta säger är att, till exempel i ordning för det för att vara motion till höger, X behandlingen måste vara större än tomgång, Y läsning måste vara om samma och Z läsning måste vara mindre än tomgång. Samma slags logik följer för andra typer av motion. I följande kod använder programsatsen switch/fall enkel logik för att fastställa förslaget. Standardskiftläget är förklarar ett "fel" och inte skicka en motion om av någon anledning accelerometern är inte upptäcks eller förlorat.
fall 0:
LCD.Clear(); lcd.setCursor(0,0);
LCD.Print("Move"); lcd.setCursor (0, 1);
om (xRaw > idleX & & yRaw > idleminY & & yRaw < idlemaxY & & zRaw < idleZ) {
LCD.Print("Right");
}
annars om (xRaw < idleX & & yRaw > idleminY & & yRaw < idlemaxY & & zRaw < idleZ) {
LCD.Print("left");
}
annars om (xRaw > idleminX & & xRaw < idlemaxX & & yRaw > idleY & & zRaw < idleZ) {
LCD.Print("forward");
}
annars om (xRaw > idleminX & & xRaw < idlemaxX & & yRaw < idleY & & zRaw < idleZ) {
LCD.Print("reverse");
}
annat {
LCD.Print("Idle");
}