blinker控制小车1.0附源码-Arduino中文社区 - Powered by Discuz! Archiver

lslcxlsl 发表于 2020-10-14 20:15

blinker控制小车1.0附源码

本帖最后由 lslcxlsl 于 2020-10-14 21:18 编辑

小车硬件配置:WeMos(esp8266主板),
L298N电机控制板,
一个2路继电器,
小蚁摄像头,
移动充电宝,
一个12v电池,
履带车底盘

接线方法:esp82266 上D5,D6,D7,D8 接到L298N的控制接口上,56,78 两组成对接,
esp82266 上D2,D4 接继电器的两路控制接口上
小车配置了一个小蚁网络摄像头,可以用手机观看视频和对讲,可以用来看家,代码定义了8个按钮,其中 4,5是控制摄像头电源和led电源,应为摄像头不是夜视的,晚上需要加个灯
接电的方法是我是先接L298N然后通过它的5v输出接esp8266,虽然可以12v直接接esp8266我怕长时间用减少主板寿命。然后接了一个继电器,控制摄像头,和led灯这样摄像头电路和主板电路分开保证电源稳定,用L298N输出5v电源带不起来摄像头。下面是我代码

#define BLINKER_WIFI

#include <Blinker.h>

char auth[] = "8bb519c05ee0";
char ssid[] = "abc";
char pswd[] = "chenxu123";

// 新建组件对象
BlinkerButton Button1("btn-a");
BlinkerButton Button2("btn-l");
BlinkerButton Button3("btn-r");
BlinkerButton Button6("btn-p");
BlinkerButton Button7("btn-ll");
BlinkerButton Button8("btn-rr");
BlinkerNumber Number1("num-abc");
BlinkerButton Button4("btn-led");
BlinkerButton Button5("btn-led1");

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       100

#define LED0_PIN       D2
#define LED1_PIN       D4

void blinker_car_init()
{
    pinMode(L_DIR_PIN, OUTPUT);
    pinMode(L_PWM_PIN, OUTPUT);
    pinMode(R_DIR_PIN, OUTPUT);
    pinMode(R_PWM_PIN, OUTPUT);
    pinMode(LED0_PIN, OUTPUT);
    pinMode(LED1_PIN, OUTPUT);
    digitalWrite(L_DIR_PIN, LOW);
    digitalWrite(L_PWM_PIN, LOW);
    digitalWrite(R_DIR_PIN, LOW);
    digitalWrite(R_PWM_PIN, LOW);
    digitalWrite(LED0_PIN, LOW);
    digitalWrite(LED1_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);
    //digitalWrite(LED0_PIN,HIGH);
      delay(TIME_TAP);
      digitalWrite(L_DIR_PIN,LOW);
      digitalWrite(R_DIR_PIN,LOW);
   //   digitalWrite(LED0_PIN,LOW);
    }
    if(state=="press"){
      digitalWrite(L_DIR_PIN,HIGH);
      digitalWrite(R_DIR_PIN,HIGH);
    //digitalWrite(LED0_PIN,HIGH);      
    }
    if(state=="pressup"){
      digitalWrite(L_DIR_PIN,LOW);
      digitalWrite(R_DIR_PIN,LOW);
   // digitalWrite(LED0_PIN,LOW);      
    }   
}

void button6_callback(const String & state) {
    BLINKER_LOG("get button state: ", state);
    if(state=="tap"){
      digitalWrite(L_PWM_PIN,HIGH);
      digitalWrite(R_PWM_PIN,HIGH);
    //digitalWrite(LED0_PIN,HIGH);
      delay(TIME_TAP);
      digitalWrite(L_PWM_PIN,LOW);
      digitalWrite(R_PWM_PIN,LOW);
   //   digitalWrite(LED0_PIN,LOW);
    }
    if(state=="press"){
      digitalWrite(L_PWM_PIN,HIGH);
      digitalWrite(R_PWM_PIN,HIGH);
    //digitalWrite(LED0_PIN,HIGH);      
    }
    if(state=="pressup"){
      digitalWrite(L_PWM_PIN,LOW);
      digitalWrite(R_PWM_PIN,LOW);
   // digitalWrite(LED0_PIN,LOW);      
    }   
}

