使用照片中断的正交编码器

时间:2014-02-10 23:28:10

标签: arduino

我试图使用照片中断和7474 d触发器编程编码器。我相信我的布线是正确的。它只是将照片中断连接到arduino并使引脚输出通过7474.另外一根电线连接到引脚4进行数字读取。

以下是我的代码。出于某种原因,我不能让照片中断来读取转向。

 const int clock = 0;     //pin 2 is interrupt 0
const int dirPin = 4;    //the number of the LED pin
//const int ledPin =  13;

int count = 0;
int dir = 0;
//int clockA = 0;

void setup(){

  pinMode(dirPin, INPUT);

  Serial.begin(9600);

  attachInterrupt(clock, program, RISING);

}

void loop()
{


  delay(50);

} 

void program()
{
  dir = digitalRead(dirPin);
  if (dir == HIGH)
  { 
    count ++; 

  }

   else 
   { 
    count --;


   }
   Serial.println(count*30);

}

1 个答案:

答案 0 :(得分:0)

不要将Serial.println()放在中断处理程序中。在处理程序内部,其他中断被禁用。做尽可能少的工作并返回。处理程序应该只更新计数并标记一个标志以告诉主循环处理。

int count = 0;
int newcounts = 0;

void loop() {
  delay(100);
  if (newcounts) {
    Serial.println(count*30);
    newcounts = 0
  }
}

void program() {
  // ... update count
  newcounts = 1;
}