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


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

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

③初始化程序,设置2引脚为输入,13引脚为输出;
void setup() {
  •   pinMode(13,OUTPUT);
  •   pinMode(2,INPUT);
  •   digitalWrite(13, LOW); // 初始化LED为熄灭状态
  • }
  • 复制代码

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

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

  •   }
  • 复制代码


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


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

    ②初始化
    void setup() {
  •   pinMode(13,OUTPUT);
  •   pinMode(2,INPUT);
  •   digitalWrite(13, LOW); // 初始化LED为熄灭状态
  • }
  • 复制代码

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

    ④先判断按钮是否按下,如果按钮为高电平,则进入if
    如果LED此时是高电平,则写入低电平,否则就写入高电平
    delay函数用于防误触
      if(bool1 == HIGH)//如果bool1为高电平
  •   {
  •     if(led1 == HIGH)
  •     {
  •       digitalWrite(13, LOW); // 初始化LED为熄灭状态
  •       delay(200);
  •     }else{
  •       digitalWrite(13, HIGH); // 初始化LED为熄灭状态
  •       delay(200);
  •     }
  •   }
  • 复制代码


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


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

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

  • void setup() {
  •   pinMode(button1, INPUT);
  •   pinMode(button2, INPUT);
  •   pinMode(ledPin, OUTPUT);
  •   digitalWrite(ledPin, LOW); // 初始化LED为熄灭状态
  • }

  • void loop() {
  •   int button1State = digitalRead(button1);
  •   int button2State = digitalRead(button2);

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