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);
}
有做好的视频吗,看看 感谢大佬无私奉献,还给代码这么详细的注释!!!
页:
[1]