void setup() {
for(int i = 5; i <= 11; i++)
{
if(i == 7)
{
i = 9;
}
pinMode(i,OUTPUT); //引脚初始化
}
pinMode(7,INPUT_PULLUP); //引脚初始化
pinMode(8,INPUT_PULLUP); //引脚初始化
Serial.begin(9600); //串口初始化
}
/**
* 按键7控制流水灯
*/
uint8_t Key_Num = 0;
int LED_IO = 5;
int Val = 0;
void loop() {
/* 实现流水灯 */
if(Key7_Scanf()) //若按键7按下,Key_Num = 1
{
for(LED_IO; LED_IO <= 11; LED_IO++)//执行流水灯
{
/* 流水灯执行代码 */
if(LED_IO == 7)
{
LED_IO = 9;
}
digitalWrite(LED_IO,HIGH); //引脚输出高电平,打开LED
if(LED_IO == 5)
{
digitalWrite(11,LOW); //引脚输出高电平,关闭上一个LED
}
if(LED_IO == 9)
{
digitalWrite(6,LOW);
}
else
{
digitalWrite((LED_IO+11) % 12,LOW);//引脚输出高电平,关闭上一个LED
}
if(!Key7_Scanf()) //若按键再次按下,Key_Num = 0
{
break; //终止循环,暂停流水灯
}
delay(100);
}
if(LED_IO > 11)
{
LED_IO = 5;
}
}
/* 按键8调节LED亮度 */
if(!Key7_Scanf()) //流水灯停止
{
if(Key8_Scanf())//按键8按下
{
Val += 80;
if(Val > 255)
{
Val = 0;
}
Serial.print(LED_IO);
Serial.println(Val);//打印是哪一个LED引脚和占空比
analogWrite(LED_IO, Val);
}
}
}
/**
* 读取按键7的值
*/
uint8_t Key7_Scanf(void)
{
if(!digitalRead(7)) //按键7按下
{
delay(5); //延时消抖
if(!digitalRead(7)) //真的按下
{
while(!digitalRead(7)); //等待松手
delay(5); //延时消抖
Key_Num = !Key_Num;
Serial.println(Key_Num);
}
}
return Key_Num;
}
/**
* 读取按键8的值
*/
uint8_t Key8_Scanf(void)
{
uint8_t Key8Num = 0;
/* 按键8控制LED的亮度 */
if(!digitalRead(8)) //按键8按下
{
delay(5); //延时消抖
if(!digitalRead(8)) //真的按下
{
while(!digitalRead(8)); //等待松手
delay(5); //延时消抖
Key8Num = 1;
}
}
return Key8Num;
}