esp8266+点灯科技(blinker)遥控小车-Arduino中文社区 - Powered by Discuz! Archiver

353529281 发表于 2021-8-18 21:03

esp8266+点灯科技(blinker)遥控小车

本帖最后由 353529281 于 2021-8-28 19:07 编辑

我是新手,欢迎大家指出错误和缺点,共同进步,谢谢。
https://www.arduino.cn/data/attachment/forum/202108/18/204233orsjn2y65c1vrr6l.jpg
/*
WIFI小车项目 20201年7月31日

功能:
1、监测温度湿度
2、用点灯APP控制小车四方向
3、用点灯APP控制小车速度
4、前进超声波测距

材料:
ESP8266
DHT11温湿度模块
L298N模块
HC-SR04超声波模块
小车底盘双电机
电池1块电压(6-12V)


作者:九洲创客
QQ:353529281
*/
#define BLINKER_WIFI   
//引用库
#include <Blinker.h>    //点灯科技库
#include <DHT.h>      //DHT库
#include <HCSR04.h>   //超声波库


//点灯KEY设置,WIFI账号密码
char auth[] = "key";
char ssid[] = "ssid";
char pswd[] = "password";


//新建超声波对象
UltraSonicDistanceSensor distanceSensor(D0, D1);

// 新建点灯组件对象
BlinkerNumber Humi("humi");   //湿度
BlinkerNumber Temp("temp");   //温度
BlinkerButton Car1("btn-up");   //前进
BlinkerButton Car2("btn-down");   //后退
BlinkerButton Car3("btn-left");   //左转
BlinkerButton Car4("btn-right");   //右转
BlinkerSlider Sudu("sudu");    //速度

//小车方向4个IO脚
#define CARPIN1 D5
#define CARPIN2 D6
#define CARPIN3 D7
#define CARPIN4 D8
int car_sudu=160;   //小车速度初始化为PWM100


//DHT11设置
#define DHTPIN D4       //读取IO脚
#define DHTTYPE DHT11   //DHT版本
DHT dht(DHTPIN, DHTTYPE);   //创建DHT对象
int humi_read = 0, temp_read = 0;   //温湿度变量


void scsr(){//雷达检测
float distance;
distance=distanceSensor.measureDistanceCm();//检测前面距离
if(distance<25){//当距离小于25CM时停止前进
    car_stop();
}
    else{
      car_up();//前进
      }
}


//心跳函数
void heartbeat()
{
    Humi.print(humi_read);    //点灯输出湿度
    Temp.print(temp_read);    //点灯输出温度
}


//从点灯APP获取小车速度,方向按键状态

void sudu_callback(int32_t value) //速度
{
    car_sudu =100+value*30;
}

void car1_callback(const String & state) //前进
{   
    if(state=="press"){   //当近下按键时
       scsr();
      }
    else if(state == "pressup"){ //当松开按键时
      car_stop();
      }
}
void car2_callback(const String & state) //后退
{
   if(state=="press"){
       car_down();
      }
   else if(state == "pressup"){
      car_stop();
      }
}
void car3_callback(const String & state) //左转
{
   if(state=="press"){
       car_left();   
      }
    else if(state == "pressup"){
      car_stop();
      }
}
void car4_callback(const String & state) //右转
{
   if(state=="press"){
       car_right();
      }
    else if(state == "pressup"){
      car_stop();
      }
}



//四个方向,停车函数
void car_up(){//前进
analogWrite(CARPIN1,car_sudu);
digitalWrite(CARPIN2,LOW);
analogWrite(CARPIN3,car_sudu);
digitalWrite(CARPIN4,LOW);
delay(100);
}
void car_down(){//后退
digitalWrite(CARPIN1,LOW);
analogWrite(CARPIN2,car_sudu);
digitalWrite(CARPIN3,LOW);
analogWrite(CARPIN4,car_sudu);
delay(100);
}
void car_left(){    //左转
analogWrite(CARPIN1,car_sudu);
digitalWrite(CARPIN2,LOW);
digitalWrite(CARPIN3,LOW);
analogWrite(CARPIN4,car_sudu);
delay(100);
}
void car_right(){   //右转
digitalWrite(CARPIN1,LOW);
analogWrite(CARPIN2,car_sudu);
analogWrite(CARPIN3,car_sudu);
digitalWrite(CARPIN4,LOW);
delay(100);
}
void car_stop(){    //停车
digitalWrite(CARPIN1,LOW);
digitalWrite(CARPIN2,LOW);
digitalWrite(CARPIN3,LOW);
digitalWrite(CARPIN4,LOW);
delay(100);
}


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


//初始化设置
void setup()
{
    // 初始化串口
    Serial.begin(115200);
    BLINKER_DEBUG.stream(Serial);       //串口输出状态
   
    // 初始化小车控制IO
    pinMode(CARPIN1,OUTPUT);
    pinMode(CARPIN2,OUTPUT);
    pinMode(CARPIN3,OUTPUT);
    pinMode(CARPIN4,OUTPUT);
   
    // 初始化blinker
    Blinker.begin(auth, ssid, pswd);    //WIFI设置
    Blinker.attachHeartbeat(heartbeat);   //心跳包
    Blinker.attachData(dataRead);   //提示
    Sudu.attach(sudu_callback);   //速度组件
    Car1.attach(car1_callback);   //前进组件
    Car2.attach(car2_callback);   //后退组件
    Car3.attach(car3_callback);   //左转组件
    Car4.attach(car4_callback);   //右转组件
    dht.begin();    //初始化DHT模块
   
}



//运行设置
void loop() {
    Blinker.run();//点灯科技运行

    //DHT11读取设置
    int h = dht.readHumidity();   //获取湿度
    int t = dht.readTemperature();    //获取温度
    if (isnan(h) || isnan(t)) //判断传感器有没有获取到数据
    {
      BLINKER_LOG("DHT传感器错误!");
    }
    else
    {
      humi_read = h;      //赋值湿度给点灯APP变量
      temp_read = t;      //赋值温度给点灯APP变量
    }
   
   
    Blinker.delay(1000);
}

夏天132 发表于 2022-1-4 16:15

有做好的视频吗,看看

wankangming 发表于 2022-5-11 12:30

感谢大佬无私奉献,还给代码这么详细的注释!!!
页: [1]
查看完整版本: esp8266+点灯科技(blinker)遥控小车