ESP32 两个不同速度的步进电机

ESP32 Two stepper motor on different speed

我想同时控制两台步进电机,但其中一台速度要慢(与另一台步进电机相比大约要慢 83%)。我正在使用 esp32 进行编程。根据我的代码,我只能同时更改两个步进电机的速度。

#include "sdkconfig.h"
#include "freertos/FreeRTOS.h"
#include "freertos/task.h"
#include "esp_system.h"
#include "esp_spi_flash.h"
#include "driver/gpio.h"
#include "errno.h"
#include "string.h"
#include "esp_log.h"
#include "driver/mcpwm.h"

#define dir 26
#define step 25
#define dir1 21
#define step1 19


void app_main(void)   {

  printf("hello");
  gpio_reset_pin(dir);
  gpio_reset_pin(step);
  gpio_reset_pin(dir1);
  gpio_reset_pin(step1);
  
  gpio_set_direction(dir, GPIO_MODE_OUTPUT);
  gpio_set_direction(step, GPIO_MODE_OUTPUT);
  gpio_set_direction(dir1, GPIO_MODE_OUTPUT);
  gpio_set_direction(step1, GPIO_MODE_OUTPUT);


while (1)
  { 
    vTaskDelay(1000/portTICK_PERIOD_MS);
    //Rechts
    gpio_set_level(dir1, 1); 
    gpio_set_level(dir, 1); 

    for (int i = 0; i < 1500; i++)
    {
    gpio_set_level(step1, 1);
    gpio_set_level(step, 1);
    ets_delay_us(1500);
    gpio_set_level(step1, 0);
    gpio_set_level(step, 0);
    ets_delay_us(1500);
    }

您可以使用并行编程。所以你可以同时做两件事。所以如果你在这种情况下这样做,你可以比另一个更快地编程 1 个步进电机。有关 esp32

并行编程示例,请参阅 esp32 文档