|
本帖最后由 353529281 于 2021-8-28 19:07 编辑
我是新手,欢迎大家指出错误和缺点,共同进步,谢谢。
- /*
- 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);
- }
复制代码
|
|