返回首页

ESP8266 和 CH32V003 上的交通灯:代码和原理图

ESP8266 和 CH32V003 上的教育房间交通灯项目演示了 GPIO 和时序的基本操作。为 Arduino IDE 和 WCH SDK 提供完整代码,并附带引脚连接原理图。适合学习嵌入式编程。

DIY 交通灯:ESP8266 与 CH32V003 附代码
Advertisement 728x90

用 ESP8266 和 CH32V003 搭建房间信号灯

将红黄绿信号灯模块连接到 ESP8266 或 CH32V003,实现基本循环:红灯 5 秒、黄灯 1 秒、绿灯 5 秒并闪烁。这个项目展示 GPIO 配置、延时和循环,无需外部库。非常适合嵌入式开发的入门实践。

ESP8266 使用 GPIO 13(红)、12(黄)、14(绿)。CH32V003 使用 PC5、PC6、PC7 端口。代码精简,模拟真实信号灯的过渡准备。

ESP8266 的 GPIO 配置

定义引脚并设置为输出模式。使用限流电阻保护 LED。

Google AdInline article slot
const byte redLedPin = 14;
const byte yellowLedPin = 12;
const byte greenLedPin = 13;

void setup() {
  pinMode(redLedPin, OUTPUT);
  pinMode(yellowLedPin, OUTPUT);
  pinMode(greenLedPin, OUTPUT);
}

loop() 中运行以下序列:

  • 红灯高电平 5000 毫秒。
  • 黄灯高电平 1000 毫秒,然后两者低电平。
  • 绿灯高电平 5000 毫秒。
  • 三次闪烁循环:高电平 500 毫秒,低电平 500 毫秒。
  • 黄灯高电平 1000 毫秒,然后低电平。
void loop() {
  // 红灯
  digitalWrite(redLedPin, HIGH);
  delay(5000);

  // 黄灯
  digitalWrite(yellowLedPin, HIGH);
  delay(1000);

  digitalWrite(redLedPin, LOW);
  digitalWrite(yellowLedPin, LOW);
  
  // 绿灯
  digitalWrite(greenLedPin, HIGH);
  delay(5000);

  for (byte i = 0; i < 3; i++) {
    digitalWrite(greenLedPin, HIGH);
    delay(500);
    
    digitalWrite(greenLedPin, LOW);
    delay(500);
  }

  // 黄灯
  digitalWrite(yellowLedPin, HIGH);
  delay(1000);
  digitalWrite(yellowLedPin, LOW);
}

通过 USB 连接,使用 CH340 驱动和 Arduino IDE(安装 ESP8266 板包)。正常烧录即可。

切换到 CH32V003

一款紧凑的 RISC-V 微控制器,适合低功耗任务。需要 WCH LinkE 编程器:板子 USB 供电,SWD 烧录。将信号灯连接到 PC5(红)、PC6(黄)、PC7(绿)。

Google AdInline article slot
/* 全局定义 */
#define RED_LED_PIN     GPIO_Pin_5 
#define YELLOW_LED_PIN  GPIO_Pin_6
#define GREEN_LED_PIN   GPIO_Pin_7

逻辑保持一致:用 delay_ms 替换 delay,用 GPIO_WriteBit。初始化:

  • RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOC, ENABLE)
  • GPIO_InitTypeDef 配置为输出推挽模式。

loop() 适配 WCH SDK:使用定时器实现状态序列。完整代码使用标准 CH32V003FUN 函数,减少依赖。

平台对比

| 参数 | ESP8266 | CH32V003 |

Google AdInline article slot

|----------|-------------|-------------|

| 核心 | Tensilica L106 | RISC-V2A |

| 引脚 | GPIO12-14 | PC5-7 |

| 供电 | USB | USB + 编程器 |

| 烧录 | Arduino IDE | WCH LinkE + IDE |

| 价格 | 中等 | 低 |

ESP8266 因 USB 和 Arduino 生态更适合新手。CH32V003 节省资源,但需编程器。

主要优势:

  • 代码极简,无需库。
  • 易于调整时序。
  • 可扩展到按钮或传感器。

关键提示

  • GPIO 接线: 始终使用 220–330 欧姆电阻限流。
  • 时序: delay() 会阻塞 CPU;进阶项目用 millis() 或定时器。
  • 调试: 通过串口监控状态日志。
  • 端口: CH32V003 初次使用坚持 PCx 端口——暂不涉及 PWM。
  • 扩展: 用有限状态机(FSM)替换线性循环管理状态。

这个项目易于复制:拿个红黄绿模块,面包板上搞定。完美展示嵌入式编程基础。

— Editorial Team

Advertisement 728x90

继续阅读