玩转Seeeduino V3/Arduino UNO

超声波测距 温湿度测量 时间日期显示 定时闹钟 驱动显示屏
辛迪可乐
发布时间: 2018-04-19
阅读: 2009

下面介绍一下我的Seeeduino V3/Arduino UNO玩板经验,供大家学习参考,通过下面四个小项目从浅入深介绍Seeeduino V3在生活中的应用


  • 使用LCD1602液晶屏显示文字
  • 使用DHT11温湿度传感器测量温湿度并在LCD1602液晶屏显示环境温湿度
  • 使用HC-SR04超声波模块测距并在LCD1602液晶屏显示物体间距
  • 使用RTC模块DS1307和DHT11温湿度传感器在LCD1602液晶屏显示时间日期工作日和环境温湿度数据
开发环境搭建:


Seeeduino V3/Arduino UNO需要下载Arduino IDE来编程和烧写到开发板,到官网根据操作系统下载安装Arduino IDE即可,官网下载地址如下
https://www.arduino.cc/en/Main/Software

安装好Arduino IDE后打开程序按下图选择开发板类型
 
然后将Seeeduino V4.2用手机USB线连接到电脑的USB口,安装下面驱动
https://github.com/Seeed-Studio/Signed_USB_Serial_Driver/archive/master.zip
然后会在设备管理器里面看出USB串行设备记下串口号
 
在Arduino IDE里面修改串口号为上面串口号

这样就完成了开发环境的配置

一、使用LCD1602液晶屏显示文字
下面从最简单的使用LCD1602液晶屏显示文字开始学习,为了减少连接线,使用I2C方式连接LCD1602


硬件连接方法:

LCD1602的VCC GND SDA SCL分别连接到seeed红版(Arduino uno r3)增强板的5V GND A4 A5,然后使用数据线连接seeed红版(Arduino uno r3)增强板和电脑

查看LCD1602的I2C地址:

首先打开Arduino IDE,输入下面sketch扫描i2c地址


#include <Wire.h>

void setup()
{
  Wire.begin();

  Serial.begin(115200);
  Serial.println("\nI2C Scanner");
}


void loop()
{
  byte error, address;
  int nDevices;

  Serial.println("Scanning...");

  nDevices = 0;
  for(address = 1; address < 127; address++ )
  {
    Wire.beginTransmission(address);
    error = Wire.endTransmission();

    if (error == 0)
    {
      Serial.print("I2C device found at address 0x");
      if (address<16)
        Serial.print("0");
      Serial.print(address,HEX);
      Serial.println(" !");

      nDevices++;
    }
    else if (error==4)
    {
      Serial.print("Unknow error at address 0x");
      if (address<16)
        Serial.print("0");
      Serial.println(address,HEX);
    }    
  }
  if (nDevices == 0)
    Serial.println("No I2C devices found\n");
  else
    Serial.println("done\n");

  delay(5000);
}

然后上传开发板运行

 

然后打开串口检测

 

查看串口信息如下

 
可知液晶屏i2c地址3f,然后打开库管理,搜索Liquid Crystal I2C库并安装
 
 


然后创建一个新sketch,输入下面

#include <Wire.h> 
#include <LiquidCrystal_I2C.h>
LiquidCrystal_I2C lcd(0x3f,16,2);
void setup()
{
lcd.init();
// Print a message to the LCD.
lcd.backlight();
lcd.print("www.ickey.cc");
}
void loop()
{
}
上传后效果如下
 


二、使用DHT11温湿度传感器测量温湿度并在LCD1602液晶屏显示环境温湿度

硬件连接方法:

LCD1602连接方法和之前一样,使用I2C连接方法,将VCC GND SDA SCL分别连接开发板的5V GND A4 A5
DHT11的VCC GND DATA连接开发板的3V3 GND D7

软件配置方法:

需要安装的库LiquidCrystal_I2C、DHT11,dht11库可以按下图安装
 
然后加入选择下面文件即可安装DHT11库
 Dht11.zip (3.03 KB, 下载次数: 1) 
然后创建一个sketch
 
 DHT11_LCD1602.rar (1017 Bytes, 下载次数: 0, 售价: 5 IC币) 
然后上传到开发板运行效果如下

三、使用HC-SR04超声波模块测距并在LCD1602液晶屏显示物体间距

硬件连接方法:

将LCD1602使用I2C连接到开发板,SDA SCL分别连接开发板上SDA SCL,LCD1602的VCC GND连接到开发板JP3的VCC GND
将HC-SR04超声波传感器的VCC GND TRIG ECHO分别连接到开发板的5V GND D0 D1
软件配置方法:

