51单片机驱动步进电机全解析:从ULN2003接线到定时器中断编程
1. 项目缘起为什么是51单片机与步进电机最近在整理工作室的旧物翻出了一块落灰的普中51开发板和几个42步进电机。看着这些“老伙计”突然想起当年初学单片机时第一个能“动起来”的项目就是控制步进电机转圈。对于很多电子爱好者或自动化专业的同学来说用51单片机驱动步进电机几乎是一个必经的“仪式”。它不像点亮一个LED那样简单也不像驱动液晶屏那样复杂它处在这样一个微妙的位置你需要理解时序、驱动电路、电机特性最终让一个物理部件按照你的指令精确运动。这种从代码到物理运动的反馈带来的成就感是巨大的。然而这个过程也布满了“坑”。网上教程虽多但往往只给一段代码告诉你“这么接就能转”。结果自己一上手电机要么不动要么乱抖要么发热严重。问题出在哪是时序不对电流不足还是共地没做好这些细节才是从“看似能转”到“稳定可靠”的关键。今天我就以最经典的STC89C52单片机驱动最常见的42步进电机为例把整个流程掰开揉碎从原理到接线从代码到调试尤其是那些容易忽略的细节和踩过的坑完整地梳理一遍。无论你是刚拿到开发板的新手还是想重温基础的老鸟这篇内容都能帮你搭建一个清晰、可复现的实践框架。2. 核心器件选型与工作原理深潜在动手接线和写代码之前我们必须先搞清楚手里两样东西的“脾气”51单片机和步进电机。理解它们的工作原理和限制是后续一切操作的基础。2.1 51单片机的GPIO驱动能力剖析我们常用的STC89C52其I/O口在准双向模式下的拉电流和灌电流能力是有限的。官方数据手册通常标明单个I/O口的最大拉电流输出高电平时从单片机流出的电流约为20mA最大灌电流输出低电平时流入单片机的电流约为20mA。但要注意这是单个引脚的理论极限整个端口的电流总和以及整个芯片的功耗还有更严格的限制。这意味着什么意味着单片机引脚无法直接驱动步进电机。步进电机的线圈在通电瞬间电流可能达到数百mA甚至更高远超单片机引脚的承受能力。直接连接轻则导致电机无力、抖动重则烧毁单片机I/O口甚至整个芯片。因此驱动电路是必须的它的核心作用有两个电流放大和电气隔离。单片机只负责提供微弱的控制信号高/低电平驱动电路负责根据这个信号接通或切断供给电机线圈的大电流。2.2 步进电机数字脉冲与机械角度的翻译官步进电机是一种将电脉冲信号转换成相应角位移或线位移的电磁执行元件。每输入一个脉冲电机就转动一个固定的角度步距角。我们常用的42步进电机步距角通常是1.8度。也就是说200个脉冲电机刚好转一圈360度。常见的两相四线步进电机如42BYGH系列内部有两组线圈我们称之为A相和B相。每组线圈有一个头和一个尾所以引出四根线。电机的旋转本质上就是按照特定的顺序给这两组线圈通电产生旋转磁场拖动永磁转子转动。最基础的驱动顺序是“单四拍”A-B-A‘-B‘和“双四拍”AB-BA‘-A‘B‘-AB。但为了运行更平稳、扭矩更大最常用的是“八拍”方式即单双拍交替A-AB-B-BA‘-A‘-A‘B‘-B‘-B‘A。后面我们的程序也将以八拍为例。理解这个通电顺序是理解驱动代码的关键。3. 硬件系统搭建从原理图到可靠连接理论清楚了我们开始动手搭建硬件。这个环节的可靠性直接决定了项目成败。3.1 驱动电路方案选择与实战接线如前所述我们需要一个驱动电路。对于初学者或中小功率42电机最经济实用的方案是使用ULN2003达林顿晶体管阵列模块。它内部集成了7路达林顿管和续流二极管每一路都能提供最高500mA的驱动电流完全能满足小型42电机的需求。接线步骤如下务必遵循顺序电源分离首先明确单片机系统电源和电机驱动电源最好分开。单片机用USB供电5V即可。电机驱动电源则需要根据你的电机额定电压来常见有12V或24V。使用一个独立的稳压电源给驱动板供电。这是避免电机干扰单片机稳定工作的第一道防线。共地将单片机电源的GND、驱动板电源的GND、驱动模块的GND三者用导线可靠地连接在一起。“共地”是保证信号基准一致的关键否则控制信号会紊乱。信号连接用杜邦线将单片机的四个I/O口例如P1.0, P1.1, P1.2, P1.3分别连接到ULN2003模块的四个输入引脚IN1-IN4。电机连接识别你的42步进电机的四根线。通常两两相通的两根线属于同一相。用万用表电阻档测量阻值较小的两根是一组线圈。将这两组线圈的四个头分别接到ULN2003模块的四个输出端OUT1-OUT4。接线顺序会影响电机的转向如果转向反了任意交换同一组线圈的两根线即可。电源连接将电机驱动电源的正极如12V接到ULN2003模块的电源输入正极通常标有12V或VCC负极接到模块的GND。模块上可能还有一个给内部逻辑供电的5V引脚如果模块需要则从单片机系统取5V接上。注意接线时务必断电操作特别是连接电机电源时确保电压电流在电机和驱动板的额定范围内。ULN2003模块上的指示灯可以帮助你初步判断信号是否送达。3.2 关于“张大头”驱动板与TB6600的补充在热搜词里看到了“张大头步进电机”和“TB6600”。这里简单说明一下这是更进阶的驱动方案。“张大头”驱动板通常指一种集成度更高的步进电机驱动模块可能集成了像DRV8825或A4988这类专业步进电机驱动芯片。它们支持微步细分如1/16、1/32步能让电机运行更平滑、噪音更小、低速扭矩更好。使用时需要通过跳线帽设置细分和电流并通过STEP脉冲和DIR方向两个信号来控制对单片机来说编程更简单只需发脉冲和电平但硬件接线和配置稍复杂。TB6600这是一款非常经典和强大的步进电机驱动器能驱动更大电流如4.5A的57、86电机。它同样使用“脉冲方向”的控制模式并带有丰富的细分选择、电流调节和自动半流功能。用51单片机控制TB6600本质上就是控制两个I/O口一个产生指定数量的脉冲另一个控制高低电平决定方向。对于本次入门项目我们优先使用ULN2003方案因为它最直观地揭示了步进电机最基本的“相序”控制原理。理解了本质再过渡到“脉冲方向”的集成驱动器方案就会豁然开朗。4. 软件驱动八拍时序的代码实现与优化硬件准备就绪接下来就是让单片机“说话”输出正确的时序脉冲。4.1 基础八拍驱动代码解析我们使用最直接的延时法来产生八拍时序。以下代码基于Keil C51环境单片机频率为11.0592MHz。#include REGX52.H #include INTRINS.H // 用于_nop_()函数 // 定义控制引脚连接到ULN2003的IN1-IN4 sbit MOTOR_A P1^0; // 对应A相 sbit MOTOR_B P1^1; // 对应B相 sbit MOTOR_C P1^2; // 对应A相反相 sbit MOTOR_D P1^3; // 对应B相反相 // 定义一个基础的毫秒级延时函数粗略延时用于示例 void DelayMs(unsigned int ms) { unsigned int i, j; for(ims; i0; i--) for(j110; j0; j--); } // 八拍正转一个周期 void Motor_StepCW() { // 拍序 1: A MOTOR_A 1; MOTOR_B 0; MOTOR_C 0; MOTOR_D 0; DelayMs(2); // 每一步的持续时间控制速度 // 拍序 2: AB MOTOR_A 1; MOTOR_B 1; MOTOR_C 0; MOTOR_D 0; DelayMs(2); // 拍序 3: B MOTOR_A 0; MOTOR_B 1; MOTOR_C 0; MOTOR_D 0; DelayMs(2); // 拍序 4: B A反即C MOTOR_A 0; MOTOR_B 1; MOTOR_C 1; MOTOR_D 0; DelayMs(2); // 拍序 5: A反C MOTOR_A 0; MOTOR_B 0; MOTOR_C 1; MOTOR_D 0; DelayMs(2); // 拍序 6: A反 B反即C D MOTOR_A 0; MOTOR_B 0; MOTOR_C 1; MOTOR_D 1; DelayMs(2); // 拍序 7: B反D MOTOR_A 0; MOTOR_B 0; MOTOR_C 0; MOTOR_D 1; DelayMs(2); // 拍序 8: A B反即A D MOTOR_A 1; MOTOR_B 0; MOTOR_C 0; MOTOR_D 1; DelayMs(2); } // 八拍反转一个周期顺序相反 void Motor_StepCCW() { // 顺序与正转相反代码略... } void main() { while(1) { // 正转200步即一圈对于1.8度步距角电机 for(int i0; i200; i) { Motor_StepCW(); } DelayMs(1000); // 停1秒 // 反转200步回到原点 for(int i0; i200; i) { Motor_StepCCW(); } DelayMs(1000); // 停1秒 } }代码关键点解读引脚定义我们将四根线定义为A, B, A_, B_或C, D对应电机的两相线圈及其反相。这是理解八拍逻辑的基础。八拍时序Motor_StepCW函数完整实现了一个周期的8个通电状态。每个状态后跟一个DelayMs(2)这个延时决定了每一步的执行时间从而决定了电机的转速。延时越短转速越快但过短会导致电机跟不上而失步。主循环通过循环调用Motor_StepCW函数200次让电机旋转一圈。这是开环控制最核心的部分——我们通过控制脉冲数量来控制角位移。4.2 从延时驱动到定时器中断驱动的进化上述延时法虽然直观但有一个致命缺点CPU被长时间独占在空循环里。在延时期间单片机无法处理其他任何任务如检测按键、刷新显示。这对于实际项目是不可接受的。解决方案是使用定时器中断。我们可以配置一个定时器如定时器0每间隔一个固定时间例如1ms产生一次中断。在中断服务程序中更新步进电机的当前拍序并输出到I/O口。这样主程序while(1)循环就完全被释放出来可以执行其他逻辑。定时器中断驱动框架示例#include REGX52.H sbit MOTOR_A P1^0; sbit MOTOR_B P1^1; sbit MOTOR_C P1^2; sbit MOTOR_D P1^3; // 八拍正转序列表 unsigned char code CW_Table[8] { 0x01, // 0001 A 0x03, // 0011 AB 0x02, // 0010 B 0x06, // 0110 B A_ 0x04, // 0100 A_ 0x0C, // 1100 A_ B_ 0x08, // 1000 B_ 0x09 // 1001 A B_ }; unsigned char step_index 0; // 当前拍序索引 unsigned int step_count 0; // 需行走步数计数器 unsigned int target_steps 0; // 目标步数 void Timer0_Init(void) { TMOD 0xF0; // 清除T0模式位 TMOD | 0x01; // 设置T0为模式116位定时器 TH0 0xFC; // 定时1ms的初值基于11.0592MHz TL0 0x66; ET0 1; // 使能T0中断 EA 1; // 开启总中断 TR0 1; // 启动T0 } void Timer0_ISR() interrupt 1 { TH0 0xFC; // 重装初值 TL0 0x66; if(target_steps 0) { // 输出当前拍序 P1 (P1 0xF0) | (CW_Table[step_index] 0x0F); step_index; if(step_index 8) step_index 0; target_steps--; // 走完一步目标步数减1 if(target_steps 0) { // 可以在这里设置一个标志位通知主程序“移动完成” // 或者停止电机输出将所有引脚置0 P1 0xF0; } } } void Motor_RunSteps(unsigned int steps) { target_steps steps; // 设置目标步数中断服务程序会自动执行 } void main() { Timer0_Init(); while(1) { // 主循环可以自由处理其他任务比如扫描按键 if(/* 某个按键按下 */) { Motor_RunSteps(200); // 按下按键电机转一圈 } // 可以在这里刷新OLED显示时间如热搜词提到的 // Display_Time(); } }进化优势非阻塞主程序循环不再被延时阻塞可以轻松实现多任务。速度精确电机速度由定时器中断周期精确控制不受主程序代码执行时间影响。易于扩展可以方便地加入加减速控制通过动态改变定时器重装值、方向控制等高级功能。5. 调试实录与常见问题排查即使代码和接线看起来都正确电机也可能不听话。下面是我在多次项目中总结的排查清单。5.1 电机完全不转或抖动无力这是最常见的问题。请按以下顺序排查电源与共地首要检查用万用表测量驱动板电机电源输入端电压是否正确如12V。再测量单片机电源是否为稳定的5V。关键确认务必确保单片机GND和驱动板GND已用导线可靠连接。这是绝大多数“信号有但电机不动”问题的根源。信号通路在电机运行状态下用万用表电压档或示波器测量ULN2003的输入引脚IN1-IN4。应该能看到规律变化的高低电平0V和5V左右。如果没有问题在单片机程序或连接线。测量ULN2003的输出引脚OUT1-OUT4。应该能看到规律变化的高电平接近电机电源电压和低电平。如果输出没有变化可能是ULN2003损坏或供电不对。电机线圈断开电机连线用万用表电阻档测量电机四根线。两两测量应该能找到两组阻值相同的线圈通常几欧姆到几十欧姆。如果阻值无穷大或为零电机线圈可能开路或短路。驱动能力如果电机只是嗡嗡响或轻微抖动可能是驱动电流不足。检查电机额定电流并确认你的电源和驱动模块如ULN2003能否提供足够的电流。ULN2003单路输出500mA但多路同时输出时总电流会有限制。对于电流较大的电机考虑换用更强大的驱动器如L298N、TB6600等。5.2 电机转向错误或步进声音异常转向错误如果电机转向与预期相反最简单的方法是交换同一组线圈的两根接线。例如将接到OUT1和OUT3的线对调。步进声音大、有振动速度过快降低速度增大DelayMs的值或降低定时器中断频率。电机有一个启动频率超过这个频率直接启动容易失步。缺少加减速对于需要快速启停或高速运行的情况必须加入加减速算法如S曲线、梯形曲线。从低频逐步加速到目标频率停止前逐步减速。驱动方式八拍比四拍运行更平滑。如果使用集成驱动器尝试启用更高的微步细分如1/16步可以极大改善低速振动和噪音。电机发热严重静态电流过大步进电机在停止时如果线圈仍保持通电保持扭矩会持续发热。对于不需要保持扭矩的场景可以在电机停止后将控制信号全部置零切断线圈电流。驱动电流设置过大如果使用可调电流的驱动器如TB6600、A4988应将电流设置为略高于电机额定电流而不是盲目调大。过大的电流是发热的主因。5.3 关于“堵转检测”的思考热搜词中提到了“单片机步进电机开环驱动堵转检测”。这是一个进阶话题。在开环控制中我们假设电机始终跟随脉冲旋转。但如果负载过大导致电机堵转失步控制器是不知道的会造成位置错误累积。实现简单的堵转检测思路有检测相电流堵转时电机线圈电流会急剧上升。可以通过采样电阻检测驱动电路电流超过阈值则判断为堵转。反电动势检测电机旋转时会产生反电动势。通过检测线圈两端在未通电期间的感应电压可以间接判断转子是否在转动。这种方法电路和算法较复杂。 对于大多数入门和中等要求的应用确保足够的扭矩裕度选择扭矩比实际需求大的电机和加入机械限位开关是更简单可靠的防堵转方案。6. 项目进阶与扩展方向当基础的单电机控制稳定后你可以尝试以下扩展这会让你的项目更贴近实际应用。6.1 多轴联动与简易数控控制一个电机只能让物体做一维运动。控制两个电机就可以实现XY平台或绘图仪。你需要为每个电机分配独立的定时器和控制变量如step_index,target_steps。更高级的做法是使用一个定时器在中断中同时处理多个电机的步进节拍这需要更精细的算法设计。6.2 集成人机交互按键与显示正如热搜词中提到的“51单片机oled显示时间”我们可以为系统增加交互界面。按键输入用于设置电机转动步数、速度、方向。在主循环中扫描按键状态改变相应的控制变量如target_steps。OLED显示使用I2C或SPI接口的OLED屏幕实时显示当前状态如“目标步数200”、“当前速度10转/分”、“运行中/停止”。这需要你掌握OLED的驱动库。将显示刷新函数放在主循环中由于我们使用了定时器中断控制电机显示不会卡顿。6.3 从开环到闭环的探索开环控制简单但无法应对负载变化和失步。闭环控制通过增加位置传感器如光电编码器来反馈转子的实际位置形成闭环。硬件在电机后端加装增量式编码器。51单片机可以通过外部中断来捕获编码器的脉冲。软件控制器单片机比较“目标位置”和“编码器反馈的实际位置”计算出误差然后通过调整脉冲输出例如PID算法来消除这个误差。这使得系统具有了抗干扰和纠错能力精度和可靠性大幅提升但软件复杂度也显著增加。对于51单片机来说实现多轴闭环PID控制可能会接近其性能极限通常这是STM32等更高级MCU的舞台。从一块简单的51开发板和一个步进电机开始你实际上已经推开了一扇通往嵌入式控制、自动化甚至机器人领域的大门。每一次调试失败后的排查每一次功能实现后的喜悦都是实实在在的经验积累。硬件连接要一丝不苟软件时序要逻辑清晰遇到问题要层层分解。这个项目麻雀虽小五脏俱全希望这份详细的梳理能帮你少走弯路顺利体验到从代码到物理运动控制的乐趣。