void button7_callback(const String & state) {
    BLINKER_LOG("get button state: ", state);
    if(state=="tap"){
      digitalWrite(L_PWM_PIN,HIGH);
      delay(TIME_TAP);
      digitalWrite(L_PWM_PIN,LOW);
    }
    if(state=="press"){
      digitalWrite(L_PWM_PIN,HIGH);   
    }
    if(state=="pressup"){
      digitalWrite(L_PWM_PIN,LOW);
    }   
}

void button8_callback(const String & state) {
    BLINKER_LOG("get button state: ", state);
    if(state=="tap"){
      digitalWrite(R_PWM_PIN,HIGH);
      delay(TIME_TAP);
      digitalWrite(R_PWM_PIN,LOW);
    }
    if(state=="press"){
      digitalWrite(R_PWM_PIN,HIGH);
    }
    if(state=="pressup"){
      digitalWrite(R_PWM_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);
//   digitalWrite(LED1_PIN,HIGH);
      delay(TIME_TAP);
      digitalWrite(L_PWM_PIN,LOW);
      digitalWrite(R_DIR_PIN,LOW);
   //   digitalWrite(LED1_PIN,LOW);      
    }
    if(state=="press"){
      digitalWrite(L_PWM_PIN,HIGH);
      digitalWrite(R_DIR_PIN,HIGH);
   // digitalWrite(LED1_PIN,HIGH);      
    }
    if(state=="pressup"){
      digitalWrite(L_PWM_PIN,LOW);
      digitalWrite(R_DIR_PIN,LOW);
   // digitalWrite(LED1_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 button4_callback(const String & state) {
    BLINKER_LOG("get button state: ", state);
    if (state=="on") {
      digitalWrite(LED0_PIN, HIGH);
      // 反馈开关状态
      Button4.print("on");
    } else if(state=="off"){
      digitalWrite(LED0_PIN, LOW);
      // 反馈开关状态
      Button4.print("off");
    }
}
void button5_callback(const String & state) {
    BLINKER_LOG("get button state: ", state);
    if (state=="on") {
      digitalWrite(LED1_PIN, HIGH);
      // 反馈开关状态
      Button5.print("on");
    } else if(state=="off"){
      digitalWrite(LED1_PIN, LOW);
      // 反馈开关状态
      Button5.print("off");
    }
}

// 如果未绑定的组件被触发,则会执行其中内容
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);
    Button4.attach(button4_callback);
    Button5.attach(button5_callback);
    Button6.attach(button6_callback);
    Button7.attach(button7_callback);
    Button8.attach(button8_callback);
}

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





Gordave 发表于 2020-10-14 21:11

好赞,周末整一个玩玩

steve_liu 发表于 2020-10-15 11:34

这,底盘去哪整的?

lslcxlsl 发表于 2020-10-15 14:47

steve_liu 发表于 2020-10-15 11:34
这,底盘去哪整的?

在淘宝上买的

t3486784401 发表于 2020-10-16 01:50

电机板的 5V 输出,被 LZ 接在了开发板的 VIN (9-12V)插座上,LZ是认真的么

lslcxlsl 发表于 2020-10-17 15:23

t3486784401 发表于 2020-10-16 01:50
电机板的 5V 输出,被 LZ 接在了开发板的 VIN (9-12V)插座上,LZ是认真的么

我是这么接的

lqcsg 发表于 2020-10-22 20:50

本帖最后由 lqcsg 于 2020-10-22 20:58 编辑

最近也在做远程移动监控小车。360°旋转云台+对讲监控摄像头,4驱麦轮:lol,正在研究超声波测距,自动刹车

lslcxlsl 发表于 2020-10-25 12:17

lqcsg 发表于 2020-10-22 20:50
最近也在做远程移动监控小车。360°旋转云台+对讲监控摄像头,4驱麦轮,正在研究超声波测距,自动刹车 ...

厉害!厉害!厉害!你那个速度控制是怎么做的?

lqcsg 发表于 2020-11-3 11:09

lslcxlsl 发表于 2020-10-25 12:17
厉害!厉害!厉害!你那个速度控制是怎么做的?

pwm调速

黄非红 发表于 2021-1-9 00:05

lqcsg 发表于 2020-10-22 20:50
最近也在做远程移动监控小车。360°旋转云台+对讲监控摄像头,4驱麦轮,正在研究超声波测距,自动刹车 ...

能分享一下代码?主要是那个控制车速的滑条:lol在blinker里面pwm是怎么对应
页: [1] 2
查看完整版本: blinker控制小车1.0附源码