跳到内容

📦 模块篇 · 电赛单片机不翻页速通手册

📦 模块篇 — 常用电子模块速通:舵机、电机、电机编码器、TB6612、L298N、TCRT5000、HC-SR04、SSD1306、MPU6050、HC-05。

← 返回整体说明 · 🔧 功能篇 · 🧮 算法篇


舵机

【模块·舵机】不翻页!速通!电赛教程3:00

【模块·舵机】不翻页!速通!电赛教程

电导不是韩导4216播放

电机

【模块·电机】不翻页!速通!电赛教程4:27

【模块·电机】不翻页!速通!电赛教程

电导不是韩导2993播放

电机编码器

【模块·电机编码器】不翻页!速通!电赛教程7:08

【模块·电机编码器】不翻页!速通!电赛教程

电导不是韩导5671播放

javascript
// 示例伪代码

// 全局变量
volatile int count = 0;      // 编码器计数
volatile int speed = 0;      // 当前速度

// 中断服务函数:计数器更新
void IRQ_Handler() {
    // 根据A和B的状态进行计数
    if (A_edge == FALLING) {
        if (B == 0) {
            count++;  // B=0,加一
        } elseif (B == 1) {
            count--;  // B=1,减一
        }
    }
    else if (A_edge == RISING) {
        if (B == 1) {
            count++;  // B=1,加一
        } else if (B == 0) {
            count--;  // B=0,减一
        }
    }
    else if (B_edge == RISING) {
        if (A == 0) {
            count++;  // A=0,加一
        } else if (A == 1) {
            count--;  // A=1,减一
        }
    }
    else if (B_edge == FALLING) {
        if (A == 1) {
            count++;  // A=1,加一
        } else if (A == 0) {
            count--;  // A=0,减一
        }
    }
}
// 定时器中断服务函数:更新速度
void Timer_IRQHandler() {
    speed = count;  // 计算当前速度(单位为计数值)
    count = 0;  // 每次定时器中断时清零计数器
}
int main() {
    // 初始化部分
    pinMode(A_PIN, INPUT);      // 设置A引脚为输入
    pinMode(B_PIN, INPUT);      // 设置B引脚为输入
    // 配置A引脚为双沿触发
    setInterrupt(A_PIN, BOTH_EDGES, IRQ_Handler);
   // 配置B引脚为双沿触发
    setInterrupt(B_PIN, BOTH_EDGES, IRQ_Handler);
    Timer_Init(TIM1, PERIODIC, 100);  // 100ms周期定时器
    NVIC_SetIRQHandler(TIM1_IRQn, Timer_IRQHandler);  // 配置定时器中断处理函数
    while(1) {
        // 主循环,处理其他任务    }
}

TB6612 电机驱动

【模块·TB6612电机驱动】不翻页!速通!电赛教程6:22

【模块·TB6612电机驱动】不翻页!速通!电赛教程

电导不是韩导5791播放

L298N 电机驱动

【模块·L298N电机驱动】不翻页!速通!电赛教程5:23

【模块·L298N电机驱动】不翻页!速通!电赛教程

电导不是韩导5148播放

带稳压的 TB6612 电机驱动

【模块·带稳压TB6612电机驱动】不翻页!速通!电赛教程5:45

【模块·带稳压TB6612电机驱动】不翻页!速通!电赛教程

电导不是韩导8002播放

TCRT5000 循迹传感器

【模块·TCRT5000循迹传感器】不翻页!速通!电赛教程3:00

【模块·TCRT5000循迹传感器】不翻页!速通!电赛教程

电导不是韩导5457播放

HC-SR04 超声波测距传感器

【模块·HC-SR04超声波测距传感器】不翻页!速通!电赛教程4:43

【模块·HC-SR04超声波测距传感器】不翻页!速通!电赛教程

电导不是韩导2770播放

SSD1306 OLED 屏幕

【模块·SSD1306屏幕】不翻页!速通!电赛教程5:58

【模块·SSD1306屏幕】不翻页!速通!电赛教程

电导不是韩导2034播放

c++
// 示例库函数代码
#include <Wire.h>               // I2C 库
#include <Adafruit_GFX.h>        // GFX 库
#include <Adafruit_SSD1306.h>    // SSD1306 显示器库

#define SCREEN_WIDTH 128         // OLED 显示宽度
#define SCREEN_HEIGHT 64         // OLED 显示高度
#define OLED_ADDR      0x3C      // I2C 地址,默认是 0x3C
#define OLED_RESET     -1        // 重置引脚
Adafruit_SSD1306 display(SCREEN_WIDTH, SCREEN_HEIGHT, &Wire, OLED_RESET);  // 创建 SSD1306 对象,使用 I2C

intmain(void) {
    // 初始化硬件
    Wire.begin();  // 初始化 I2C 总线
    display.begin(SSD1306_SWITCHCAPVCC, OLED_ADDR);  // 初始化 SSD1306
    display.clearDisplay();  // 清空显示器
    display.setTextSize(1);       // 设置文字大小
    display.setTextColor(SSD1306_WHITE); // 设置文字颜色为白色
    delay(1000);  // 延时 1 秒

    while (1) {
        display.clearDisplay();  // 清空显示器
        display.setCursor(20, 10);    // 设置显示位置
        display.println("- LEO -");   // 显示文本
        display.display();  // 更新显示
        delay(200);  // 延时 200 毫秒
    }
}

MPU6050 六轴姿态传感器

【模块·MPU6050姿态传感器】不翻页!速通!电赛教程6:16

【模块·MPU6050姿态传感器】不翻页!速通!电赛教程

电导不是韩导7457播放

javascript
// 示例伪代码
// 1. 初始化部分
voidI2C_Init() {
    // 配置I2C引脚
    pinMode(I2C_SCL_PIN, ALT_FUNC_OPEN_DRAIN);
    pinMode(I2C_SDA_PIN, ALT_FUNC_OPEN_DRAIN);

    // I2C参数配置
    i2c_setup(port:0, speed:400kHz);  // 使用快速模式
}

// 2. 主程序
intmain() {
    I2C_Init();

    // 数据缓冲区
    uint8_traw_data[14];  // 14字节原始数据(6轴+温度)
    int16_t accel[3], gyro[3], temp;

    while(1) {
        // 从0x3B寄存器开始读取14字节数据
        I2C_Read_Reg(dev_addr:0x68, reg:0x3B, buf:raw_data, len:14);

        // 解析原始数据 (大端格式)
        accel[0] = (raw_data[0]<<8) | raw_data[1];  // X轴加速度
        accel[1] = (raw_data[2]<<8) | raw_data[3];  // Y轴加速度
        accel[2] = (raw_data[4]<<8) | raw_data[5];  // Z轴加速度
        temp     = (raw_data[6]<<8) | raw_data[7];  // 温度
        gyro[0]  = (raw_data[8]<<8) | raw_data[9];  // X轴角速度
        gyro[1]  = (raw_data[10]<<8)| raw_data[11]; // Y轴角速度
        gyro[2]  = (raw_data[12]<<8)| raw_data[13]; // Z轴角速度

        // 保存数据 (伪代码)
        save_to_storage(accel, gyro, temp);

        delay(10);  // 10ms采样间隔
    }
}

HC-05 蓝牙模块

【模块·HC-05蓝牙通信模块】不翻页!速通!电赛教程9:36

【模块·HC-05蓝牙通信模块】不翻页!速通!电赛教程

电导不是韩导6798播放