寻找加速度计来控制继电器

时间:2015-08-02 03:10:45

标签: arduino hardware hardware-programming

我实际上是非常新的DIY硬件项目,需要帮助寻找加速度计,当加速度计状态从移动到停止或停止移动时,可以向我的Arduino板发送信号。我想这样做的原因是为了节省电路板上的电池。我希望它只在加速计状态处于运行状态时才能运行,如果状态改变为停止,则电路板应运行一段时间然后再进入休眠状态。我有以下挑战要考虑。

  1. 加速度计应该消耗更少的电池作为整体目的 这个实验是节省电池。
  2. 加速度计必须独立于电路板,就像电源管理扩展一样,它将根据状态控制Arduino的电源。
  3. 必须便宜。
  4. 非常感谢任何帮助。提前谢谢。

1 个答案:

答案 0 :(得分:2)

您必须使用加速度计的外部中断。 所以你必须注意你的传感器模块提供这样的中断功能。 一个好的模块可以是例如来自Adafruit的Triple-Axis Accelerometer w/ I2C/SPI(基于ADXL芯片),价格为17.50美元。

此外,你需要一个带中断引脚的Arduino。大多数Arduinos至少有两个中断引脚(数字0(数字引脚2)和1(数字引脚3))。

PKMC构建了使用加速度计中断Arduino的必要步骤,如下所示:

  1. 将ADXL中断引脚1连接到Arduino引脚2或引脚3
  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);
    
    1. 如果在设置代码中选择了Pin 3,则分配Arduino INT0(interrupt0)(或INT1(interrupt0)
    2. attachInterrupt(0, accelInterrupt, RISING);
      
      1. 在主循环
      2. 之前写入INT0中断例程
        void accelInterrupt(){
            //...
        }
        

        并提供example(以及code)加速度计和neopixels。

        我相信这个例子可以帮到你!