简介
波段开关是一种通过旋转操作的开关。当需要超过 2 个档位时,例如多速控制,通常会选择这种开关。波段开关使用模拟输入读取 12 个档位的状态,从而节省了 Arduino 的 IO 资源。该波段开关模块最多有 12 个档位。您还可以调节开关内部的金属扣来改变档位编号,因此使用非常灵活。
波段开关由一个主轴或 “转子 ”组成,主轴或 “转子 ”表面有一个像凸轮一样伸出的接触臂或 “辐条”。它有一系列端子,围绕转子一圈圈排列,每个端子都是 “辐条 ”的触点,通过这些触点可以将许多不同电路中的任何一个连接到转子上。因此,与简单的开关相比,波段开关具有更大的极数和投掷能力。
产品参数
- 电源电压: 3.3-12V
- 信号接口: 模拟
- 尺寸: 43毫米*38毫米
如何更改档位编号
不同固定孔之间的调节金属扣可改变档位编号。
接线图
示例代码1
int sensorvalue;
void setup() {
Serial.begin(9600);
}
void loop() {
sensorvalue = analogRead(0); // 读取不同档位的ADC数值
Serial.println(sensorvalue);
delay(200);
}
示例代码2
每个开关的相同档位值是不同的。因此,通过示例代码1,可以读取每个档位的值,并在以下代码中修改适当的参考值。
/*
# 该示例代码读取开关档位
*/
int adc_key_val[12] = { 630, 680, 750, 810, 845, 860, 890, 905, 920, 940, 950, 980 };
int NUM_KEYS = 12;
int adc_key_in;
int key = -1;
int oldkey = -1;
void setup() {
Serial.begin(9600); // 9600 bps
}
void loop() {
adc_key_in = analogRead(0); // 读取输入值
key = get_key(adc_key_in); // 转换为档位
if (key != oldkey) // 如果检测到档位
{
delay(50); // wait for debounce time
adc_key_in = analogRead(0); // 读取输入值
key = get_key(adc_key_in); // 转换为档位
if (key != oldkey) {
oldkey = key;
if (key >= 0) {
switch (key) {
case 0:
Serial.println("S1 OK");
break;
case 1:
Serial.println("S2 OK");
break;
case 2:
Serial.println("S3 OK");
break;
case 3:
Serial.println("S4 OK");
break;
case 4:
Serial.println("S5 OK");
break;
case 5:
Serial.println("S6 OK");
break;
case 6:
Serial.println("S7 OK");
break;
case 7:
Serial.println("S8 OK");
break;
case 8:
Serial.println("S9 OK");
break;
case 9:
Serial.println("S10 OK");
break;
case 10:
Serial.println("S11 OK");
break;
case 11:
Serial.println("S12 OK");
break;
}
}
}
}
delay(100);
}
// 将ADC原始输入值转换为档位
int get_key(unsigned int input) {
int k;
for (k = 0; k < NUM_KEYS; k++) {
if (input < adc_key_val[k]) {
return k;
}
}
if (k >= NUM_KEYS) k = -1;
return k;
}
FAQ
如有任何问题、建议或好点子,请访问DF创客社区.