两个电机同时启动,要求它转向相反,转速控制在100转每秒。在这个基础上呢,摁下外部中断控制键后,要求10秒,两个电机同时停止。
1条回答 默认 最新
- ShowMeAI 2022-12-07 10:08关注
要实现这个控制方案,需要使用直流电机驱动器和相关的控制电路。首先,通过调节电机驱动器的输入电压和电流来控制电机的转速,以达到 100 转每秒的要求。然后,通过控制电机驱动器的方向控制引脚来实现两个电机的转向相反的控制。
摁下外部中断控制键后,可以通过计时器或计数器来计算 10 秒的时间,然后通过断开电机驱动器的电源来停止两个电机的运转。
此外,还可以通过使用编码器或传感器来检测电机的转速和转向,并通过微控制器或专用的控制器来实现对电机的更精细的控制。
#include <stdio.h> #include <stdlib.h> #include <wiringPi.h> // 定义电机驱动器和相关参数 #define MOTOR_DRIVER_1 1 #define MOTOR_DRIVER_2 2 #define ROTATION_SPEED 100 // 函数声明 void start_motors(); void stop_motors(); void external_interrupt_handler(); // 全局变量 bool stop_motors_flag = false; int main() { // 启动电机 start_motors(); while (1) { // 检查外部中断控制键是否摁下 if (is_external_interrupt_triggered()) { // 如果摁下,则调用处理函数 external_interrupt_handler(); } // 检查停止电机的标志是否被设置 if (stop_motors_flag) { // 如果被设置,则停止电机 stop_motors(); break; } } return 0; } void start_motors() { // 为两个电机分别设置转速 set_rotation_speed(MOTOR_DRIVER_1, ROTATION_SPEED); set_rotation_speed(MOTOR_DRIVER_2, -ROTATION_SPEED); // 启动两个电机 start_motor(MOTOR_DRIVER_1); start_motor(MOTOR_DRIVER_2); } void stop_motors() { // 停止两个电机 stop_motor(MOTOR_DRIVER_1); stop_motor(MOTOR_DRIVER_2); } void external_interrupt_handler() { // 停止电机 stop_motors(); // 等待10秒 delay(10); // 设置停止电机的标志 stop_motors_flag = true; }
本回答被题主选为最佳回答 , 对您是否有帮助呢?解决 无用评论 打赏 举报
悬赏问题
- ¥15 如何绘制动力学系统的相图
- ¥15 对接wps接口实现获取元数据
- ¥20 给自己本科IT专业毕业的妹m找个实习工作
- ¥15 用友U8:向一个无法连接的网络尝试了一个套接字操作,如何解决?
- ¥30 我的代码按理说完成了模型的搭建、训练、验证测试等工作(标签-网络|关键词-变化检测)
- ¥50 mac mini外接显示器 画质字体模糊
- ¥15 TLS1.2协议通信解密
- ¥40 图书信息管理系统程序编写
- ¥20 Qcustomplot缩小曲线形状问题
- ¥15 企业资源规划ERP沙盘模拟