基于ESP8266的Wemos D1 开发板的Arduino 例程代码

目录

本编代码仅供参考,如有错误欢迎提出,后期及时改正

一、高低电平输出:

二、串口通信:

三、控制sg90舵机:

四、超声波:

五、Wemos 连接wifi:

六、点亮LCD1602a:

1602a自己创建显示字符 例如 :   摄氏度符合

七、DS18B20防水型的水温测棒:


本编代码仅供参考,如有错误欢迎提出,后期及时改正

一、高低电平输出:

void setup() {

    pinMode(D5, OUTPUT);    //设置D5引脚为输出引脚

}

void loop() {

        digitalWrite(D5, LOW);    //输出低电平,蜂鸣器燥起来

        delay(1000);

        digitalWrite(D5, HIGH);   //输出高电平,蜂鸣器闭嘴

        delay(1000);              //延时一秒

}

二、串口通信:

void setup() {

Serial.begin(115200);

}

void loop() {

Serial.println("hello world");       //测试串口是否启动,启动成功就发送start

}

//串口控制蜂鸣器

void setup() {

    pinMode(D5, OUTPUT);                 //设置引脚为输出引脚

    Serial.begin(115200);                     //初始化串口,设置波特率为115200

    Serial.println("start");                      //测试串口是否启动,启动成功就发送start

    digitalWrite(D5, HIGH);                  //默认D5输出高电平,关蜂鸣器闭

}

void loop() {

    int cmd;

    if (Serial.available() > 0) {                     //检测串口是否有数据

        cmd = Serial.read();                         // 读取串口数据

        if (cmd == 1) {                                 //如果读取的数据是 1

            digitalWrite(D5, HIGH);               // 蜂鸣器不响起

            Serial.println(cmd);

        }

        else if (cmd == 0) {

            digitalWrite(D5, LOW);         // 否则(读取数据为 0 )蜂鸣器响

            Serial.println(cmd);

        }

    }

}

三、控制sg90舵机:

//控制sg90舵机

#include <Servo.h>
 
#define DuoPIN D5   //定义D5管脚为DuoPIN 
 
Servo myDuoJi;    //把servo命名为myDuoJi,两者具有等同的作用
 
void setup() {
  myDuoJi.attach(DuoPIN);  //连接舵机
 
}
 
void loop() {
   myDuoJi.write(200);   //角度控制
   delay(1000);
   myDuoJi.write(0);
   delay(1000);
}

四、超声波:

#include <Servo.h>

#define Echo  D2

#define Trig  D8

#define DEP   D4                  //配置蜂鸣器端口

long GetTime() {

    digitalWrite(Trig, HIGH);

    delayMicroseconds(10);          // 10 微妙

    digitalWrite(Trig, LOW);

    return pulseIn(Echo, HIGH);     //返回值

}

void Init_ultrasonic() {

    pinMode(Echo, INPUT);

    pinMode(Trig, OUTPUT);

}

void setup() {

    // put your setup code here, to run once:

    Init_ultrasonic();

    Serial.begin(115200);         //波特率

    pinMode(DEP, OUTPUT);       //设置引脚为输出引脚

    digitalWrite(DEP, HIGH);    //初始化状态

}

void loop() {

    //获取距离

    long dis;

    dis = GetTime() / 58;

    Serial.print(dis);

    Serial.println("cm");

    delay(500);

    if (dis < 10) {                                        //如果小于10cm,则执行以下代码

        digitalWrite(DEP, LOW);

        delay(300);

        digitalWrite(DEP, HIGH);

        myDuoJi.write(140);

        delay(2000);

        myDuoJi.write(0);

    }

    else {

        digitalWrite(DEP, HIGH);

        myDuoJi.write(0);

    }

}

五、Wemos 连接wifi:

//Wemos连接WiFi

#include <ESP8266WiFi.h>

//可手机开热点

char* ssid = "Electronic";    //连接wifi的名称

char* passwd = "929bxk9f";    //连接wifi的密码

void initWifiSta() {

    WiFi.mode(WIFI_STA);       //设置STA模式

    WiFi.begin(ssid, passwd);  //连接网络

    while (WiFi.status() != WL_CONNECTED) {

        Serial.print(".");       //如果未连接执行循环

        delay(500);

    }

}

//=========================================================================

void setup() {

    //打开串口

    Serial.begin(115200);

    //启动wifi

    //接入wifi

    initWifiSta();

}

void loop() {

    Serial.println(WiFi.localIP()); //通过串口打印wemos的IP地址

    delay(500);

}

