通过轻触按键学习了pinMode的INPUT模式,还有attachInterrupt中断事件,简单理解中断事件,就是它是比循环更重要的事,所以要中断循环先处理中断事件,完事后再处理循环.只是不知道这个下降沿触发是如何形成的.还有这个 flag = !flag; 是赋值语句还是判断语句,如果是赋值语句它是在哪一步被赋值的呢,没见过这种写法.,(刚刚请教了一下其他人,得到的结果是 flag = !flag 为假 = 非假,是在keyPin被触发后,在attachInterrupt(keyPin,ledshow,FALLING);方法中调用ledshow的过程中被赋值的)
/**********************************/
const int keyPin = 17; // 设置轻触按键引脚为17号
const int led1Pin = 25; //设置1号led灯的控制引脚为25号
const int led2Pin = 26; //设置2号led灯的控制引脚为26号
boolean flag = false; // 状态标志位
/**********************************/
void setup()
{
pinMode(keyPin,INPUT); //初始化轻触按键引脚为输入
pinMode(led1Pin,OUTPUT); //初始化1号led灯的控制引脚为输出
pinMode(led2Pin,OUTPUT); //初始化2号led灯的控制引脚为输出
attachInterrupt(keyPin,ledshow,FALLING); // 初始化轻触按键引脚中断程序,下降沿触发(按下到底触发)
}
void loop()
{
//由于初始状态flag为假,,所以刷完系统执行else 1号led灯关 2号led灯开
if(flag)
{
digitalWrite(led1Pin,HIGH); // 设置1号led灯的控制引脚为开启
digitalWrite(led2Pin,LOW); // 设置2号led灯的控制引脚为关闭
}
else
{
digitalWrite(led1Pin,LOW); // 设置1号led灯的控制引脚为关闭
digitalWrite(led2Pin,HIGH); // 设置2号led灯的控制引脚为开启
}
}
/************************************/
void ledshow()
{
flag = !flag; // 判断轻触按键是否触发了
}