|
本帖最后由 w466909383 于 2019-11-5 11:29 编辑
[mw_shl_code=arduino,true]#define BUTTONCOUNT 5
#define HIGHMODE
int Mode=0;
const int ButtonPin[BUTTONCOUNT] = { 2,3,4,5,6 };
int ButtonStat[BUTTONCOUNT] = { 0 };
void setup()
{
Serial.begin(9600);
IintButton();
//IintButton(LOWMODE);
}
void IintButton()
{
#if define HIGHMODE
Mode=1;
#else
Mode=0;
#endif
for (int i = 0; i < BUTTONCOUNT; ++i)
{
if (Mode)
pinMode(ButtonPin, INPUT);
else
pinMode(ButtonPin, INPUT_PULLUP);
ButtonStat = 0;
}
}
int ScanButton()
{
for (int i = 0; i < BUTTONCOUNT; ++i)
{
if (digitalRead(ButtonPin)==Mode)
{
if (ButtonStat != 1)
{
if (!ButtonStat)
{
ButtonStat = -1;
delay(10);
}
else if (ButtonStat == -1)
{
ButtonStat = 1;
return i + 1;
}
}
}
else
{
if (ButtonStat == -1)
{
ButtonStat = 0;
}
else if (ButtonStat == 1)
{
ButtonStat = 0;
return -1 * (i + 1);
}
}
}
return 0;
}
void loop()
{
int button = ScanButton();
if (button)
{
Serial.println(button);
}
}
[/mw_shl_code]
#define BUTTONCOUNT 5 这里设置你的按键个数
#define HIGHMODE 这里设置按键触发模式 (低电平触发还是高电平触发)
const int ButtonPin[BUTTONCOUNT] = { 2,3,4,5,6 }; 设置引脚号
扫描采用了非阻塞的方式
进行了简单的防抖处理
能有效的扫描按键的 按下状态和弹起状态
想要学习更多内容加QQ群吧
乌鸦的Arduino交流群:46127581
----------------------------------------------------------------------
写在后面:
时隔多日再次更新兵器库系列 ,回帖不多让我很难受
|
|