//=============================   手机软件控制   ==============================

#include "ESP8266WiFi.h"

char* ssid = "Neo5";
char* passwd = "929bxk9f";

int Port = 8888;
WiFiServer server(Port);

void Initwifi()
{
  WiFi.mode(WIFI_STA);
  WiFi.begin(ssid, passwd);
  while(WiFi.status() != WL_CONNECTED)
  {
    Serial.print(".");
    delay(500);
  }
  Serial.println(WiFi.localIP()); //通过串口打印wemos的IP地址
}

void setup()
{
  pinMode(D4, OUTPUT);
  pinMode(D5, OUTPUT);
  pinMode(D6, OUTPUT);
  pinMode(D7, OUTPUT);
  
  Serial.begin(115200);
  Initwifi();
  server.begin();
}

void loop()
{
  char cmd;

 WiFiClient client = server.available(); 
  while(client.connected())
  {
    while(client.available() > 0)
    {
      cmd = client.read();
      if(cmd == '1')
      {
        digitalWrite(D4, HIGH);
        digitalWrite(D5, LOW);
      }
      else if(cmd == '2')
      {
        digitalWrite(D4, LOW);
        digitalWrite(D5, HIGH);
      }
      else if(cmd == '3')
      {
        digitalWrite(D6, HIGH);
        digitalWrite(D7, LOW);
      }
      else if(cmd == '4')
      {
        digitalWrite(D6, LOW);
        digitalWrite(D7, HIGH);
      }
    }
  }
}

 

六、点亮LCD1602a:

/***********************************************************************************************************************************************************************

VSS连接GND、VDD连接 +5V、V0外接一个10K可调电阻、RS连接arduino上的D12、RW连接GND(输出默认低电平)、E连接arduino上的D10、D0、D1、D2、D3、D4连接arduino上的D5、D5连接arduino上的D4、D6连接arduino上的D3、D7连接arduino上的D2、A连接+5V、K连接GND        

D0~D3不用连

四线传输,所以一次只能传输一个字节

例:在1602a上显示数字16则先显示1后面再显示6

***********************************************************************************************************************************************************************/

//LCD1602A代码

#include<LiquidCrystal.h>

//申明1602液晶的引脚所连接的Arduino数字端口,8线或4线数据模式

LiquidCrystal lcd(12, 13, 15, 14, 4, 5, 16);   //4线 D12 D11 D10 D5 D4 D3 D2

//LiquidCrystal lcd(12,13,15,2,0,13,12,14,4,5,16) //D2 ~ D12

void setup(void){

    lcd.begin(16, 2);

    lcd.home();         //初始化,把光标移动至第0行第0列

}

void loop(void){

        lcd.setCursor(0, 1);                //把光标移动至第1行第0列

        lcd.print("hello world");        //在第1行第0列输出

}

1602a自己创建显示字符 例如 :   摄氏度符合

//1602创造字符

#include <LiquidCrystal.h>

LiquidCrystal lcd(12, 13, 15, 14, 4, 5, 16);

byte tian[8] = {  //"摄氏度符号"的数据

  0b00111,

  0b00101,

  0b00111,

  0b00000,

  0b00000,

  0b00000,

  0b00000,

  0b00000,

};

void setup() {

    lcd.begin(16, 2);

    lcd.createChar(0, tian);  //写入"摄氏度符号"的数据

}

void loop() {

    lcd.setCursor(0, 0);

    lcd.write(byte(0));  //显示"摄氏度符号"

}

七、DS18B20防水型的水温测棒:

/***********************************************************************************************************************************************************************

DS18B20模块有三条线,红线连接+5V,黑线连接GND,黄线为数据接口连接D7

***********************************************************************************************************************************************************************/

//DS18B20温度计

#include <OneWire.h>

#include <DallasTemperature.h>

// 定义DS18B20数据口连接arduino IO上

#define ONE_WIRE_BUS D7        //可以在这里修改数据接口,D2~D13都可以

// 初始连接在单总线上的单总线设备

OneWire oneWire(ONE_WIRE_BUS);

DallasTemperature sensors(&oneWire);

void setup(void)

{

    // 设置串口通信波特率

    Serial.begin(9600);

    // 初始库

    sensors.begin();

}

void loop(void)

{

    Serial.print("当前温度");

    sensors.requestTemperatures(); // 发送命令获取温度

    Serial.println(sensors.getTempCByIndex(0));       //串口显示当前温度

    delay(500);

}

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值