簡體   English   中英

帶LCD的Arduino UNO,旋轉編碼器的讀數異常

[英]Arduino UNO with LCD, strange readings from rotary encoder

我有一個I2C 16x2 LCD顯示器連接到Arduino Uno的A4 (SDA)A5 (SCL)引腳。 顯示器沒問題,它可以正常工作。

然后,我有一個旋轉編碼器連接到引腳D3 (INT1)D4 INT1引腳用作讀取編碼器的中斷,並且讀數通過Serial.print()發送到串行監視器。 有防抖CAP連接到旋轉編碼器。 編碼器引腳使用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信號,並且存在一些干擾,因為當我切換到單獨的電纜時,不穩定的行為消失了。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM