(一)简介
按钮作是一种输入设备,可以对单片机进行控制,是单片机交互重要的设备之一
我们本期教程会采用TTP223触摸按钮模块,来实现按钮控制LED灯


(二)接线
①LED灯图方便还是采用板载的LED(13引脚)
②按钮可以随意接到一个支持输入的引脚,这里选择2号引脚
③注意模块的VCC和GND不要接错
85ecd948d5b72de6449122e05443c81.jpg

(三)按钮点灯程序
①首先,要知道TTP223模块是高电平有效,LED灯也是高电平有效
②然后,TTP223是输入模式,引脚为2;LED为输出模式,引脚为13

③初始化程序,设置2引脚为输入,13引脚为输出;
  1. void setup() {
  2.   pinMode(13,OUTPUT);
  3.   pinMode(2,INPUT);
  4.   digitalWrite(13, LOW); // 初始化LED为熄灭状态
  5. }

④设定一个变量,if判断的时候,只需判断变量状态
  1.   int bool1 = digitalRead(2);//读取2号引脚存入bool1这个变量内

⑤if函数判断高低电平(按钮是否按下)
如果高电平,则将LED写入高电平,如果低电平,则将LED写入低电平
  1.   if(bool1 == HIGH)//如果bool1为高电平
  2.   {
  3.     digitalWrite(13, HIGH); //点亮LED
  4.   }else{                    //否则
  5.     digitalWrite(13, LOW); //熄灭LED

  6.   }


⑥结果演示
8f84dff9f3f3226f739c -small-original.gif


(四)一个按钮控制灯开/关
①通过一个按钮,就可以控制一个灯开和关;
灯亮时,按下按钮,灯灭
灯灭时,按下按钮,灯亮

②初始化
  1. void setup() {
  2.   pinMode(13,OUTPUT);
  3.   pinMode(2,INPUT);
  4.   digitalWrite(13, LOW); // 初始化LED为熄灭状态
  5. }

③设置两个变量,bool1保存按钮状态,led1保存灯的状态
  1. int bool1 = digitalRead(2);//读取2号引脚存入bool1这个变量内
  2.   int led1 =  digitalRead(13);//读取LED的状态

④先判断按钮是否按下,如果按钮为高电平,则进入if
如果LED此时是高电平,则写入低电平,否则就写入高电平
delay函数用于防误触
  1.   if(bool1 == HIGH)//如果bool1为高电平
  2.   {
  3.     if(led1 == HIGH)
  4.     {
  5.       digitalWrite(13, LOW); // 初始化LED为熄灭状态
  6.       delay(200);
  7.     }else{
  8.       digitalWrite(13, HIGH); // 初始化LED为熄灭状态
  9.       delay(200);
  10.     }
  11.   }


⑤实验现象
按下按钮,灯常开或常关
268cd2544ff2f3421bcc -small-original.gif


(五)练习题
题目:
使用两个按钮(分别连接到数字引脚2和3),编写程序,当按下任一按钮时,点亮连接到数字引脚9的LED;当两个按钮都未按下时,熄灭LED。

答案:
  1. const int button1 = 2;
  2. const int button2 = 3;
  3. const int ledPin = 9;

  4. void setup() {
  5.   pinMode(button1, INPUT);
  6.   pinMode(button2, INPUT);
  7.   pinMode(ledPin, OUTPUT);
  8.   digitalWrite(ledPin, LOW); // 初始化LED为熄灭状态
  9. }

  10. void loop() {
  11.   int button1State = digitalRead(button1);
  12.   int button2State = digitalRead(button2);

  13.   if (button1State == HIGH || button2State == HIGH) {
  14.     digitalWrite(ledPin, HIGH); // 如果任一按钮被按下,点亮LED
  15.   } else {
  16.     digitalWrite(ledPin, LOW); // 如果两个按钮都未被按下,熄灭LED
  17.   }
  18. }
【Arduino uno教程 】(一)安装Arduino IDE
【Arduino uno教程 】(二)Arduino uno开发板及点灯测试
【Arduino uno教程 】(三)按钮控制LED灯,附练习题