Arduino नैनो - MMA8452Q 3-एक्सिस 12-बिट / 8-बिट डिजिटल एक्सेलेरोमीटर ट्यूटोरियल

Arduino नैनो - MMA8452Q 3-एक्सिस 12-बिट / 8-बिट डिजिटल एक्सेलेरोमीटर ट्यूटोरियल: 4 कदम

1. अरुडिनो नैनो

2. MMA8452Q

लिंक: http://www.controleverything.com/content/Accelorometer?sku=MMA8452Q_I2CS

3. आई सी केबल

लिंक: http://www.controleverything.com/content/I2C-Cables?sku=I2CAFF3

4. Arduino नैनो के लिए 4.C शील्ड

http://www.controleverything.com/content/I2C-Master?sku=ANI2C

चरण 2: कनेक्शन:

Arduino नैनो के लिए एक I2C ढाल लें और इसे धीरे से नैनो के पिंस पर धकेलें।

फिर I2C केबल के एक छोर को MMA8452Q सेंसर से और दूसरे छोर को I2C ढाल से कनेक्ट करें।

ऊपर चित्र में कनेक्शन दिखाए गए हैं।

चरण 3: कोड:

MMMA8452Q के लिए arduino कोड को हमारे github रिपॉजिटरी- ControlEverythingCommunity से डाउनलोड किया जा सकता है

यहाँ उसी के लिए लिंक है:

http: //github.com/ControlEverythingCommunity/MMA8 ...

MMA8452Q की डेटशीट यहां देखी जा सकती है:

http: //s3.amazonaws.com/controleverything.media/c ...

हम Arduino बोर्ड के साथ सेंसर के I2c संचार की सुविधा के लिए लाइब्रेरी वायर.h को शामिल करते हैं।

आप यहां से कोड भी कॉपी कर सकते हैं, यह इस प्रकार है:

// एक मुफ्त-इच्छा लाइसेंस के साथ वितरित किया गया।

// इसे किसी भी तरह से आप चाहें, लाभ या मुफ्त में उपयोग करें, बशर्ते यह अपने संबंधित कार्यों के लाइसेंस में फिट बैठता है।

// MMA8452Q

// यह कोड ControlEverything.com से उपलब्ध MMA8452Q_I2CS I2C मिनी मॉड्यूल के साथ काम करने के लिए बनाया गया है।

// http: //www.controleverything.com/content/Accelor ...

#शामिल

// MMA8452Q I2C पता 0x1C (28) है

#define Addr 0x1C

व्यर्थ व्यवस्था()

{

// प्रारंभिक I2C संचार मास्टर के रूप में

Wire.begin ();

// प्रारंभिक सीरियल संचार, बॉड दर = 9600 निर्धारित करें

Serial.begin (9600);

// प्रारंभ I2C ट्रांसमिशन

Wire.beginTransmission (प);

// कंट्रोल रजिस्टर का चयन करें

Wire.write (0x2A);

// स्टैंडबाई मोड

Wire.write (0x00);

// I2C ट्रांसमिशन बंद करो

Wire.endTransmission ();

// प्रारंभ I2C ट्रांसमिशन

Wire.beginTransmission (प);

// कंट्रोल रजिस्टर का चयन करें

Wire.write (0x2A);

// सक्रिय मोड

Wire.write (0x01);

// I2C ट्रांसमिशन बंद करो

Wire.endTransmission ();

// प्रारंभ I2C ट्रांसमिशन

Wire.beginTransmission (प);

// कंट्रोल रजिस्टर का चयन करें

Wire.write (0x0E);

// सेट रेंज + से- 2 जी

Wire.write (0x00);

// I2C ट्रांसमिशन बंद करो

Wire.endTransmission ();

देरी (300);

}

शून्य लूप ()

{

अहस्ताक्षरित int डेटा [7];

// डेटा के 7 बाइट्स का अनुरोध करें

वायर.requestFrom (एड्र, 7);

// डेटा के 7 बाइट्स पढ़ें

// staus, xAccl lsb, xAccl msb, yAccl lsb, yAccl msb, zAccl lsb, zAccl msb

अगर (वायर.उपलब्ध) (== ailable)

{

data [0] = wire.read ();

data [1] = wire.read ();

data [2] = wire.read ();

data [3] = wire.read ();

data [4] = wire.read ();

data [5] = wire.read ();

data [6] = wire.read ();

}

// डेटा को 12-बिट में बदलें

int xAccl = ((डेटा [1] * 256) + डेटा [2]) / 16;

अगर (xAccl> 2047)

{

xAccl - = 4096;

}

int yAccl = ((डेटा [3] * 256) + डेटा [4]) / 16;

अगर (yAccl> 2047)

{

yAccl - = 4096;

}

int zAccl = ((डेटा [5] * 256) + डेटा [6]) / 16;

अगर (zAccl> 2047)

{

zAccl - = 4096;

}

// आउटपुट डेटा सीरियल मॉनिटर के लिए

Serial.print ("एक्स-एक्सिस में त्वरण:");

Serial.println (xAccl);

Serial.print ("वाई-एक्सिस में त्वरण:");

Serial.println (yAccl);

Serial.print ("जेड-एक्सिस में त्वरण:");

Serial.println (zAccl);

देरी (500);

}

चरण 4: आवेदन:

MMA8452Q में विभिन्न अनुप्रयोग हैं जिनमें ई-कम्पास एप्लिकेशन, स्टेटिक ओरिएंटेशन डिटेक्शन शामिल हैं जो पोर्ट्रेट / लैंडस्केप, अप / डाउन, लेफ्ट / राइट, बैक / फ्रंट पोजीशन आइडेंटिफिकेशन, नोटबुक, ई-रीडर, और लैपटॉप टम्बल एंड फ्रीफ़ेशन स्नेह, रियल-टाइम शामिल हैं वर्चुअल रियलिटी और गेमिंग 3 डी यूजर पोजिशन फीडबैक, रियल टाइम एक्टिविटी एनालिसिस जैसे पेडोमीटर स्टेप काउंटिंग, HDD के लिए फ्रीफॉल ड्रॉप डिटेक्शन, डेड-रेकिंग GPS बैकअप और बहुत कुछ सहित ओरिएंटेशन डिटेक्शन।