循迹能亮 电机烧录也能动 但是结合起来不能循迹是什么原因 电子还是程序的原因
6条回答 默认 最新
- 阿里嘎多学长 2023-04-07 06:19关注
以下内容部分参考ChatGPT模型:
首先需要确认循迹模块的输出是否正确,可以通过示波器等工具观察输出波形是否符合预期。如果循迹模块输出正确,则需要检查程序中是否正确读取了循迹模块的输出,并根据读取的结果控制电机的转动。同时还需要注意电机控制的算法是否正确,例如PID算法等是否正确实现。可以尝试在程序中输出调试信息,观察程序的执行过程是否符合预期,以便定位问题所在。以下是一个简单的示例代码,可供参考:
#include <stm32f4xx.h> #include <stdbool.h> #define TRACKING_PORT GPIOA #define TRACKING_PIN GPIO_Pin_0 #define MOTOR_PORT GPIOB #define MOTOR_PIN GPIO_Pin_0 bool track_is_on_track(void) { return GPIO_ReadInputDataBit(TRACKING_PORT, TRACKING_PIN) == Bit_RESET; } void motor_forward(void) { GPIO_SetBits(MOTOR_PORT, MOTOR_PIN); } void motor_stop(void) { GPIO_ResetBits(MOTOR_PORT, MOTOR_PIN); } int main(void) { RCC_AHB1PeriphClockCmd(RCC_AHB1Periph_GPIOA | RCC_AHB1Periph_GPIOB, ENABLE); GPIO_InitTypeDef GPIO_InitStructure; // 初始化循迹模块引脚为输入模式 GPIO_InitStructure.GPIO_Pin = TRACKING_PIN; GPIO_InitStructure.GPIO_Mode = GPIO_Mode_IN; GPIO_InitStructure.GPIO_PuPd = GPIO_PuPd_UP; GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz; GPIO_Init(TRACKING_PORT, &GPIO_InitStructure); // 初始化电机引脚为输出模式 GPIO_InitStructure.GPIO_Pin = MOTOR_PIN; GPIO_InitStructure.GPIO_Mode = GPIO_Mode_OUT; GPIO_InitStructure.GPIO_OType = GPIO_OType_PP; GPIO_InitStructure.GPIO_PuPd = GPIO_PuPd_NOPULL; GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz; GPIO_Init(MOTOR_PORT, &GPIO_InitStructure); while (1) { if (track_is_on_track()) { motor_forward(); } else { motor_stop(); } } }
如果我的建议对您有帮助、请点击采纳、祝您生活愉快
本回答被题主选为最佳回答 , 对您是否有帮助呢?解决 无用评论 打赏 举报
悬赏问题
- ¥15 2020长安杯与连接网探
- ¥15 关于#matlab#的问题:在模糊控制器中选出线路信息,在simulink中根据线路信息生成速度时间目标曲线(初速度为20m/s,15秒后减为0的速度时间图像)我想问线路信息是什么
- ¥15 banner广告展示设置多少时间不怎么会消耗用户价值
- ¥16 mybatis的代理对象无法通过@Autowired装填
- ¥15 可见光定位matlab仿真
- ¥15 arduino 四自由度机械臂
- ¥15 wordpress 产品图片 GIF 没法显示
- ¥15 求三国群英传pl国战时间的修改方法
- ¥15 matlab代码代写,需写出详细代码,代价私
- ¥15 ROS系统搭建请教(跨境电商用途)