DIY Remote Controller för Hexdrake (5 / 7 steg)
Steg 5: Hur man använder accelerometern MMA7361?:
Det är en breakout styrelse för Freescale's MMA7361L tre-axeln analoga MEMS accelerometer. Sensorn kräver en mycket låg mängd kraft och har en g-Välj ingång som växlar accelerometern mellan ±1.5 g och ±6g mätning. Andra funktioner inkluderar ett viloläge, signal luftkonditionering, en 1-polig lågpassfilter, temperaturkompensation, självtest och 0 g-detect som upptäcker linjär fritt fall. Zero-g offset och känslighet är fabriksinställn och kräver inga externa enheter.
Det är specifikationerna är:
- Stöder 2.2V ~ 3.6V eller 5V spänning ingång.
- Två valbara mätområden (±1.5 g, ±6g)
- Set av brödunderläggen friendly - 0.1" pitch header
- Låg strömförbrukning: 400 µA
- Viloläge: 3 µA
- Låg spänning drift: 2,2 V - 3,6 V
- Hög känslighet (800 mV/g på 1,5 g)
- Snabbt slå på gång (0.5 ms aktiverar svarstid)
- Självtest för fritt fall upptäcka diagnos
- 0 Detect g-för fritt fall-skydd
- Signal att villkora med lågt passera filtret
- Robust konstruktion, hög chocker överlevnadsförmåga
Med AcceleroMMA7361 biblioteket är det så lätt att använda denna lilla modul. De kommandon du kan använda med detta bibliotek är:
- void börjar)
- void börjar (int sleepPin int selfTestPin, int zeroGPin, int gSelectPin, int xPin, int yPin, int zPin)
- int getXRaw (
- )
- getXRaw(): returnerar rådata från x-axeln analoga I/O port för Arduino som ett heltal
- int getYRaw (
- )
- getYRaw(): returnerar rådata från y-axeln analoga I/O port för Arduino som ett heltal
- int getZRaw (
- )
- getZRaw(): returnerar rådata från z-axeln analoga I/O port för Arduino som ett heltal
- int getXVolt (
- )
- getXVolt(): returnerar spänningen i millivolt från x-axeln analoga I/O port för Arduino som ett heltal
- int getYVolt (
- )
- getYVolt(): returnerar spänningen i millivolt från y-axeln analoga I/O port för Arduino som ett heltal
- int getZVolt (
- )
- getZVolt(): returnerar spänningen i millivolt från z-axeln analoga I/O port för Arduino som ett heltal
- int getXAccel (
- )
- getXAccel(): returnerar accelerationen av x-axeln som en int (1 G = 100,00)
- int getYAccel (
- )
- getYAccel(): returnerar y-axeln acceleration som en int (1 G = 100,00)
- int getZAccel (
- )
- getZAccel(): returnerar accelerationen av z-axeln som en int (1 G = 100,00)
- void getAccelXYZ (int _XAxis, int _YAxis, int _ZAxis)
- getAccelXYZ (int _XAxis, int _YAxis, int _ZAxis) returnerar alla axlar samtidigt som pekare
- int getTotalVector (
- )
- getTotalVector returnerar omfattningen av den totala acceleration vektorn som ett heltal
- void setOffSets (int xOffSet, int yOffSet, int zOffSet)
- void kalibrera)
- void setARefVoltage (dubbel _refV)
- void setAveraging (int avg)
- setAveraging (int avg): anger hur många prover måste beräknas i getAccel standard är 10.
- int getOrientation)
- void setSensitivity (booleskt sensi)
- setSensitivity ställer in känsligheten till +/-1,5 G (hög) eller +/-6 G (låg) med en boolesk hög (1,5 G) eller låg (6 G)
- void sova ()
- sömn kan enheten sömnen (när enheten sover redan här gör ingenting)
- void wake ()
- kölvattnet aktiverar enheten efter sömn (när enheten inte sover här gör ingenting) det finns en 2 ms fördröjning, på grund av aktivera svarstid (Datablad: typ 0.5 ms, max 2 ms)
Biblioteket har 3 enkla exempel. En blir accelerationer i varje axel, andra blir vinkeln och tredje spänningen. Jag använde "\Data" för att få vinkeln för varje axel othe controller att kontrollera lutningen:
< p > #include < AcceleroMMA7361.h >< /p >< p > AcceleroMMA7361 accelero;
int x;
int y;
int z;
void setup()
{
Serial.BEGIN(9600);
Accelero.BEGIN (8, 7, 6, 5, A5, A6, A7);
accelero.setSensitivity (hög); //sets känslighet för +/-6G
Accelero.Calibrate();
} < /p >< p > void loop()
{
x = accelero.getXRaw();
y = accelero.getYRaw();
z = accelero.getZRaw();
Serial.Print ("\nx:");
Serial.Print(x);
Serial.Print ("\ty:");
Serial.Print(y);
Serial.Print ("\tz:");
Serial.Print(z);
Delay(500); (gör det lättläst)
} < /p >