2014-02-13 3 views
0

Я использую следующий код для чтения потока через датчик. Когда я подключил датчик к порту 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 
} 

ответ

0

на Arduino UNO, attachInterrupt работает только для контактов ID 0 (контактный цифровой 2) и ID 1 (контактный цифровой 3), вы не можете использовать его для любого другого пальца.

С помощью register direclty вы можете использовать прерывание CHANGE на любом выводе, но это может иметь неприятные последствия, поскольку прерывание находится над группой og 8 pin, поэтому, если вы слушаете группу с собачьим pin = и 1 (используется для последовательного), вы будет много прерываний, которые могут вызвать проблемы.

см. https://github.com/lestofante/arduinoSketch/blob/master/QuadricotteroCompleto/RX/InputPin.cpp для примера того, как я использую этот метод для чтения только определенного конкретного контакта

Смежные вопросы