[英]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的內部上拉電阻。
當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信號,並且存在一些干擾,因為當我切換到單獨的電纜時,不穩定的行為消失了。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.