问题:当使用"digitalRead(BUT) == 1"控制LED灯时会出现"digitalWrite(LED, ledState);"的值出现跳动。

原因:因为loop会无限循环,当按下按钮时会一直输出1,当松开按钮时会一直输出0,所以判断的时候if(digitalRead(BUT) == 1)判断条件不稳定(这里不稳定的意思是if(digitalRead(BUT) == 1)会重复执行,造成ledState = !ledState的值一直改变)

#define BUT D2  //定义按钮的针脚
#define LED D9 //定义LED灯的针脚
boolean ledState = LOW; // 初始化LED灯的值 void setup() {
pinMode(BUT, INPUT); //设置针脚为输入
pinMode(LED, OUTPUT); //设置针脚为输出
Serial.begin(); //串口初始化
} void loop() {
if(digitalRead(BUT) == ){
//Serial.println(digitalRead(BUT)); //值为1
ledState = !ledState;
Serial.println(ledState); //ledState值不稳定
digitalWrite(LED, ledState);
}else{
//Serial.println(digitalRead(BUT));//值为0
}
}

解决1:中间值的方式

原理:使用中间值的方式稳定判断条件,在if(b1 != butState)的执行体中当按下按钮时control的值会加1,松开按钮又会加1,所以当control=2的执行if(control == 2)判断条件稳定(稳定的意思是if(control == 2)只会执行一次,这样就会解决ledState = !ledState值不稳定的情况。)

#define BUT D2
#define LED D9
boolean butState = LOW;
boolean ledState = LOW;
byte control = ; void setup() {
pinMode(BUT, INPUT);
pinMode(LED, OUTPUT);
Serial.begin(); //串口初始化
} void loop() {
// 死循环--未按下按钮值0 按下按钮值1
boolean b1 = digitalRead(BUT);
if(b1 != butState){
delay();//缓冲震动
// 只执行一次--未按下按钮值0 按下按钮值1
boolean b2 = digitalRead(BUT);
if(b2 == b1) {
// 只执行一次--未按下按钮值0 按下按钮值1
butState = b1;
// 按一次按钮执行两次
control++;
}
} if(control == ){
control = ;
// 默认值0 取反值1
ledState = !ledState;
Serial.println(ledState); //ledState值稳定
digitalWrite(LED, ledState);
}
}

ps:开发板信息

Arduino控制LED灯(开关控制)的更多相关文章

  1. arduino 红外遥控器控制LED灯

    /* 日期:2016.9.1 功能:红外遥控器控制LED灯 开,关,闪烁,呼吸 元件: 跳线公公头 * 5 led 220欧电阻 红外接收管,红外遥控 接线: 红外灯面向自己从左到右分别接 IO3 , ...

  2. arduino入门学习实现语音控制LED灯

    需要的准备的硬件arduino+PC+麦克风实现语音命令控制LED灯的亮灭. 首先需要将写好的arduino程序烧录到arduino uno主板中,下面是代码如下: int val;//定义变量val ...

  3. C#与Arduino通过串口通信来控制LED灯的状态

    一.引言 最近摆弄了一段时间的Arduino,发现Arduino做一些电子类项目.监控.机器人.电子玩具比较容易,并且Arduino与.NET程序集成也不难.接下来介绍一个简单的小程序,C#做的一个W ...

  4. enc28J60 网页控制LED灯

    软件IDE:Arduino 1.6.3 1.库的安装: 从https://github.com/jcw/ethercard 下载源码包,解压,复制ethercard-master文件夹到Arduino ...

  5. 云中树莓派(4):利用声音传感器控制Led灯

    云中树莓派(1):环境准备 云中树莓派(2):将传感器数据上传到AWS IoT 并利用Kibana进行展示 云中树莓派(3):通过 AWS IoT 控制树莓派上的Led 云中树莓派(4):利用声音传感 ...

  6. 嵌入式Linux学习入门:控制LED灯

    记录自己linux学习过程,让自己能够一直坚持下去 1.原理图分析: nLED_1, nLED_2, nLED_4, 给低电平则对应LED灯亮,高电平则对应LED灯灭, S3C2440芯片GPF4-G ...

  7. BLE 安卓APP控制LED灯的实现(转)

    源:BLE 安卓APP控制LED灯的实现 //注:参考AmoMcu源代码修改. 打开APP,检查蓝牙是否打开 BluetoothAdapter mBluetoothAdapter; final Blu ...

  8. 树莓派开机运行Python脚本 控制LED灯闪烁

    一.新建一个开机运行文件 在 /home/pi/.config 下创建一个文件夹,名称为 autostart,并在该文件夹下创建一个led.desktop文件(文件名以.desktop结尾) 编辑le ...

  9. 基于arduino UNO R3+ESP8266控制LED灯的开关(无USB转TTL工具实现)

    最近由于项目要求,需要开发物联网云平台,而本人对硬件和通信技术一窍不通,故而选择arduino这一简单单片机来实现学习掌握基础的硬件和通信技术. 下面就是本人通过查阅大佬资料做的一个整合版本的通过手机 ...

随机推荐

  1. Linux编程之文件锁

    1. 使用 fcntl() 给记录加锁 使用 fcntl() 能够在一个文件的任意部分上放置一把锁,这个文件部分既可以是一个字节,也可以是整个文件.这种形式的文件加锁通常被称为记录加锁,但这种称谓是不 ...

  2. python全栈开发第7天 nginx服务器和nfs的搭建及组成集群的方法

    作业一:nginx服务 二进制安装nginx包 1.使用命令:yum install epel-release -y ,来安装epel,安装成功如下图:(因为我用32位的centos7老是出现各种各样 ...

  3. HttpServletRequest中getRemoteUser和getUserPrincipal方法

    HttpServletRequest是一个接口类,继承自ServletRequest,并且又新增了许多抽象方法,getRemoteUser()方法和getUserPrincipal()方法就在其中.许 ...

  4. LC 662. Maximum Width of Binary Tree

    Given a binary tree, write a function to get the maximum width of the given tree. The width of a tre ...

  5. vue 登录路由判断

    router.beforeEach((to, from, next) => { // alert(sessionStorage.getItem('accessToken')) // consol ...

  6. python - paramiko模块 修改logging提示为静默

    import paramiko import logging log = paramiko.util.get_logger("paramiko") log.setLevel(log ...

  7. Java 中nextLine()方法没有执行直接跳过解决办法

    使用Java的Scanner类nextLne()方法从显示器输入数据时,nextInt()后面的nextLine()直接跳过没有执行: 截图:第三个输入直接跳过 通过上网的查找我终于发现了问题出在哪里 ...

  8. selenium三种断言以及异常类型

    elenium提供了三种模式的断言:assert .verify.waitfor 1)Assert(断言) 失败时,该测试将终止. 2)Verify(验证) 失败时,该测试将继续执行,并将错误记入日志 ...

  9. Git-T

    或在命令行上创建一个新的存储库echo“#gittest”>> README.md git init git add README.md git commit -m“first commi ...

  10. configparser模块 subprocess 模块,xlrd 模块(表格处理)

    今日内容: 1.configparser模块 2.subprocess模块 3.xlrd(读),xlwt(写) 表格处理 configparser模块 import configparser # co ...