|
|
参考阿莫的sword_yang的文章“单片机在音响上的应用(一)旋转编码器的解码”了解了这种旋转编码器的原理。
元件与上述类似。
两相分别在两边,中间的可上拉也可下拉,本人用的上拉。接通为低电平,断开为高电平。
程序一,只使用其中一相,接7号口。
int inAPin = 7;
int aPreStatus;
int count = 0;
void setup() {
pinMode(7, INPUT);
pinMode(13, OUTPUT);
aPreStatus = digitalRead(inAPin);
Serial.begin(9600);
Serial.println(count);
}
void loop() {
if (digitalRead(inAPin)==0) // current pressed
{
if (aPreStatus == 1) // previous not pressed
{
count++;
Serial.println(count);
}
aPreStatus = 0;
}
else
aPreStatus = 1;
}
调试通过。
程序2,7、8号口分别接两相。
int inAPin = 7;
int inBPin = 8;
int aPreStatus;
int count = 0;
void setup() {
pinMode(7, INPUT);
pinMode(8, INPUT);
pinMode(13, OUTPUT);
aPreStatus = digitalRead(inAPin);
Serial.begin(9600);
Serial.println(count);
}
void loop() {
if (digitalRead(inAPin)==0) // current pressed
{
if (aPreStatus == 1) // previous not pressed
{
if (digitalRead(inBPin)) count++; // U can change this with count--
else count--;
Serial.println(count);
}
aPreStatus = 0;
}
else
aPreStatus = 1;
}
调试通过。
现在有一个问题是,开始的时候我用程序一来调试,只是线接得不对,左接地,中接A,右接B,程序运行后,计数器不断增加,还没想明白是怎么原理。
|
本帖子中包含更多资源
您需要 登录 才可以下载或查看,没有帐号?注册
x
|