//Arduino 按键 或者 串口控制 LED的亮灭
int buttonPin = 2;//D2脚 接按键
int led1Pin = 12;//D12脚 接LED1
int led2Pin = 13;//D13脚 接LED2
void Ser_cnled1();//声明 串口控制 子函数
void Key_cnled2();//声明 按键控制 子函数
void setup() {
pinMode(buttonPin, INPUT);
//D2脚 接按键 设置为 上拉输入 INPUT_PULLUP 属于稳妥操作;没有实际接入上拉电路就先输入个INPUT 吧
pinMode(led1Pin, OUTPUT);//D12脚 接LED 设置为输出
pinMode(led2Pin, OUTPUT);//D13脚 接LED 设置为输出
Serial.begin(9600);//串口以9600波特率开启
}
void loop() {
Ser_cnled1();//调用串口控制 子函数
delay(10);//延时10毫秒
Key_cnled2();//调用按键控制 子函数
}
void Ser_cnled1()//串口控制 子函数
{
if(Serial.available()) //判断 串口接收数据
{
char readL8 = Serial.read();//readL8=接收数据
delay(5);//延时5毫秒
if(readL8=='0')//readL8 接收数据 为字符0
{
digitalWrite(led1Pin, LOW);// 接LED1 的 D12脚 设置为输出低电平 熄灭LED
Serial.println("LED1 熄灭");//串口打印 LED1 熄灭
}
if(readL8=='1')
{
digitalWrite(led1Pin, HIGH);// 接LED1 的 D12脚 设置为输出高电平 点亮LED
Serial.println("点亮 LED1");//串口打印 点亮 LED1
}
}
}
void Key_cnled2()//按键控制 子函数
{
if (digitalRead(buttonPin) == LOW)//如果读取到,D2脚 接按键为低电平LOW(0)
{
delay(10);//延时10毫秒 消抖
if (digitalRead(buttonPin) == LOW)//如果读取到,D2脚 接按键仍为低电平LOW(0)
{
digitalWrite(led2Pin, HIGH);//D13脚 接LED 设置为输出为高电平 点亮LED
//Serial.println("按键是低电平0 ;点亮LED2");//串口输出打印信息 注意 有汉字的打印信息 在ArduinoIDE之外的软件上 是打印不出来汉字的
}
}
else{
//Serial.println("按键是悬空或高电平,熄灭LED2");//串口输出打印信息
digitalWrite(led2Pin, LOW);//D13脚 接LED 设置为输出为高电平 点亮LED
}
delay(1500);//延时1500毫秒 (1.5秒)
}