基于wemosD1开发板的小车养成(二)

串口控制小车前进后退

#define Dong1 D6
#define Dong2 D7
#define Zhuan1 D4
#define Zhuan2 D5

void initL9110s()
{
  pinMode(Dong1, OUTPUT);
  pinMode(Dong2, OUTPUT);
  pinMode(Zhuan1, OUTPUT);
  pinMode(Zhuan2, OUTPUT);
}

void back()
{
  digitalWrite(Dong1, LOW);
  digitalWrite(Dong2, HIGH);
}
void before()
{
  digitalWrite(Dong1, HIGH);
  digitalWrite(Dong2, LOW);
}

void right()
{
  digitalWrite(Zhuan1, HIGH);
  digitalWrite(Zhuan2, LOW);
}

void left()
{
  digitalWrite(Zhuan1, LOW);
  digitalWrite(Zhuan2, HIGH);
}

void setup() {
  // put your setup code here, to run once:
  initL9110s();
  Serial.begin(115200);
}

void loop() {
  // put your main code here, to run repeatedly:
  char cmd;
  if (Serial.available() > 0)
  {
    cmd = Serial.read();
    switch (cmd)
    {
      case 'q':
        before(); break;
      case 'h':
        back(); break;
      case 'z':
        left(); break;
      case 'y':
        right(); break;

    }
  }
}

WiFi模块控制小车

#include <ESP8266WiFi.h>


#define Dong1 D6
#define Dong2 D7
#define Zhuan1 D4
#define Zhuan2 D5

char* ssid = "WiFi名";
char* passwd = "WiFi密码";
int port = 8888; //端口号

WiFiServer server(port); // 设置服务器端口号

void initWifiSta()
{
  WiFi.mode(WIFI_STA); // 设置STA模式
  WiFi.begin(ssid, passwd); //连接网络
  while (WiFi.status() != WL_CONNECTED)
  {
    Serial.print(".");
    delay(500);
  }
  Serial.println(WiFi.localIP()); //通过串口打印wemos的IP地址
}

void initL9110s()
{
  pinMode(Dong1, OUTPUT);
  pinMode(Dong2, OUTPUT);
  pinMode(Zhuan1, OUTPUT);
  pinMode(Zhuan2, OUTPUT);
}

void back()
{
  digitalWrite(Dong1, LOW);
  digitalWrite(Dong2, HIGH);
}
void before()
{
  digitalWrite(Dong1, HIGH);
  digitalWrite(Dong2, LOW);
}

void right()
{
  digitalWrite(Zhuan1, HIGH);
  digitalWrite(Zhuan2, LOW);
}

void left()
{
  digitalWrite(Zhuan1, LOW);
  digitalWrite(Zhuan2, HIGH);
}

void setup() {
  // put your setup code here, to run once:
  Serial.begin(115200);
  initL9110s();
  initWifiSta();
  server.begin();//启动服务器
}

void loop() {
  // put your main code here, to run repeatedly:
  char cmd;
  WiFiClient client = server.available(); //服务初始化
  while (client.connected()) //等待客户端连接
  {
    while (client.available() > 0) //有数据到来,类似串口的那个函数
    {
      cmd = client.read();//读取数据
      switch (cmd)
      {
        case 'q':
          before(); break;
        case 'h':
          back(); break;
        case 'z':
          left(); break;
        case 'y':
          right(); break;
      }
    }
  }
}

小车最终代码

#include <ESP8266WiFi.h>

#define Echo D2
#define Trig D8
#define Dong1 D6
#define Dong2 D7
#define Zhuan1 D4
#define Zhuan2 D5

char* ssid = "WiFi名";
char* passwd = "WiFi密码";
int port = 8888; //端口号

WiFiServer server(port); // 设置服务器端口号

long getTime()
{
  digitalWrite(Trig, HIGH);//设置一个方波
  delayMicroseconds(10);
  digitalWrite(Trig, LOW);

  return pulseIn(Echo, HIGH);//微秒
}

void initUltrasonic()
{
  pinMode(Echo, INPUT);
  pinMode(Trig, OUTPUT);
}

void initWifiSta()
{
  WiFi.mode(WIFI_STA); // 设置STA模式
  WiFi.begin(ssid, passwd); //连接网络
  while (WiFi.status() != WL_CONNECTED)
  {
    Serial.print(".");
    delay(500);
  }
  Serial.println(WiFi.localIP()); //通过串口打印wemos的IP地址
}

void initL9110s()
{
  pinMode(Dong1, OUTPUT);
  pinMode(Dong2, OUTPUT);
  pinMode(Zhuan1, OUTPUT);
  pinMode(Zhuan2, OUTPUT);
}

void back()
{
  digitalWrite(Dong1, LOW);
  digitalWrite(Dong2, HIGH);
}
void before()
{
  digitalWrite(Dong1, HIGH);
  digitalWrite(Dong2, LOW);
}

void ting()
{
  digitalWrite(Dong1, LOW);
  digitalWrite(Dong2, LOW);
}

void right()
{
  digitalWrite(Zhuan1, HIGH);
  digitalWrite(Zhuan2, LOW);
}

void left()
{
  digitalWrite(Zhuan1, LOW);
  digitalWrite(Zhuan2, HIGH);
}

void zheng()
{
  digitalWrite(Zhuan1, LOW);
  digitalWrite(Zhuan2, LOW);
}

void setup() {
  // put your setup code here, to run once:
  Serial.begin(115200);//打开串口
  initUltrasonic();//初始化超声波
  initL9110s();//初始化点击
  initWifiSta(); //初始化WiFi
  server.begin();//启动服务器
}

void loop() {
  // put your main code here, to run repeatedly:
  char cmd;
  long dis;  //距离
  int mark;
  WiFiClient client = server.available(); //服务初始化
  while (client.connected()) //等待客户端连接
  {
    while (client.available() > 0) //有数据到来,类似串口的那个函数
    {
      cmd = client.read();//读取数据
      dis = getTime() / 58; //超声波距离
      if (dis < 10)
      {
        back();
        delay(200);
        ting();
        mark = 1;
      }
      else
      {
        mark = 0;
      }
      if (mark == 0)
      {
        switch (cmd)
        {
          case 'q':
            before(); break;
          case 'h':
            back(); break;
          case 'z':
            left(); break;
          case 'y':
            right(); break;
          case 's':
            ting(); break;
          case 'd':
            zheng(); break;
        }
      }
    }
  }
}

小车最终成型以及手机app(开发仍在学习中)

请添加图片描述
请添加图片描述

  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Luish Liu

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值