相关新闻

AI编程成本优化实战:七招工程化手段实现Token消耗降低60%

AI编程成本优化实战:七招工程化手段实现Token消耗降低60%

1. 项目概述:为什么我们需要关注Token节省? 最近和几个技术团队的朋友聊天,发现大家从“玩一玩AI编程助手”的阶段,普遍进入了“真刀真枪把AI集成到日常开发流水线”的阶段。随之而来的一个现实问题就是:账单开始变得有…

2026/10/11 13:00:23 阅读更多 →
如何用Sunshine打造专属游戏串流平台:5步实现跨设备畅玩PC大作

如何用Sunshine打造专属游戏串流平台:5步实现跨设备畅玩PC大作

如何用Sunshine打造专属游戏串流平台:5步实现跨设备畅玩PC大作 【免费下载链接】Sunshine Self-hosted game stream host for Moonlight. 项目地址: https://gitcode.com/GitHub_Trending/su/Sunshine 你是否曾经想过,在客厅的智能电视上玩最新的…

2026/10/11 13:59:21 阅读更多 →
ROBLOX游戏开发入门:零代码创建与控制Avatar角色

ROBLOX游戏开发入门:零代码创建与控制Avatar角色

这次我们来看一个面向零基础开发者的 ROBLOX 游戏制作教程,重点是第四期关于角色 Avatar 和 Humanoid 的内容。对于想入门 ROBLOX 游戏开发,尤其是想理解如何创建和控制游戏内角色的朋友,这期内容非常关键。它不涉及复杂的编程,而…

