Wemos

在这里插入图片描述
在这里插入图片描述

函数

Wemos同Arduino
上电后不断执行loop函数中的代码,我们核心控制代码写入loop

setup函数只调用一次,一般用于硬件相关的初始化,比如IO口,串口,wifi等

void setup() {
}

void loop() {
}

串口函数

Serial.begin(115200)   开启串口    设置波特率
Serial.begin("start")   串口输出数据并换行
Serial.available()    判断缓冲区是否有数据
Serial.read()    读取缓存区的数据
Serial.println();  串口打印函数 
//Serial.println(cmd);

串口控制蜂鸣器

void setup() {
  pinMode(D5, OUTPUT);    //设置引脚为输出引脚
  Serial.begin(115200);       //初始化串口,设置波特率为115200
  Serial.println(“start”);       //测试串口是否启动,启动成功就发送start
}
void loop() {
  int cmd;
  
  if ( Serial.available() > 0 ) {   //检测串口是否有数据
    cmd = Serial.read();          // 读取串口数据
   
    if (cmd == 1) {                   //如果读取的数据是1
      digitalWrite(D5, LOW);   // 蜂鸣器响起
    } else {
      digitalWrite(D5, HIGH);  // 否则(读取数据非1)蜂鸣器不响
    }
  }
}

超声波测距

//声波在空气中传输的速度是:
343m/s
转换成厘米:34300/s
0.0343cm/us 每0.0343cm耗时1us
1us能走多少厘米 29.15

Pulseln(Echo ,HIGH) time
Time/58.3 波再空气中的总厘米

高电平的时间 表示的是信号发送出去到返回需要的时间
340m/s
声速的传播速度是340 时间/2 *340 可以计算出来距离是多少

HCSR04模块有四个引脚,VCC,GND,TRIG和ECHO;这些引脚有不同的功能。
VCC和GND是HSCR04的直接驱动电源。这些引脚需要分别连接到+5v电压和地。
TRIG引脚负责发射超声波信号的信号引脚。这个引脚需要用超过10us的高电平来启动,每一点HCSR04会发射840khz的方波。方波发射后,ECHO引脚会输出高电平。
ECHO引脚是用来测量距离的数据引脚。当一个超声波信号发射后,ECHO引脚会输出高电平。当ECHO引脚直到检测到超声波信号回来的时,ECHO引脚输出低电平。
舵机的接线  
红色是VCC    棕色是GND    橙色是信号线
Servo库使用方法
servo.attach( )连接舵机信号线引脚(自带库仅9/10脚有效)
servo.write ( )写入角度
servo.writeMicrseconds ( )写入更精准的角度(um级)
servo.read ( )读取上一次舵机转动角度
servo.attached ( )-:—检查舵机是否连接在控制板上
servo.detach ( )断开舵机连接
#include <Servo.h>     //舵机库
#define Echo D2        //定义宏命令
#define Trig D8
#define PIN_SERVO D5
Servo myservo;     //舵机定义为myservo
long getTime()   //超声波测距   
{ 
   digitalWrite(Trig,HIGH);   //向trig角发送一个高电平
   delayMicroseconds(10);     //发送一个10us的脉冲
   digitalWrite(Trig,LOW);    //发送完成后trig变为低电平
 
   return pulseIn(Echo,HIGH);  //波传输过程echo高电平,计算高电平时间
//就获取波传输的时间,单位是us(微秒)

}
void chaoShengBo()
{
   pinMode(Echo,INPUT);  //作为输入引脚 检测超声波返回的引脚
   pinMode(Trig,OUTPUT);  //作为输出引脚
   myservo.attach(PIN_SERVO); //舵机的引脚
}
void setup() {
  // 定义一个超声波初始化的函数
  chaoShengBo();
  Serial.begin(115200);
  
}

void loop() {
  // put your main code here, to run repeatedly:
   //获取距离
   long dis;  //得到的距离值
   dis=getTime()/58;  //得到的返回值
   Serial.print(dis);  //在串口中显示距离
   Serial.println("cm"); //在换行前打印一个cm并换行
   delay(500);  //延时500
   if(dis<15){
    //当超声波的距离小于15时,舵机工作到从-90度上升到0度
     myservo.write(0);//上升到0度
   }else{
    myservo.write(90);//下降90度
   }
   }

esp8266实现

需要头文件#include <ESP8266WiFi.h>


char* ssid = "Honor V9";                           //“wifi热点名称”
char* passwd = "123456789";            //”wifi热点密码”

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地址
  delay(500);
  
}

Tips: 注意代码的大小写!!!!!!!!,注意中英文符号

编写Wemos服务器,通过手机控制tcp工具

int port = 8888;  //端口号
WiFiServer server(port); // 设置服务器端口号
void loop() {
WiFiClient client = server.available();  //服务初始化


while (client.connected()) {  //等待客户端连接
	while (client.available() > 0) {  //有数据到来,类似串口的那个函数
      		cmd = client.read();//读取数据
	}
}
}
server.begin();  端口启动函数启动函数

esp8266和端口号连接在一起

#include <ESP8266WiFi.h>
char* ssid = "Honor";                           //“wifi热点名称”
char* passwd = "123456789";            //”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 setup() {
  // put your setup code here, to run once:
  //启动wifi
  Serial.begin(115200);//设置串口启动并设置波特率
  initWifiSta();//wifi配置函数
  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();//读取数据
          if(cmd=='1'){
          Serial.println("supeng");
          }else{
            Serial.println("kkk");
          }
          
  }
}

}

前后左右的控制代码

分别给电机高电平和低电平实现电机的前后左右移动
在这里插入图片描述

#define dong1 D6
#define dong2 D7
#define zhuan1 D4
#define zhuan2 D5
void initL9110()
{
   pinMode(dong1,OUTPUT);  
   pinMode(dong2,OUTPUT);  
   pinMode(zhuan1,OUTPUT);  
   pinMode(zhuan2,OUTPUT);  

}
void hou()
{
   digitalWrite(dong1,HIGH);
   digitalWrite(dong2,LOW);

}
void qian()
{
   digitalWrite(dong1,LOW);
   digitalWrite(dong2,HIGH);

}
void zuo()
{
   digitalWrite(zhuan1,HIGH);
   digitalWrite(zhuan2,LOW);

}
void you()
{
   digitalWrite(zhuan1,LOW);
   digitalWrite(zhuan2,HIGH);

}
  • 1
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值