Корзина
пусто

3-х осевой акселерометр / Датчик ускорения / ±1.5 гр.

3-х осевой акселерометр / Датчик ускорения / ±1.5 гр.

Нажмите, чтобы увеличить
3-х осевой акселерометр / Датчик ускорения / ±1.5 гр.
3-х осевой акселерометр / Датчик ускорения / ±1.5 гр.
Цена: 590 pуб.
Наличие: Временно отсутствует 
Модель: MMA7660FC
Количество: Добавить в корзину
Кабель для модулей Базовая плата Мега Базовая плата 2

3-х осевой акселерометр на базе MMA7660FC от Freescale Semiconductor с цифровым I²C-интерфейсом. Модуль может использоваться в качестве датчика изменения положения и движения устройства, изменяя значение выходного сигнала на выводе прерывания (INT). Продублированные выводы по краям модуля дают возможность монтажа датчика прямиком на плату устройства без использования кабеля.

 

Особенности:

  • Grove совместимый интерфейс
  • трёхосевой MEMS датчик ускорения
  • питание: 3 - 5 В
  • I²C-интерфейс
  • RoHS/WEEE lead-free
  • 20 * 24 мм.

 

3-х осевой акселерометр MMA7660FC для Ардуино

Datasheet MMA7660FC

 

Демо код для Ардуино (0022):

#include <Wire.h>
 
#define MMA7660addr   0x4c
#define MMA7660_X     0x00
#define MMA7660_Y     0x01
#define MMA7660_Z     0x02
#define MMA7660_TILT  0x03
#define MMA7660_SRST  0x04
#define MMA7660_SPCNT 0x05
#define MMA7660_INTSU 0x06
#define MMA7660_MODE  0x07
#define MMA7660_SR    0x08
#define MMA7660_PDET  0x09
#define MMA7660_PD    0x0A
 
 
class Acceleration
{
 public:
 char x;
 char y;
 char z;
};
 
 
void mma7660_init(void)
{
  Wire.begin();
  Wire.beginTransmission( MMA7660addr);
  Wire.send(MMA7660_MODE);   
  Wire.send(0x00);
  Wire.endTransmission();
 
  Wire.beginTransmission( MMA7660addr);
  Wire.send(MMA7660_SR);   
  Wire.send(0x07);  //   Samples/Second Active and Auto-Sleep Mode
  Wire.endTransmission();
 
  Wire.beginTransmission( MMA7660addr);
  Wire.send(MMA7660_MODE);   
  Wire.send(0x01);//active mode
  Wire.endTransmission();
 
}
 
void setup()
{
  mma7660_init();        // join i2c bus (address optional for master)
  Serial.begin(9600);  // start serial for output
}
 
void Ecom()
{
  unsigned char val[3];
  int count = 0;
  val[0] = val[1] = val[2] = 64;
  Wire.requestFrom(0x4c, 3);    // request 3 bytes from slave device 0x4c
 
  while(Wire.available())  
  {
    if(count < 3)
      while ( val[count] > 63 )  // reload the damn thing it is bad
        {
          val[count] = Wire.receive();
 
        }
        count++;
  }
 
  // transform the 7 bit signed number into an 8 bit signed number.
  Acceleration ret;
 
  ret.x = ((char)(val[0]<<2))/4;
  ret.y = ((char)(val[1]<<2))/4;
  ret.z = ((char)(val[2]<<2))/4;
      Serial.print("x = ");
    Serial.println(ret.x,DEC);   // print the reading
 
        Serial.print("y = ");
    Serial.println(ret.y,DEC);   // print the reading
 
        Serial.print("z = ");
    Serial.println(ret.z,DEC);   // print the reading
}
 
char reading = 0;
 
void loop()
{
    Ecom();
 
  Serial.println("*************");
  delay(500);
}