我有一个I2C 16x2 LCD显示屏连接到Arduino Uno的A4 (SDA)
和A5 (SCL)
引脚。显示器没有问题,它可以正常工作。
然后,我有一个旋转编码器连接到销钉D3 (INT1)
和D4
。INT1
PIN用作中断以读取编码器,并且通过Serial.print()
发送读取到串行监视器。有连接到旋转编码器的扣除帽。编码器引脚使用Arduino的内部推动。
当encoderPinB
从HIGH
降至LOW
时,中断将连接到读取encoderPinA
。旋转顺时针旋转时,encoderPinA
为LOW
,逆时针旋转时,encoderPinA
为HIGH
。
现在,当主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信号,并且有一些干扰,因为当我切换到单独的电缆时,不稳定的行为就消失了。