mlwx 发表于 2022-3-27 08:50

WiFiduino做智能小车问题咨询

用WiFiduino配合blinker App做智能小车实验时,烧录好程序后,小车可以通过按键实现向左转、向右转,但是不能直行,也就是两个电机不能同时工作,求各位指导,程序如下:
#define BLINKER_WIFI

#include <Blinker.h>

char auth[] = "83bb406232e4";
char ssid[] = "jdlydx";
char pswd[] = "82660000";

// 新建组件对象
BlinkerButton Button1("btn-a");
BlinkerButton Button2("btn-l");
BlinkerButton Button3("btn-r");
BlinkerNumber Number1("num-abc");


int counter = 0;
#define L_DIR_PIN       D5
#define L_PWM_PIN       D6
#define R_DIR_PIN       D7
#define R_PWM_PIN       D8
#define TIME_TAP       500
void blinker_car_init()
{
    pinMode(L_DIR_PIN, OUTPUT);
    pinMode(L_PWM_PIN, OUTPUT);
    pinMode(R_DIR_PIN, OUTPUT);
    pinMode(R_PWM_PIN, OUTPUT);
    digitalWrite(L_DIR_PIN, LOW);
    digitalWrite(L_PWM_PIN, LOW);
    digitalWrite(R_DIR_PIN, LOW);
    digitalWrite(R_PWM_PIN, LOW);
}
// 按下按键即会执行该函数
void button1_callback(const String & state) {
    BLINKER_LOG("get button state: ", state);
    if(state=="tap"){
      digitalWrite(L_DIR_PIN,HIGH);
      digitalWrite(R_DIR_PIN,HIGH);
      delay(TIME_TAP);
      digitalWrite(L_DIR_PIN,LOW);
      digitalWrite(R_DIR_PIN,LOW);
    }
    if(state=="press"){
      digitalWrite(L_DIR_PIN,HIGH);
      digitalWrite(R_DIR_PIN,HIGH);
    }
    if(state=="pressup"){
      digitalWrite(L_DIR_PIN,LOW);
      digitalWrite(R_DIR_PIN,LOW);
    }   
}
void button2_callback(const String & state) {
    BLINKER_LOG("get button state: ", state);
    if(state=="tap"){
      digitalWrite(L_PWM_PIN,HIGH);
      digitalWrite(R_DIR_PIN,HIGH);
      delay(TIME_TAP);
      digitalWrite(L_PWM_PIN,LOW);
      digitalWrite(R_DIR_PIN,LOW);
    }
    if(state=="press"){
      digitalWrite(L_PWM_PIN,HIGH);
      digitalWrite(R_DIR_PIN,HIGH);
    }
    if(state=="pressup"){
      digitalWrite(L_PWM_PIN,LOW);
      digitalWrite(R_DIR_PIN,LOW);
    }   
}
void button3_callback(const String & state) {
    BLINKER_LOG("get button state: ", state);
    if(state=="tap"){
      digitalWrite(L_DIR_PIN,HIGH);
      digitalWrite(R_PWM_PIN,HIGH);
      delay(TIME_TAP);
      digitalWrite(L_DIR_PIN,LOW);
      digitalWrite(R_PWM_PIN,LOW);
    }
    if(state=="press"){
      digitalWrite(L_DIR_PIN,HIGH);
      digitalWrite(R_PWM_PIN,HIGH);
    }
    if(state=="pressup"){
      digitalWrite(L_DIR_PIN,LOW);
      digitalWrite(R_PWM_PIN,LOW);
    }   
}

// 如果未绑定的组件被触发,则会执行其中内容
void dataRead(const String & data)
{
    BLINKER_LOG("Blinker readString: ", data);
    counter++;
    Number1.print(counter);
}

void setup() {
    // 初始化串口
    Serial.begin(115200);

    BLINKER_DEBUG.stream(Serial);

    // 初始化有LED的IO
    blinker_car_init();
    pinMode(LED_BUILTIN, OUTPUT);

    // 初始化blinker
    Blinker.begin(auth, ssid, pswd);
    Blinker.attachData(dataRead);
    Button1.attach(button1_callback);
    Button2.attach(button2_callback);
    Button3.attach(button3_callback);
}

void loop() {
    Blinker.run();
}

奈何col 发表于 2022-3-27 09:35

https://www.arduino.cn/thread-83261-1-1.html

mlwx 发表于 2022-3-27 09:54

奈何col 发表于 2022-3-27 09:35
https://www.arduino.cn/thread-83261-1-1.html

所有元件都是在OPENJUMPER买的,一开始按照这个程序做的,也是不能两个电机同时动,单个就没有问题,在这个链接里也提问了,没人回复:'(

奈何col 发表于 2022-3-27 10:06

mlwx 发表于 2022-3-27 09:54
所有元件都是在OPENJUMPER买的,一开始按照这个程序做的,也是不能两个电机同时动,单个就没有问题,在这 ...

你这样一说,我觉得可能是电流不够,你是用USB供电的?

mlwx 发表于 2022-3-27 10:46

奈何col 发表于 2022-3-27 10:06
你这样一说,我觉得可能是电流不够,你是用USB供电的?

是的,是不是必须用两节3.7V电池供电?我感觉两个电机同时驱动时,只有一个电机动,明显感觉那个动力没有单独驱动一个电机大

mlwx 发表于 2022-3-27 10:59

mlwx 发表于 2022-3-27 10:46
是的,是不是必须用两节3.7V电池供电?我感觉两个电机同时驱动时,只有一个电机动,明显感觉那个动力没有 ...

试过啦,确实是这个问题,用电池供电就可以了,谢谢帮助
页: [1]
查看完整版本: WiFiduino做智能小车问题咨询