2026/10/11 13:59:21 阅读更多 →

最新新闻

Python金融科技实战:量化回测、风控模型与工程化落地

Python金融科技实战:量化回测、风控模型与工程化落地

先说个背景。我前两年参与过一个从零搭建的量化信号系统的项目,技术栈里最核心的就是 Python。那段时间接触了不少金融科技方向的案例和团队,越来越感觉 Python 在 FinTech 里几乎是无处不在的。无论是量化交易、风险模型、信贷风控,还是财报…

2026/10/13 16:20:34 阅读更多 →
WooCommerce 3.5.2 安装包获取与环境搭建完整指南

WooCommerce 3.5.2 安装包获取与环境搭建完整指南

简介:Woocommerce 3.5.2 安装包面向使用 WordPress 搭建在线商店的开发者与店主,提供创建和管理电商站点所需的完整插件文件,适合具备一定 WordPress 基础、希望自行部署或研究插件结构的用户。压缩包共 1099 个文件,约 3.73MB&am…

2026/10/13 16:20:34 阅读更多 →
Python在金融科技中的实战应用:数据处理、量化回测与风控建模

Python在金融科技中的实战应用:数据处理、量化回测与风控建模

Python这几年在金融圈的热度,不用我多说。如果你去翻各大券商、基金公司、银行金融科技岗的招聘要求,Python基本是标配技能。我身边不少做量化、风控、数据分析的朋友,日常工作的主力工具就是Python,从拉数据、清洗、建模到生成报…

