读取8421编码开关
本帖最后由 topdog 于 2021-6-12 16:55 编辑市场上普遍的8421编码开关有两种式样,一种是按压式(push-wheel),另一种拇指旋转式(thumbwheel )。
8421码又称为BCD码,是十进制代码中最常用的一种。在这种编码方式中,每一位二值代码的“1”都代表一个固定数值。将每位“1”所代表的二进制数加起来就可以得到它所代表的十进制数字。因为代码中从左至右看每一位“1”分别代表数字“8”“4”“2”“1”,故得名8421码。其中每一位“1”代表的十进制数称为这一位的权。因为每位的权都是固定不变的,所以8421码是恒权码。
接线原理图:图一按压式右侧的线路板就比较直观,C是接VCC,从左到右就是8421码值对应的管脚。图二拇指旋转式六个管脚其中一个是GND,其他相同。
10档位按压式(黄色标注)和16档位拇指旋转式(绿色标注)的8421编码开关真值表:
读取的程序如下:
const int code1Pin = 6;
const int code2Pin = 5;
const int code4Pin = 4;
const int code8Pin = 3;
void setup() {
Serial.begin(9600);
pinMode(code8Pin, INPUT);
pinMode(code4Pin, INPUT);
pinMode(code2Pin, INPUT);
pinMode(code1Pin, INPUT);
}
void loop() {
int code8421 = 0;
if (digitalRead(code1Pin) == HIGH) {
code8421 += 1;
}
if (digitalRead(code2Pin) == HIGH) {
code8421 += 2;
}
if (digitalRead(code4Pin) == HIGH) {
code8421 += 4;
}
if (digitalRead(code8Pin) == HIGH) {
code8421 += 8;
}
Serial.print("Now code8421 is:");
//Serial.println(code8421, HEX);
Serial.println(code8421, DEC);
delay(100);
}
页:
[1]