带arduino的流量传感器

时间:2014-02-13 15:16:15

标签: arduino sensor flow

我使用以下代码读取传感器的流量。当我将传感器插入端口2时,一切正常。但是,当我将其更改为第7位(在硬件和软件中)时,它没有给我任何结果,但仍然继续测量第2位。有谁知道为什么? 这是代码

#include <SD.h>

volatile int Signal_1; //measuring the rising edges of the signal
int MeasuredFlow_1;     // the converted output signal
int flowmeter_1 = 7;    // Assigning pin 7 to input of flow meter 1 (input)

void rpm ()     //This is the function that the interupt calls 
{ 
  Signal_1++;  //This function measures the rising and falling edge of the hall effect sensors signal
} 
                // The setup() method runs once, when the sketch starts
void setup() //
{ 
  pinMode(flowmeter_1, INPUT);      //initializes digital pin 7 as an input
  Serial.begin(9600);              //This is the setup function where the serial port is initialised,
  attachInterrupt(0, rpm, RISING); //attaching the interrupt
} 
// the loop() method runs over and over again,
// as long as the Arduino has power
void loop ()    
{
  Signal_1 = 0;                  //Set NbTops to 0 ready for calculations
  sei();                          //Enables interrupts
  delay (1000);                   //Wait 1 second
  cli();                          //Disable interrupts
  MeasuredFlow_1 = (Signal_1 * 60 / 7.5);  //(Pulse frequency x 60) / 7.5Q, = flow rate in L/hour 
  Serial.print (MeasuredFlow_1, DEC);       //Prints the number calculated above
  Serial.print (" L/hour\r\n");   //Prints "L/hour" and returns a  new line
}

1 个答案:

答案 0 :(得分:0)

在arduino UNO上,attachInterrupt仅适用于引脚ID 0(引脚数字2)和ID 1(引脚数字3),您不能将其用于任何其他引脚。

直接使用寄存器可以在任何引脚上使用CHANGE中断,但是这可能会因为中断超过组8的引脚而适得其反,所以如果你正在用数字引脚0和1(用于串行)监听组,你将会有很多可能导致麻烦的中断。

请参阅https://github.com/lestofante/arduinoSketch/blob/master/QuadricotteroCompleto/RX/InputPin.cpp,了解我如何使用此方法只读取某些特定的引脚