实验现象

按键每次按下LED切换一种颜色,依次为红,绿,蓝,黄,紫,青,白。

理论学习

学会枚举语句的应用

enum{Color_R,Color_G,Color_B,Color_RG,Color_RB,Color_GB,Color_RGB};

相当于 Color_R = 0,Color_G = 1,……Color_RGB = 6,使用枚举语句使程序更容易懂,阅读起来更简单舒服。

这样在选择颜色时候,例如选择白色Change_Color(Color_RGB);就可以了,如果写Change_Corol(6)也可以,不过看着费力。

因为要0-6这7种颜色循环切换,因此当切换到白色后下一个要跳回到红色。

程序中使用以下语句切换:
  Color_Value++;       //颜色变量+1
  if(Color_Value == Color_RGB+1)    //当颜色变量  == 7
  {
  Color_Value = Color_R;    //颜色变量清零,切换为红色
  }

程序代码

#define LED_R 2
#define LED_G 3
#define LED_B 4#define KEY 5unsigned char KEY_NUM = 0;
unsigned char Color_Value = 0;enum{Color_R,Color_G,Color_B,Color_RG,Color_RB,Color_GB,Color_RGB};  //枚举所有颜色
//红,绿,蓝,黄,紫,青,白void setup()
{pinMode(LED_R,OUTPUT);pinMode(LED_G,OUTPUT);pinMode(LED_B,OUTPUT);pinMode(KEY,INPUT_PULLUP);Change_Color(Color_RGB);       //初始化颜色为白色
}void loop()
{Scan_KEY();                    //按键扫描if(KEY_NUM == 1)                //按键执行程序{KEY_NUM = 0;              //清空标志位Change_Color(Color_Value);       //切换颜色Color_Value++;              //颜色变量+1if(Color_Value == Color_RGB+1)      //当颜色变量 == 7{Color_Value = Color_R;      //颜色变量清零}}
}void Change_Color(unsigned char data_color)        //选择颜色函数
{switch(data_color){case Color_R:                   //红色digitalWrite(LED_R,LOW);digitalWrite(LED_G,HIGH);digitalWrite(LED_B,HIGH);break;case Color_G:                   //绿色digitalWrite(LED_R,HIGH);digitalWrite(LED_G,LOW);digitalWrite(LED_B,HIGH);break;case Color_B:                   //蓝色digitalWrite(LED_R,HIGH);digitalWrite(LED_G,HIGH);digitalWrite(LED_B,LOW);break;case Color_RG:                  //黄色digitalWrite(LED_R,LOW);digitalWrite(LED_G,LOW);digitalWrite(LED_B,HIGH);break;case Color_RB:                   //紫色digitalWrite(LED_R,LOW);digitalWrite(LED_G,HIGH);digitalWrite(LED_B,LOW);break;case Color_GB:                   //青色digitalWrite(LED_R,HIGH);digitalWrite(LED_G,LOW);digitalWrite(LED_B,LOW);break;case Color_RGB:                  //白色digitalWrite(LED_R,LOW);digitalWrite(LED_G,LOW);digitalWrite(LED_B,LOW);break;default:break;}}void Scan_KEY()                   //按键扫描
{if( digitalRead(KEY) == 0 )      //查看按键是否按下  {delay(20);         //延时20ms,去抖动 if( digitalRead(KEY) == 0 )     //查看按键是否按下{KEY_NUM = 1;          while(digitalRead(KEY) == 0); //松手检测}}
}

小思考:
其中有段代码可以改成:

Change_Color(Color_Value%7);

18.通过按键切换LED颜色相关推荐

  1. 通过按键切换LED颜色

    RGB LED七彩跳变 通过按键切换LED颜色 实验现象 按键每次按下,LED切换一种颜色,依次为红 绿 蓝 黄 紫 青 白 原理图 代码编写 #define led_r 2 #define led_ ...

  2. zigbee CC2530 系列教程 4 按键控制LED实验

    所有课程见此链接: zigbee CC2530 系列教程 0 课程介绍 4.3按键控制LED实验 4.3.1 实验目的 了解使用按键方法,使用按键切换LED的状态. 4.3.2 实验讲解 首先根据开发 ...

  3. arduino按键控制LED 灯(按一下切换一次状态)

    物联网实验一 2021.3.24 arduino按键控制LED 灯(按一下切换一次状态) #define led 13 //定义led灯为13引脚 #define button 3 //定义butto ...

  4. led计数电路实验报告_「正点原子FPGA连载」第八章 按键控制LED灯实验

    1)实验平台:正点原子开拓者FPGA开发板 2)本实例源码下载:请移步正点原子官网 第八章 按键控制LED灯实验 按键是常用的一种控制器件.生活中我们可以见到各种形式的按键,由于其结构简单,成本低廉等 ...

  5. verilog学习笔记- 10)按键控制 LED 灯实验

    目录 简介: 实验任务: 硬件设计: 程序设计: 下载验证 : 总结与反思: 简介: 按键开关是一种电子开关,属于电子元器件类.我们的开发板上有两种按键开关:第一种是本实验所使用的轻触式按键开关,使用 ...

  6. 一个按键控制LED闪烁与关闭(定时器中断)

    来源: 单片机简单程序_zhjysx的博客-CSDN博客https://blog.csdn.net/zhjysx/category_11558658.html 作用:用一个开关切换LED闪烁模式以及关 ...

  7. 按键控制LED状态翻转

    文章目录 题目要求 思路探索 核心板上的两个小灯 关于开发板上的八个小灯 代码 题目要求 通过编程环境KEIL实现按键控制LED状态翻转 要求:按键控制的LED为相同颜色指向或框选的LED 要求需要核 ...

  8. 03独立按键控制LED移动

    51单片机学习记录04 一.独立按键控制LED单向移动 单项右移 单项左移 二.独立按键控制LED移动 总结 一.独立按键控制LED单向移动 代码分为两个部分:"主函数"+&quo ...

  9. 【SoC FPGA学习】五、基于虚拟地址映射的 Linux 硬件编程,在已有工程上实现按键与LED的联动

    参考教程中的以下章节: 小知识点: hps_0.h 文件是qsys生成的FPGA侧外设 0xfc00 0000~0xffff ffff一共是0xffffffff - 0xfc000000 + 1 = ...

