主题中讨论的其他器件:Energia
大家好、我最近开始了一个需要加速计来收集数据的项目。 我们挑选了 MMA 8452Q Arduino 加速计、计划使用 Energia 弥补 TI 和 Arduino 组件之间的差距。 使用教程中的配置和此处的简单设置。 并使用 Energia 参考页面将 Arduino 和 msp432之间的引脚关联起来。
因此、除了 SCL、我们还有6.5、而不是 SDA、我们有6.4。 然后是接地和3.3V。 使用此设置、串行监视器下方的代码不显示任何内容。 我想知道 TI 器件和 Arduino 器件之间是否存在任何其他差异导致此设置无法正常工作。 我们已将接头连接到加速计的分线板、因此我不认为这是连接质量问题。
#include //必须包含用于 I2C
#include 的线库 //包括 SFE_MMA8452Q 库
//通过创建 MMA8452Q 类的实例开始使用该库
//类。 我们将其称为"accel"。 这就是我们将在
这里从//引用的内容。
MMA8452Q accel;
//设置函数只需串行启动并初始化
//加速计。
void setup()
{
Serial.begin(9600);
Serial.println("MMA8452Q 测试代码!");
//选择您的探险!
当涉及//初始化 MMAN8452Q 时、有几个选项:
// 1。 默认初始化。 这将设置加速计//
满量程范围为+/-2g、输出数据速率
为// 800 Hz (最快)。
accel.init();
// 2. 使用满量程设置进行初始化。 您可以设置比例
// 使用 SCALE_2G、SCALE_4G 或 SCALE_8G 作为值。
// 这将分别将刻度设置为+/-2g、4g 或8g。
//accel.init(SCALE_4G);//如果您愿意,请取消注释
// 3. 使用满量程和数据速率设置进行初始化。 如果您
// 希望控制加速计的生产速度
// 数据使用第二个参数中的以下选项之一:
// ODR_800、ODR_400、ODR_200、ODR_100、ODR_50、 ODR_12、
// ODR_6或 ODR_1。
// 设置为800、400、200、100、50、 12.5、6.25或1.56 Hz。
//accel.init(SCALE_8G、ODR_6);
}
//循环函数将只检查
来自//加速计的新数据,并打印出来(如果可用)。
void loop()
{
//使用 accel.available ()函数等待
加速计中的新数据//。
if (accel.available ()
){
//首先,使用 accel.read()读取新变量:
ACCEL.READ();
// accel.read()将更新两组变量。
//* int's x、y 和 z 将存储有符号12位值
//读出加速计。
//* float cx、cy 和 cz 将存储计算值
//从这些12位值加速。 这些变量
//以 g 为单位。
//检查下面的两个函数声明以获得一个示例
//了解如何使用这些变量。
printCalculatedAccels();
//printAccels();//取消注释以打印数字读数
//库还支持纵向/横向检测
MA8452Q 的//。 请查看的此函数声明
//一个如何使用它的示例。
printOrientation();
serial.println();//每次打印新行
。}
}
//该函数演示如何使用 accel.x、accel.y 和
// accel.z 变量。
//在使用这些变量之前,必须调用 accel.read()
//函数!
void printAccels()
{
Serial.print (accel.x, 3);
Serial.print ("\t");
Serial.print (accel.y, 3);
serial.print ("\t");
serial.print (accel.z、3);
serial.print ("\t");
}
//此函
数演示如何使用 accel.cx、accel.cy、//和 accel.cz 变量。
//在使用这些变量之前,必须调用 accel.read()
//函数!
void printCalculatedAccels()
{
Serial.print (accel.cx,3);
Serial.print ("\t");
Serial.print (accel.cy, 3);
serial.print ("\t");
serial.print (accel.cz、3);
serial.print ("\t");
}
//此函
数演示如何使用 accel.readPL()//函数读取//传感器的纵向/横向状态。
void printOrientation()
{//
accel.readPL()将返回一个包含
传感器方向信息//的字节。 它可以是
//纵向 U、纵向 D、横向 R、横向 L 或
//锁定。
字节 pl = accel.readPL();
switch (pl)
{
大小写纵向:
serial.print ("纵向向上");
中断;
案例纵向_D:
serial.print ("纵向向下");
中断;
案例横向_R:
serial.print ("横向右侧");
中断;
案例横向_L:
serial.print ("左横向");
中断;
外壳锁定:
serial.print ("平面");
中断;
}



