0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

Arduino天气时钟的制作教程

454398 来源:工程师吴畏 2019-08-01 11:13 次阅读

在本文中,我们将制作Arduino天气时钟,它将告诉我们时间,日期和温度。 LM35传感器将为我们提供温度,DS3231将告诉我们日期和时间,我们将使用OLED显示温度,日期和时间。

电路图

首先,将OLED与Arduino连接。 OLED通过SPI和I2C通信与Arduino配合使用,但我们使用SPI通信连接它。 Arduino上的SPI引脚分别为引脚8,9,10,11和13. OLED与Arduino的连接如下:

连接CS将OLED连接到Arduino的10个。

将OLED的DC连接到Arduino的第9针。

Connect OLED的RES到Arduino的第8针。

将OLED的D1连接到Arduino的第11针。

将OLED的D0连接到Arduino的引脚13.

将OLED的VCC连接到Arduino的5V引脚。

将OLED的GND连接到Arduino的GND引脚。

然后,将DS3231模块与Arduino连接。 DS3231模块通过I2C通信与Arduino配合使用。 Arduino上用于I2C通信的引脚是SDA和SCL。按如下方式将DS3231模块连接到Arduino:

将DS3231的GND连接到Arduino的GND引脚。

将DS3231的VCC连接到Arduino的5V引脚。

将OLED的SDA连接到Arduino上的A4。

将OLED上的SCL连接到Arduino上的A5引脚。

最后,将LM35传感器与Arduino连接。将LM35的左侧引脚连接到Arduino上的5V,中间引脚连接到Arduino上的A0,左侧引脚连接到Arduino上。

代码说明

首先,我们为DS3231模块和OLED添加了库。与用于OLED的其他库相比,OLED的Adafruit库具有更多功能。

#include#包括接下来,我们定义了连接DS3231模块和OLED的引脚。 DS3231模块通过I2C通信与Arduino配合使用,因此我们使用了Arduino的SDA和SCL引脚。

OLED通过SPI通信与Arduino配合使用。因此,我们初始化了用于SPI通信的引脚8,9,10,11,13。之后,我们初始化了LM35传感器引脚和其他变量。

DS3231 rtc(SDA,SCL);

#define OLED_MOSI 11

#define OLED_CLK 13

#define OLED_DC 9

#define OLED_CS 10

#define OLED_RESET 8Adafruit_SSD1306显示(OLED_MOSI,OLED_CLK,OLED_DC,OLED_RESET,OLED_CS);

const int sensor_pin = A0;

float temp;

float output;

在设置功能中,我们将LM35传感器引脚声明为输入,因为Arduino将从传感器获取输入。然后我们将命令发送到DS3231和OLED以开始与Arduino通信。

pinMode(sensor_pin,INPUT); rtc.begin(); display.begin(SSD1306_SWITCHCAPVCC); 以下行在代码中进行了注释,但如果您是第一次使用DS3231模块并且想要设置日期,日期和时间,则取消注释这些行并进行设置。

//rtc.setDOW(星期三);//将星期设置为星期日//rtc.setTime(19,02,0);//将时间设置为12:00:00(24小时格式)//rtc.setDate(7,12,1917);//将日期设置为2017年6月6日然后我们在OLED上打印“天气时钟”5秒钟。

display.clearDisplay(); display.setTextColor(WHITE); display。 setTextSize(2); display.setCursor(0,0); display.print(“Weather”); display.setCursor(0,17); display.print(“Clock”); display.display(); delay(5000 ); 在循环函数中,我们从LM35读取并计算温度。然后我们得到时间和日期并打印在OLED上。

output = analogRead(sensor_pin); temp =(output * 500)/1023; display.clearDisplay(); display.setTextSize(2); display .setCursor(20,0); display.print(rtc.getTimeStr()); display.setTextSize(1); display.setCursor(0,15); display.print(rtc.getDateStr()); display.setTextSize( 1); display.setCursor(70,15); display.print(rtc.getDOWStr());

完整的Arduino代码

#include #include DS3231 rtc(SDA,SCL); #define OLED_MOSI 11 #define OLED_CLK 13 #define OLED_DC 9 #define OLED_CS 10#define OLED_RESET 8Adafruit_SSD1306 display(OLED_MOSI,OLED_CLK,OLED_DC,OLED_RESET,OLED_CS); const int sensor_pin = A0; float temp; float output; void setup(){pinMode(sensor_pin,INPUT); rtc.begin(); display.begin(SSD1306_SWITCHCAPVCC);//rtc.setDOW(WEDNESDAY);//将星期设置为星期日//rtc.setTime(19,02,0);//将时间设置为12:00:00(24小时格式)//rtc.setDate(7,12,1917);//将日期设置为6月6日,2017display.clearDisplay(); display.setTextColor(WHITE); display.setTextSize(2); display.setCursor(0,0); display.print(“Weather”); display.setCursor (0,17); display.print(“Clock”); display.display(); delay(5000);} void loop(){output = analogRead(sensor_pin); temp =(output * 500)/1023; display .clearDisplay(); display.setTextSize(2); display.setCursor(20,0); display.print(rtc.getTimeStr()); display.setTextSize(1); display.setCursor(0,15);显示。打印(rtc.getDateStr()); display.setTextSize(1); display.setCursor(70,15); display.print(rtc.getDOWStr()); display.setTextSize(1); display.setCursor(20,25 ); display.print(“Temp:”); display.print(temp); display.print(“C”); display.display();延迟(1000);}

