我试图使用照片中断和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);
}
答案 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;
}