18.通过按键切换LED颜色

这篇博客介绍了如何通过按键操作,使用枚举语句来实现LED颜色的循环切换,包括红、绿、蓝、黄、紫、青和白七种颜色。理论部分解释了枚举的用法,使得代码更具可读性。程序代码中包含了一个条件判断,确保颜色从白色切换回红色,形成颜色循环。文章还提出了一个小思考,引导读者改进代码。
摘要由CSDN通过智能技术生成

实验现象

  按键每次按下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 5

unsigned char KEY_NUM = 0;
unsigned char Color_Value = 0;

enum{Co
STM32单片机通过按键实现跑马LED的闪烁状态切换,通常会涉及以下几个步骤: 1. **硬件连接**: - 将按键连接到STM32的输入引脚,作为中断源,一般可以使用GPIO口的中断功能。 - LED连接到GPIO口的输出引脚上,例如PA0-PA7或PB0-PB7。 2. **初始化**: - 初始化GPIO口设置为推挽输出模式,用于控制LED,同时配置按键的中断处理程序。 3. **按键检测**: - 设置按键中断使能,当按键按下时,系统会触发对应的中断服务函数。 4. **中断处理**: - 中断服务函数里,首先读取按键的状态,如果按键被按下,则进入某个状态,比如跑马模式;反之,如果按键松开则切换回另一种状态,如普通闪烁。 5. **状态切换**: - 跑马模式下,可以编写一个计数器,控制LED轮流点亮,周期性地改变颜色或亮度。 - 普通闪烁模式下,设置定时器或延时函数让LED按固定频率亮灭。 6. **状态控制**: - 使用if-else结构或者switch-case来判断当前是哪种状态,并相应执行对应的操作。 示例代码片段: ```c void KEY_IRQHandler(void) { if (GPIO_ReadPin(KEY_PORT, KEY_PIN) == GPIO_PinSet) { // 按键按下,切换到跑马模式 blinking_mode = RACING_LIGHT_MODE; } } void main() { setup_GPIOs(); enable_KEY_interrupt(); while (1) { switch (blinking_mode) { case RACING_LIGHT_MODE: race_lights(); break; default: normal_flashing(); break; } } } ```
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值