带LCD的Arduino UNO,来自旋转编码器的奇怪读数
我有一个I2C 16x2液晶显示器连接到Arduino Uno的带LCD的Arduino UNO,来自旋转编码器的奇怪读数,arduino,interrupt,Arduino,Interrupt,我有一个I2C 16x2液晶显示器连接到Arduino Uno的A4(SDA)和A5(SCL)引脚。显示器没有问题,工作正常 然后我有一个旋转编码器连接到引脚D3(INT1)和D4。INT1引脚用作中断以读取编码器,并且读取通过Serial.print()发送到串行监视器。旋转编码器上连接有去盎司盖。编码器引脚使用Arduino的内部上拉 当encoderPinB从HIGH下降到LOW时,中断连接到readencoderPinA。顺时针转动转盘时,encoderPinA为LOW,逆时针转动时,e
A4(SDA)
和A5(SCL)
引脚。显示器没有问题,工作正常
然后我有一个旋转编码器连接到引脚D3(INT1)
和D4
。INT1
引脚用作中断以读取编码器,并且读取通过Serial.print()
发送到串行监视器。旋转编码器上连接有去盎司盖。编码器引脚使用Arduino的内部上拉
当encoderPinB
从HIGH
下降到LOW
时,中断连接到readencoderPinA
。顺时针转动转盘时,encoderPinA
为LOW
,逆时针转动时,encoderPinA
为HIGH
现在,当主循环中没有任何内容时,顺时针旋转旋转时,串行监视器上会出现++++++
符号,逆时针旋转时会出现-->
符号,这是我应该看到的
但是如果我取消对打印到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("-");
}
#定义编码器PINA 4
#定义encoderPinB 3
#包括
液晶I2C液晶显示器(0x27,2,1,0,4,5,6,7,3,正极);
无效设置(){
Serial.begin(9600);
lcd.begin(16,2);
pinMode(编码器pina,输入\上拉);
pinMode(encoderPinB,输入\上拉);
连接中断(数字插针中断(编码器PINB)、读编码器、下降);
}
void循环(){
//lcd.setCursor(0,0);
//lcd.打印(“测试”);
}
void readEncoder(){
如果(digitalRead(encoderPinA)=低)串行打印(“+”);
else序列号。打印(“-”);
}
对不起,各位,这个问题显然与电缆有关
我使用同一根非屏蔽扁平电缆来执行旋转和lcd信号,但存在一些干扰,因为当我切换到单独的电缆时,不稳定的行为消失了