最新文章

  1. swift基础--变量
  2. mysql insert concat_MySQL常用内置函数说明+concat+insert(str,m,n,inser_str)+week(now())+ | 学步园...
  3. VS2010设置全局Include和Lib目录
  4. Java Spring MVC
  5. python文件打开模式中、使用w模式、文件指针指向_被python文件模式“w+”所迷惑
  6. github上的优秀项目和开发环境配置【转http://www.cnblogs.com/2018/archive/2012/11/09/2763119.html】...
  7. 王昶衡(帮别人名字作诗)
  8. Python 对象和类
  9. 你要练神功,就应该先自宫,对不?
  10. C++ explicit关键字详解(用于构造函数)
  11. MDM之Goodness分析报告
  12. PTA—念数字(C语言)两种方法
  13. 简单解决新浪博客“您短时间发表文章过多,请稍后再试”的问题
  14. paip.win32的internet扩展已停止工作解决大法
  15. View 添加阴影效果
  16. 58子站安居,经纪人营销管理平台登录接口加密逆向
  17. 小草手把手教你 LabVIEW 串口仪器控制——VISA 串口配置
  18. Selenium+Python+Pycharm自动化环境搭建具体步骤
  19. SAP UI5 Simple Form 属性 columnsL,columnsM,columnsXL 的属性深入剖析试读版
  20. 工业相机QE-量子转换效率

热门文章

  1. html5应用缓存教程视频教程,html5——应用缓存
  2. 计算机组成原理db和dw,汇编中的DW是什么意思那DB 它们什么作用
  3. new 与 delete 操作符
  4. 人脸识别经典开源项目
  5. 入门级深度学习服务器配置方案
  6. html 鼠标图标做成动画效果,7 个让人惊叹的 HTML5 鼠标动画
  7. C语言路漫漫,其修远兮
  8. 今日份安利:手机上怎么去图片水印
  9. 第十六届全国大学智能车竞赛华东赛区成绩汇总
  10. 蓝牙耳机与电脑连接篇