2026/10/13 16:20:34 阅读更多 →
t3code 跨平台 CLI 工具拆解:Electron 与 CLI 双形态架构及安装配置指南

t3code 跨平台 CLI 工具拆解:Electron 与 CLI 双形态架构及安装配置指南

1. 从 t3code 这个标题说起:一个跨平台 CLI 工具的真实拆解第一次看到 t3code 这个名字,我下意识把它和一堆 CLI 工具联想到了一起。原因很简单,最近一两年围绕终端体验的工具爆发式增长,从 codex cli 到 openspec cli&#xff0c…

2026/10/13 16:20:34 阅读更多 →
PS5辅助工具AnyPS5:游戏库管理、存档备份与远程下载实践

PS5辅助工具AnyPS5:游戏库管理、存档备份与远程下载实践

最近整理我那台 PS5 的时候,发现一个挺尴尬的现实:机器里已经装了几十款数字版和实体版游戏,但每次想找某个老游戏,要么在首页翻半天,要么得先开机再进内容库按字母一个个找。主机自带的界面其实已经做得不错&#xff…

2026/10/13 16:20:34 阅读更多 →
从直连到聚合:大模型API对接的架构演进与实战避坑指南

从直连到聚合:大模型API对接的架构演进与实战避坑指南

1. 从直连到聚合:API对接思路的转变2026年开年到现在,我陆续参与了三个不同规模的AI应用项目,从智能客服到内容生成工具,再到一个内部知识库问答系统。这三个项目有一个共同点:都需要对接大模型API。而在这三个项目的推…

