ماژول MMA7455 یک هدر برد سنسور MMA7455 می باشد . MMA7455 قادر به اندازه گیری شتاب در سه محور مختصات است . از این ماژول می توانید در ربات ها و… استفاده کنید . به طور معمول سنسور های اندازه گیری شتاب بر پایه MEMS ساخته می شوند . MMA7455 نیز بر پایه MEMS است ، در واقع در داخل پکیچ این سنسور ها مکانیزم های مکانیکی نانومتری وجوددارد که در ارتباط با بخش های الکترونیکی هستند . اندازه گیری شتاب می تواند پارامتر های دیگری همچون سرعت و اندازه حرکت را مشخص کنید . MMA7455 دارای دو پین وقفه خارجی است که می تانید آن ها را برای تشخیض ضربه و یا شتاب های خاصی تنظیم کنید . این ماژول از دو مدل ارتباط I2C و SPI سه سیمه پشتیبانی میکند لذا به راحتی می توانید آن را توسط برد های آردوینو راه اندازی کنید . در این آموزش به راه اندازی این ماژول توسط آردوینو خواهیم پرداخت .
پین های ماژول MMA7455 :
1- VIN پین تغذیه ماژول می باشد .
2- INT1 و INT2 پین های وقفه خارجی می باشند .
3-CLK پین SCL در ارتباط I2C و پین کلاک در ارتباط SPI می باشد .
4- DATA پین SDA در ارتباط I2C و پین دیتا در ارتباط sPI می باشد .
5- CS جهت فعال سازی SPI می باشد .
راه اندازی MMA7455 با آردوینو :
در کد های زیر از I2C برای ارتباط با ماژول استفاده شده است لذا باید پین های A5 و A4 آردوینو را به ترتیب به SCL و SDA متصل کنید .
#if defined(ARDUINO) /* Mandatory includes for Arduino */ #include <SPI.h> #include <Wire.h> #endif #include <MMA_7455.h> /* Case 1: Accelerometer on the I2C bus (most common) */ MMA_7455 accel = MMA_7455(i2c_protocol); /* Case 2: Accelerometer on the SPI bus with CS on pin 2 */ // MMA_7455 accel = MMA_7455(spi_protocol, A2); int16_t x10, y10, z10; float xg, yg, zg; void setup() { /* Set serial baud rate */ Serial.begin(9600); /* Start accelerometer */ accel.begin(); /* Set accelerometer sensibility */ accel.setSensitivity(2); /* Verify sensibility - optional */ if(accel.getSensitivity() != 2) Serial.println("Sensitivity failure"); /* Set accelerometer mode */ accel.setMode(measure); /* Verify accelerometer mode - optional */ if(accel.getMode() != measure) Serial.println("Set mode failure"); /* Set axis offsets */ /* Note: the offset is hardware specific * and defined thanks to the auto-calibration example. */ accel.setAxisOffset(0, 0, 0); } void loop() { /* Get 10-bit axis raw values */ x10 = accel.readAxis10('x'); y10 = accel.readAxis10('y'); z10 = accel.readAxis10('z'); /* Get 10-bit axis values in g */ xg = accel.readAxis10g('x'); yg = accel.readAxis10g('y'); zg = accel.readAxis10g('z'); /* Display current axis values */ Serial.print("X: "); Serial.print(x10, DEC); Serial.print("\tY: "); Serial.print(y10, DEC); Serial.print("\tZ: "); Serial.print(z10, DEC); Serial.print("\tXg: "); Serial.print(xg, DEC); Serial.print("\tYg: "); Serial.print(yg, DEC); Serial.print("\tZg: "); Serial.print(zg, DEC); Serial.println(); delay(500); }