Arduino Uno带有LCD,旋转编码器的奇怪读数



我有一个I2C 16x2 LCD显示屏连接到Arduino Uno的A4 (SDA)A5 (SCL)引脚。显示器没有问题,它可以正常工作。

然后,我有一个旋转编码器连接到销钉D3 (INT1)D4INT1 PIN用作中断以读取编码器,并且通过Serial.print()发送读取到串行监视器。有连接到旋转编码器的扣除帽。编码器引脚使用Arduino的内部推动。

encoderPinBHIGH降至LOW时,中断将连接到读取encoderPinA。旋转顺时针旋转时,encoderPinALOW,逆时针旋转时,encoderPinAHIGH

现在,当主loop中没有任何内容时,在顺时针旋转旋转时,我会在串行显示器上获得++++++++++符号,而----------在逆时针上旋转时会符号。

但是,如果我散布着这两条印刷到LCD的行,我开始从旋转编码器中获得不稳定的读数,例如: -++-++-++-+++-++-+++-++--+

发生了什么事?LCD是否会干扰中断引脚?

#define encoderPinA 4
#define encoderPinB 3
#include <LiquidCrystal_I2C.h>
LiquidCrystal_I2C lcd(0x27, 2, 1, 0, 4, 5, 6, 7, 3, POSITIVE);
void setup() {
  Serial.begin(9600);
  lcd.begin(16, 2);
  pinMode(encoderPinA, INPUT_PULLUP);
  pinMode(encoderPinB, INPUT_PULLUP);
  attachInterrupt (digitalPinToInterrupt(encoderPinB), readEncoder, FALLING);
}
void loop() {
  //lcd.setCursor(0, 0);
  //lcd.print("test");
}
void readEncoder() {
  if (digitalRead(encoderPinA) == LOW) Serial.print("+");
  else Serial.print("-");
}

对不起,这个问题显然是一个相关的问题。

我正在使用相同的非固定平坦电缆来执行旋转和LCD信号,并且有一些干扰,因为当我切换到单独的电缆时,不稳定的行为就消失了。

最新更新