打开Arduino IDE,确认安装LiquidCrystal_I2C库后新建sketch,输入下面代码


#include <Wire.h>
#include <LiquidCrystal_I2C.h>
  
#define Trig 0
#define Echo 1
  
float cm;
float range;
  
LiquidCrystal_I2C lcd(0x3F,16,2);
  
void setup() {  
  pinMode(Trig, OUTPUT);
  pinMode(Echo, INPUT);  
  lcd.init();
  lcd.backlight();
}
  
void loop() {  
    digitalWrite(Trig, LOW);
    delayMicroseconds(2);
    digitalWrite(Trig,HIGH);
    delayMicroseconds(10);    
    digitalWrite(Trig, LOW);
    
    range = float(pulseIn(Echo, HIGH));
    cm = range*0.034/2;  
    
  lcd.setCursor(0,0);     
  lcd.print("D=");
  lcd.print(cm);
  
  lcd.setCursor(0,1);    
  lcd.print("Distance in CM");
  
  delay(500);  
}
 

20180409190353.png (0 Bytes, 下载次数: 0)

下载附件

2018-4-9 19:12 上传


上传后运行如下图
 


四、使用RTC模块DS1307和DHT11温湿度传感器在LCD1602液晶屏显示时间日期工作日和环境温湿度数据

硬件连接方法:
LCD1602的SDA SCL分别连接到开发板A4 A5,LCD1602的VCC GND连接开发板JP3的VCC GND
DS1307模块的VCC GND SDA SCL连接开发板的5V GND SDA SCL
DHT11温湿度传感器的VCC GND DATA连接开发板的3V3 GND D7
软件配置方法:

打开Arduino IDE安装RTCLIB库、LiquidCrystal_I2C库、DHT Sensor Library by Adafruit库、Adafruit Unified Sensor库
 
 
 
 

20180417180708.png (0 Bytes, 下载次数: 0)

下载附件

前天 18:48 上传


新建sketch输入下面代码



#include <Wire.h>
#include <RTClib.h>
#include "DHT.h"
#include <LiquidCrystal_I2C.h>
#define DHTPIN 7
#define DHTTYPE DHT11

DHT dht(DHTPIN, DHTTYPE);

float hum;
float temp;

LiquidCrystal_I2C lcd(0x3F,16,2);

RTC_DS1307 RTC;
char daysOfTheWeek[7][12] = {"SUN", "MON", "TUE", "WED", "THU", "FRI", "SAT"};

void setup () {
    Serial.begin(9600);
    lcd.init();
    lcd.backlight();
    dht.begin();
    Wire.begin();
    RTC.begin();
    RTC.adjust(DateTime(__DATE__, __TIME__));  
}

void loop () {
    int h = dht.readHumidity();
    int t = dht.readTemperature();
    
    DateTime now = RTC.now();
    
    Serial.print(now.year(), DEC);
    Serial.print('-');
    Serial.print(now.month(), DEC);
    Serial.print('-');
    Serial.print(now.day(), DEC);
    Serial.print(' ');
    Serial.print(now.hour(), DEC);
    Serial.print(':');
    Serial.print(now.minute(), DEC);
    Serial.print(':');
    Serial.print(now.second(), DEC);
    Serial.print(' ');
    Serial.print(daysOfTheWeek[now.dayOfTheWeek()]);
    Serial.println();
    
    lcd.setCursor(0,0);
    lcd.print(now.year(), DEC);
    lcd.print('-');
    lcd.print(now.month(), DEC);
    lcd.print('-');
    lcd.print(now.day(), DEC);
    lcd.print(' ');
    lcd.print(daysOfTheWeek[now.dayOfTheWeek()]);
    delay(1000);
    lcd.setCursor(0,1);
    lcd.print(now.hour(), DEC);
    lcd.print(':');
    lcd.print(now.minute(), DEC);
    lcd.print(':');
    lcd.print(now.second(), DEC);
    lcd.print(' ');
    lcd.setCursor(9,1);
    lcd.print(t);
    lcd.print("C");
    lcd.print(" ");
    lcd.print(h);
    lcd.print("%");
}
效果如下



原创作品,未经权利人授权禁止转载。详情见转载须知 举报文章

点赞 (0)
辛迪可乐
评论(0)

登录后可评论,请 登录注册

相关文章推荐
X
你的打赏是对原创作者最大的认可
请选择打赏IC币的数量,一经提交无法退回 !
100IC币
500IC币
1000IC币
自定义
IC币
确定
X
提交成功 ! 谢谢您的支持
返回

我要举报该内容理由

×
请输入您举报的理由(50字以内)