有三种亮灯方式,怎么用arduino怎么写出按一下微动开关,可以切换一种亮灯方式?

 我来答
bjdqe1024
推荐于2017-05-21 · TA获得超过653个赞
知道小有建树答主
回答量:774
采纳率:50%
帮助的人:417万
展开全部
    
//假设有两个LED灯
#define PORT_LED1 10
#define PORT_LED2 11
//假设按键在12端口
#define PORT_KEY 12

#define KEYMODE_1 1
#define KEYMODE_2 2
#define KEYMODE_3 3

uint8_t keyMode;

// 按键处理初始化
void KeyScanInit(void)
{
pinMode(PORT_KEY,INPUT_PULLUP); //输入模式,内部上拉。
keyMode = KEYMODE_1;
}

// 任务:按键处理
void KeyScanTask(void)
{
static uint8_t keypre = 0; //按键被按下时置1.
if( (keypre == 0) && (digitalRead(PORT_KEY) = LOW) ) //按键被按下
{
keypre = 1; //置1,避免持续按下按键时再次进入此函数体。
switch(keyMode)
{
case KEYMODE_1:
keyMode = KEYMODE_2;
break;
case KEYMODE_2:
keyMode = KEYMODE_3;
break;
case KEYMODE_3:
keyMode = KEYMODE_1;
break;
default:
break;
}
}
if(digitalRead(PORT_KEY) = HIGH) //按键被放开
{
keypre = 0; //置0,允许再次切换LED模式
}
}

// LED初始化
void LEDInit(void)
{
pinMode(PORT_LED1,OUTPUT);
pinMode(PORT_LED2,OUTPUT);
digitalWrite(PORT_LED1,LOW);
digitalWrite(PORT_LED2,LOW);
}

// 任务:LED灯显示处理
void LEDTask(void)
{
switch(keyMode)
{
case KEYMODE_1:
digitalWrite(PORT_LED1,HIGH);
digitalWrite(PORT_LED2,LOW);
break;
case KEYMODE_2:
digitalWrite(PORT_LED1,LOW);
digitalWrite(PORT_LED2,HIGH);
break;
case KEYMODE_3:
digitalWrite(PORT_LED1,HIGH);
digitalWrite(PORT_LED2,HIGH);
break;
default:
break;
}
}

void setup ()
{
KeyScanInit();
LEDInit();
}

void loop()
{
KeyScanTask();
LEDTask();
}
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式