您必须使用加速度计的外部中断。所以你必须注意你的传感器模块提供了这样的中断能力。一个好的模块可以是Adafruit 的带 I2C/SPI(基于 ADXL 芯片)的三轴加速度计,售价 17.50 美元。
此外,您需要一个带有中断引脚的 Arduino。大多数 Arduino 至少有两个中断引脚(数字 0(在数字引脚 2 上)和 1(在数字引脚 3 上))。
PKMC构建了使用加速度计中断 Arduino 的必要步骤,如下所示:
- 将 ADXL 中断引脚 1 连接到 Arduino 引脚 2 或引脚 3
- 设置加速度计的参数(例如)
//set ADXL interrupts
//enable single tap interrupt
//writeRegister(ADXL345_REG_INT_ENABLE, 0b01000000);
//enable single and double tap interrupt
writeRegister(ADXL345_REG_INT_ENABLE, 0b01100000);
//map all interrupts to pin1
writeRegister(ADXL345_REG_INT_MAP, 0b00000000);
// single tap configuration
writeRegister(ADXL345_REG_DUR, 0x1F); // 625us/LSB
writeRegister(ADXL345_REG_THRESH_TAP, 48);
writeRegister(ADXL345_REG_TAP_AXES, 0b111); // enable tap detection on x,y,z axes
//double tap configuration
writeRegister(ADXL345_REG_LATENT, 0x50);
writeRegister(ADXL345_REG_WINDOW, 0xff);
- 在设置代码中分配 Arduino INT0 (interrupt0)(或 INT1 (interrupt0),如果您选择了 Pin 3)
attachInterrupt(0, accelInterrupt, RISING);
- 在主循环之前编写 INT0 中断程序
void accelInterrupt(){
//...
}
并提供了一个带有加速度计和新像素的示例(和代码)。
我相信这个例子可以帮助你!