一、按钮实验
// 设置引脚 const int buttonPin = 7; const int ledPin = 13; int buttonState = 0; // 定义变量,读取状态 void setup() { pinMode(ledPin, OUTPUT); // 设定ledPin引脚用来输出 pinMode(buttonPin, INPUT); // 设定buttonPin引脚用来输入 } void loop() { buttonState = digitalRead(buttonPin); // 读取buttonPin引脚状态 if (buttonState == HIGH) { digitalWrite(ledPin, HIGH); // 打开LED灯(高电压) } else { digitalWrite(ledPin, LOW); // 关闭LED灯(低电压) } }
二、从串口读取数字信号
int pushButton = 7; void setup() { //以每秒9600bit初始化串行通信 Serial.begin(9600); pinMode(pushButton, INPUT); } void loop() { int buttonState = digitalRead(pushButton); // 输出按钮状态 Serial.println(buttonState); delay(100); }
三、按钮计数器(去抖)
int pushButton = 7; // 记录上次引脚输入值 int beforeButtonState = 0; // 记录随按钮点击的递增数据 int num = 0; void setup() { Serial.begin(9600); pinMode(pushButton, INPUT); } void loop() { int buttonState = digitalRead(pushButton); // 检测按下事件,按前引脚输入为0,按后引脚输入为1 if(buttonState==1 and beforeButtonState==0){ num=num+1; Serial.println(num); } // 按钮仍未松开,延时20毫秒 if(buttonState==1){ delay(20); } // 记录本次按钮引脚输入,便于下次按钮是否点击检测 beforeButtonState = buttonState; }