2017-09-02 52 views
0

我有一個連接到Arduino Uno的A4 (SDA)A5 (SCL)引腳的I2C 16x2 LCD顯示器。顯示器沒問題,它工作正常。帶液晶顯示器的Arduino UNO,來自旋轉編碼器的奇怪讀數

然後我有一個旋轉編碼器連接到引腳D3 (INT1)D4INT1引腳用作中斷來讀取編碼器,讀數通過Serial.print()發送到串行監視器。有旋轉編碼器連接了去抖CAP。編碼器引腳使用Arduino的內部上拉。

中斷連接讀取encoderPinAencoderPinBHIGH下降到LOW。當順時針旋轉旋轉器時,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("-"); 
} 

回答

0

對不起,這個問題顯然是一個電纜相關的問題。

我使用了同樣的非屏蔽扁平電纜來執行旋轉和lcd信號,並且存在一些干擾,因爲當我切換到分開的電纜時,不規律的行爲消失了。

相關問題