hc-12无线串口运用与矩阵映射
-
如何使用hc-12无线串口,实现小车与电脑的无线通讯,串口的矩阵映射如何实现?```
#include <Arduino.h>
#include <Esp32McpwmMotor.h>
#include <Esp32PcntEncoder.h>
#include "PidController.h"
#include <HardwareSerial.h>// #define HC_RX 37 // UART2的RX引脚
// #define HC_TX 38 // UART2的TX引脚// HardwareSerial HC12(2);
Esp32McpwmMotor motor;
Esp32PcntEncoder encoders[4];
PidController pid_controller[4];// 运动控制参数
const float wheel_diameter = 0.065;
const float pulses_per_rev = 1978.0f;
const float wheel_circumference = PI * wheel_diameter;
const float pulse_distance = wheel_circumference / pulses_per_rev;
const float wheel_base = 0.188f;enum MotionState { STOPPED, MOVING_FORWARD, MOVING_BACKWARD, ROTATING }; // 新增后退状态
MotionState currentState = STOPPED;unsigned long stopStartTime = 0;
int currentCommand = 0;
int taskStep = 0;
int64_t initial_ticks[4] = {0};
float target_distance = 0;
float target_angle = 0;void setup() {
// Serial.begin(115200);
Serial.begin(9600,SERIAL_8N1,37,38);
// HC12.begin(9600, SERIAL_8N1, HC_RX, HC_TX); -
-
@lin_nyy 建议他先搞一个USB转TTL的模块,先调试一下串口通信是否正常
-
@小鱼 试了,无法正常通讯,想看看矩阵映射的原函数在哪,或者有没有历程
-
@lin_nyy 用Seria1试试,另外怎么测试的,源码贴出来看看
-
@lin_nyy 另外esp32带BLE蓝牙功能
#include <NimBLEDevice.h> #define SERVICE_UUID "6E400001-B5A3-F393-E0A9-E50E24DCCA9E" #define CHARACTERISTIC_RX "6E400002-B5A3-F393-E0A9-E50E24DCCA9E" #define CHARACTERISTIC_TX "6E400003-B5A3-F393-E0A9-E50E24DCCA9E" NimBLECharacteristic* pTxCharacteristic; class ServerCallbacks : public NimBLEServerCallbacks { void onConnect(NimBLEServer* pServer) { Serial.println("Client connected"); } void onDisconnect(NimBLEServer* pServer) { Serial.println("Client disconnected"); } }; class RxCallbacks : public NimBLECharacteristicCallbacks { void onWrite(NimBLECharacteristic* pCharacteristic) { std::string rxValue = pCharacteristic->getValue(); if (rxValue.length() > 0) { Serial.print("Received: "); Serial.println(rxValue.c_str()); // Echo back pTxCharacteristic->setValue(rxValue); pTxCharacteristic->notify(); } } }; void setup() { Serial.begin(115200); Serial.println("Starting BLE UART"); NimBLEDevice::init("ESP32S3-BLE-UART"); NimBLEServer* pServer = NimBLEDevice::createServer(); pServer->setCallbacks(new ServerCallbacks()); NimBLEService* pService = pServer->createService(SERVICE_UUID); pTxCharacteristic = pService->createCharacteristic( CHARACTERISTIC_TX, NIMBLE_PROPERTY::NOTIFY ); NimBLECharacteristic* pRxCharacteristic = pService->createCharacteristic( CHARACTERISTIC_RX, NIMBLE_PROPERTY::WRITE ); pRxCharacteristic->setCallbacks(new RxCallbacks()); pService->start(); NimBLEAdvertising* pAdvertising = NimBLEDevice::getAdvertising(); pAdvertising->addServiceUUID(SERVICE_UUID); pAdvertising->start(); Serial.println("Waiting for client to connect..."); } void loop() { delay(1000); }
-
@小鱼 好的,没试过用serial2,晚些试一试,然后请问像这样的可以调用的rx,tx还有多少对?我记得esp32只有3个uart是吧,但好像不是每个都能调用
-
@lin_nyy serial serial1 serial2