2026/10/13 16:19:32 阅读更多 →

日新闻

物联网系统集成避坑指南:从选型到验收的关键要点

物联网系统集成避坑指南:从选型到验收的关键要点

做了这么多年物联网系统集成的项目,我最大的感受是,大部分坑不是出在技术前沿,而是出在一些看起来很平常的地方。设备选了便宜的、协议没问清楚、现场没摸透、验收标准写得含糊——这些细枝末节,最后都会变成延期、超支和扯皮的大…

2026/10/13 0:00:57 阅读更多 →
ESP32舵机控制全攻略:从PWM原理到高级玩法与常见故障排查

ESP32舵机控制全攻略:从PWM原理到高级玩法与常见故障排查

如果你玩ESP32有一阵子了,很难不碰到舵机控制这道坎。做智能小车要转方向,做机械臂要抬关节,做云台要偏航俯仰,背后都是同一个东西在干活:舵机。而我见过太多人卡在“代码能编译、舵机就是不听话”这个阶段&#xff0c…

2026/10/13 0:00:57 阅读更多 →
CAN总线原理与STM32实战:抗干扰、仲裁、错误处理全解析

CAN总线原理与STM32实战:抗干扰、仲裁、错误处理全解析

1. 为什么CAN总线至今仍是工业现场的“硬通货”?——从汽车底盘到智能温室的真实需求你有没有拆过一辆老款燃油车的中控台?或者调试过某高校实验室里那台跑着Modbus协议却频频丢帧的PLC控制柜?又或者,在某个农业物联网项目里&…

