我有一個連接到Arduino Uno的A4 (SDA)
和A5 (SCL)
引腳的I2C 16x2 LCD顯示器。顯示器沒問題,它工作正常。帶液晶顯示器的Arduino UNO,來自旋轉編碼器的奇怪讀數
然後我有一個旋轉編碼器連接到引腳D3 (INT1)
和D4
。 INT1
引腳用作中斷來讀取編碼器,讀數通過Serial.print()
發送到串行監視器。有旋轉編碼器連接了去抖CAP。編碼器引腳使用Arduino的內部上拉。
中斷連接讀取encoderPinA
時encoderPinB
從HIGH
下降到LOW
。當順時針旋轉旋轉器時,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("-");
}