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();
}
https://www.arduino.cn/thread-83261-1-1.html 奈何col 发表于 2022-3-27 09:35
https://www.arduino.cn/thread-83261-1-1.html
所有元件都是在OPENJUMPER买的,一开始按照这个程序做的,也是不能两个电机同时动,单个就没有问题,在这个链接里也提问了,没人回复:'( mlwx 发表于 2022-3-27 09:54
所有元件都是在OPENJUMPER买的,一开始按照这个程序做的,也是不能两个电机同时动,单个就没有问题,在这 ...
你这样一说,我觉得可能是电流不够,你是用USB供电的? 奈何col 发表于 2022-3-27 10:06
你这样一说,我觉得可能是电流不够,你是用USB供电的?
是的,是不是必须用两节3.7V电池供电?我感觉两个电机同时驱动时,只有一个电机动,明显感觉那个动力没有单独驱动一个电机大 mlwx 发表于 2022-3-27 10:46
是的,是不是必须用两节3.7V电池供电?我感觉两个电机同时驱动时,只有一个电机动,明显感觉那个动力没有 ...
试过啦,确实是这个问题,用电池供电就可以了,谢谢帮助
页:
[1]