2026/10/13 0:00:57 阅读更多 →

周新闻

流感时间序列预测实战:ARIMA/LSTM全流程拆解与避坑指南

流感时间序列预测实战:ARIMA/LSTM全流程拆解与避坑指南

简介:基于 ARIMA、LSTM、Transformer 等模型的流感时间序列预测 Python 源码,面向计算机相关专业课程设计与期末大作业学生,以及项目实战学习者。内容覆盖预处理、平稳性检验、定阶、残差分析、多模型对比预测的完整时序建模流程,…

2026/10/13 2:54:56 阅读更多 →
影刀RPA新手教程:键盘模拟输入实战——输入文本与模拟按键的区别

影刀RPA新手教程:键盘模拟输入实战——输入文本与模拟按键的区别

影刀RPA新手教程:键盘模拟输入实战——输入文本与模拟按键的区别 做影刀RPA自动化,十个新手有八个栽在"往输入框里填东西"这件事上:要么填不进去,要么填了一半,要么直接把原来内容追加在后面。这背后的根因&…

2026/10/12 0:16:38 阅读更多 →
影刀RPA新手教程:阅文起点小说数据采集实战——书籍信息与章节内容

影刀RPA新手教程:阅文起点小说数据采集实战——书籍信息与章节内容

影刀RPA新手教程:阅文起点小说数据采集实战——书籍信息与章节内容 1. 认识影刀:什么场景该用RPA采小说数据 起点中文网的页面结构相对稳定——分类榜单、书籍详情、章节内容三块独立页面,跳转链路清晰。这种场景非常适合影刀自动化&#x…

2026/10/13 1:58:08 阅读更多 →

月新闻

我发现了一个新思路:用 Remotion + Claude Code 像写代码一样自动化生成短视频

我发现了一个新思路:用 Remotion + Claude Code 像写代码一样自动化生成短视频

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/12 21:05:09 阅读更多 →
Windows下 Codex 中 Chrome 和 Computer Use 插件不可用问题排查及解决参考方式:TaoToken 统一 Key 配置与验证

Windows下 Codex 中 Chrome 和 Computer Use 插件不可用问题排查及解决参考方式:TaoToken 统一 Key 配置与验证

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/13 14:57:39 阅读更多 →
黑夜航拍船只数据集训练YOLOV5模型全流程解析

黑夜航拍船只数据集训练YOLOV5模型全流程解析

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/12 18:11:17 阅读更多 →