声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • Arduino
    +关注

    关注

    184

    文章

    6425

    浏览量

    184762
收藏 人收藏

    评论

    相关推荐

    Arduino制作循迹小车教程

    Arduino制作循迹小车完全教程
    发表于 01-05 11:09 2次下载

    开源 | 内嵌图形化编程环境,LiClock多功能墨水屏【天气+时钟+电子书…】

    —— LiClock多功能墨水屏天气时钟, 一款DIY过程对新手友好,功能全且成本低的墨水屏天气时钟。 基于ESP32的2.9寸墨水屏天气
    的头像 发表于 11-17 12:15 1172次阅读
    开源 | 内嵌图形化编程环境,LiClock多功能墨水屏【<b class='flag-5'>天气</b>+<b class='flag-5'>时钟</b>+电子书…】

    使用ATtiny85制作内部时钟的小型8针Arduino

    电子发烧友网站提供《使用ATtiny85制作内部时钟的小型8针Arduino.zip》资料免费下载
    发表于 07-12 11:33 0次下载
    使用ATtiny85<b class='flag-5'>制作</b>内部<b class='flag-5'>时钟</b>的小型8针<b class='flag-5'>Arduino</b>

    利用Arduino制作逆变器原理

    开源硬件-使用 Arduino 在家制作逆变器,逆变器原理图设计分享。
    发表于 07-07 17:22 7次下载
    利用<b class='flag-5'>Arduino</b><b class='flag-5'>制作</b>逆变器原理

    Arduino构建乐高时钟

    电子发烧友网站提供《Arduino构建乐高时钟.zip》资料免费下载
    发表于 07-06 15:02 0次下载
    <b class='flag-5'>Arduino</b>构建乐高<b class='flag-5'>时钟</b>

    制作Arduino控制的机器人

    电子发烧友网站提供《制作Arduino控制的机器人.zip》资料免费下载
    发表于 07-06 14:21 0次下载
    <b class='flag-5'>制作</b><b class='flag-5'>Arduino</b>控制的机器人

    Arduino制作音效

    电子发烧友网站提供《用Arduino制作音效.zip》资料免费下载
    发表于 07-06 10:13 0次下载
    用<b class='flag-5'>Arduino</b><b class='flag-5'>制作</b>音效

    arduino uno制作暗/亮电平表

    电子发烧友网站提供《用arduino uno制作暗/亮电平表.zip》资料免费下载
    发表于 07-04 09:35 0次下载
    用<b class='flag-5'>arduino</b> uno<b class='flag-5'>制作</b>暗/亮电平表

    如何制作基于Arduino的自动开门

    电子发烧友网站提供《如何制作基于Arduino的自动开门.zip》资料免费下载
    发表于 06-29 10:14 0次下载
    如何<b class='flag-5'>制作</b>基于<b class='flag-5'>Arduino</b>的自动开门

    使用Arduino制作简单的数字时钟

    电子发烧友网站提供《使用Arduino制作简单的数字时钟.zip》资料免费下载
    发表于 06-26 10:48 5次下载
    使用<b class='flag-5'>Arduino</b><b class='flag-5'>制作</b>简单的数字<b class='flag-5'>时钟</b>

    如何制作Arduino蓝牙控制的汽车

    电子发烧友网站提供《如何制作Arduino蓝牙控制的汽车.zip》资料免费下载
    发表于 06-26 10:21 0次下载
    如何<b class='flag-5'>制作</b><b class='flag-5'>Arduino</b>蓝牙控制的汽车

    如何制作3D打印的Arduino时钟

    电子发烧友网站提供《如何制作3D打印的Arduino时钟.zip》资料免费下载
    发表于 06-26 09:48 0次下载
    如何<b class='flag-5'>制作</b>3D打印的<b class='flag-5'>Arduino</b><b class='flag-5'>时钟</b>

    Arduino UNO驱动的简单天气监测系统

    电子发烧友网站提供《Arduino UNO驱动的简单天气监测系统.zip》资料免费下载
    发表于 06-20 09:34 0次下载
    <b class='flag-5'>Arduino</b> UNO驱动的简单<b class='flag-5'>天气</b>监测系统

    Arduino制作OLED位图图形

    电子发烧友网站提供《在Arduino制作OLED位图图形.zip》资料免费下载
    发表于 06-16 10:34 1次下载
    在<b class='flag-5'>Arduino</b>中<b class='flag-5'>制作</b>OLED位图图形

    Arduino Uno制作的四轴飞行器

    电子发烧友网站提供《Arduino Uno制作的四轴飞行器.zip》资料免费下载
    发表于 06-15 09:26 3次下载
    <b class='flag-5'>Arduino</b> Uno<b class='flag-5'>制作</b>的四轴飞行器