直流电机,直流电机控制……

两个电机同时启动,要求它转向相反,转速控制在100转每秒。在这个基础上呢,摁下外部中断控制键后,要求10秒,两个电机同时停止。

要实现这个控制方案,需要使用直流电机驱动器和相关的控制电路。首先,通过调节电机驱动器的输入电压和电流来控制电机的转速,以达到 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;
}