目录
本编代码仅供参考,如有错误欢迎提出,后期及时改正
一、高低电平输出:
二、串口通信:
三、控制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);
}
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) {
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);
}