C++相关配置讲解

C++类与头文件详解

.h

#ifndef _SINGLE_LED_H_
#define _SINGLE_LED_H_
...
#endif

作用:防止你不小心把同一把锁(头文件)连装两次,装两次就会报“重复定义”错。
形象点:进门先刷卡,第一次刷门开,第二次刷门就提示“您已进门”。

#include "driver/gpio.h"
#include "led_strip.h"
#include "esp_timer.h"
#include <mutex>
  • gpio.h:ESP32 的“引脚遥控器”,想拉高拉低某个脚就靠它。

  • led_strip.h:官方已经写好的“灯带驱动”,我们直接拿来用,不用自己发脉冲。

  • esp_timer.h:硬件定时器,后面“每隔 xx 毫秒闪一下”要靠它。

  • <mutex>:C++ 的“小锁头”,多线程同时抢灯的时候,谁先谁后靠它排队。

真正的“遥控器”——类声明

class SingleLed
{
public:
    SingleLed(gpio_num_t gpio);   // 构造函数——“把遥控器插到哪个口”
    ~SingleLed();                 // 析构函数——“用完把遥控器收好”
    void SetColor(...);           // 换颜色
    void TurnOn();                // 开灯
    void TurnOff();               // 关灯
    void Blink(...);              // 闪 N 次
    void StartContinuousBlink(...);// 一直闪
private:
    ...                           // 内部小零件,用户不用管
};

把类想成“遥控器”:

  • 构造函数 = 第一次装电池,并告诉它“我接在 GPIO18”。

  • 析构函数 = 把电池抠出来,免得遥控器一直跑。

  • public: 里的函数就是遥控器上的按钮,谁都能按。

  • private: 里的变量是遥控器里面的电路板,用户不必碰。

遥控器里藏了啥(成员变量)

std::mutex mutex_;              // 小锁头——多任务抢灯时排队
led_strip_handle_t led_strip_;  // 官方驱动句柄——真正发脉冲的家伙
uint8_t r_, g_, b_;             // 当前颜色缓存
esp_timer_handle_t blink_timer_;// 定时器句柄——“每隔 xx 毫秒叫我一下”
int blink_counter_;             // 还剩几次闪
int blink_interval_ms_;         // 闪的节奏

一句话:这些全是遥控器内部的小零件,用户不用直接摸。

两个“内部专用”小按钮(private 函数)

void StartBlinkTask(...);
void OnBlinkTimer();
  • StartBlinkTask:把“闪 N 次”这个活交给后台小线程。

  • OnBlinkTimer:每到期一次就“咔”切换一次亮灭。
    用户按的是 Blink()StartContinuousBlink(),后台怎么闪它们不管。

就是“遥控器”的外壳+说明书

  • 告诉你有哪些按钮(public 函数)。

  • 告诉你按钮按下去大概会干嘛(注释)。

  • 告诉你内部电路长啥样(private 成员),但别拆

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值