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
    +关注

    关注

    190

    文章

    6515

    浏览量

    195975
收藏 人收藏
加入交流群
微信小助手二维码

扫码添加小助手

加入工程师交流群

    评论

    相关推荐
    热点推荐

    Arduino plc和termux esp

    Arduino plc和termux esp
    的头像 发表于 12-06 06:41 1404次阅读

    铁路时钟系统介绍、时钟系统、授时服务器

    时钟系统
    西安同步电子科技有限公司
    发布于 :2025年11月12日 17:39:23

    指针式时钟 单面网络子钟

    时钟
    jf_47371611
    发布于 :2025年09月12日 13:38:52

    ​​FourCastNet 3实现快速精准的大型集合天气预报

    FourCastNet 3(FCN3)是 NVIDIA Earth-2 中最新的 AI 全球天气预报系统。FCN3 首次完美地结合了概率预测能力、计算效率、频谱保真度、集合校准和次季节
    的头像 发表于 08-30 15:49 1857次阅读

    利用NVIDIA Earth-2平台预测天气

    随着极端天气事件愈发频繁,破坏性也越来越强,能够对其进行预测变得至关重要。对于那些对天气波动非常敏感的行业来说,次季节气候预测(即预测两周或更长时间之后的天气),为主动决策和风险管理奠定了基础。
    的头像 发表于 08-12 15:08 933次阅读

    如何用Arduino Nano/UNO R3开发板给另一个Arduino IDE不能下载的Arduino Nano/UNO R3开发板重新烧录引导程序bootlaoder

    本文介绍了如何用能够Arduino IDE下载的Arduino Nano/UNO R3开发板给另一个Arduino IDE不能下载的Arduino Nano/UNO R3开发板重新烧录
    的头像 发表于 08-08 20:16 3064次阅读
    如何用<b class='flag-5'>Arduino</b> Nano/UNO R3开发板给另一个<b class='flag-5'>Arduino</b> IDE不能下载的<b class='flag-5'>Arduino</b> Nano/UNO R3开发板重新烧录引导程序bootlaoder

    免费分享Arduino入门+进阶(全套例程+书籍)

    Arduino是一款开源电子原型平台,由硬件(单片机开发板)和软件(编程环境)组成,旨在让非专业用户也能轻松入门电子制作和编程。它的核心思想是简化硬件开发,通过直观的编程和模块化设计,让用户快速实现
    的头像 发表于 05-22 11:40 796次阅读
    免费分享<b class='flag-5'>Arduino</b>入门+进阶(全套例程+书籍)

    《ESP32S3 Arduino开发指南》第二章 Arduino基础知识

    完成一个电子产品的制作。这就给开源硬件的推广和普及设定了一个很高的门槛,电子爱好者需要花很多时间和精力才能开始开发和制作自己的作品。而使用Arduino能很快地完成一个电子产品的制作
    发表于 05-13 09:28

    智慧路灯如何应对恶劣天气

    ,面对暴雨、大风、暴雪等恶劣天气,叁仟智慧路灯的稳定运行面临着严峻考验。一旦叁仟智慧路灯在恶劣天气下出现故障,不仅会影响城市的照明系统,还可能导致交通混乱、信息传递受阻,给城市的正常运转和居民的生活带来诸多不便。
    的头像 发表于 04-01 18:27 485次阅读

    智慧路灯如何应对极端天气

    引言 在气候变化的大背景下,极端天气愈发频繁,如狂风暴雨、高温酷暑、暴雪严寒等。这些极端天气对城市基础设施构成严峻挑战,叁仟智慧路灯作为智慧城市建设的关键一环也不例外。叁仟智慧路灯不仅要在正常环境下
    的头像 发表于 03-19 17:20 551次阅读

    开源项目!手把手教你制作一个互动式LED墙壁时钟

    一定经验,本指南都将带你走完所有必要的步骤。 教程内容概览 制作视频 编码视频 CAD文件 材料清单 电子组件: Arduino Uno x 1 DS1302 实时时钟模块 x 1 WS2812B
    发表于 02-08 17:47

    I2C总线与Arduino的接口示例

    基础 I2C总线由两条线组成:数据线(SDA)和时钟线(SCL)。SDA用于传输数据,而SCL用于同步数据传输。I2C设备可以是主设备或从设备。主设备生成时钟信号并启动数据传输,从设备响应主设备的请求。 Arduino与I2C
    的头像 发表于 01-17 15:34 2368次阅读

    使用小安派DSL制作天气

    用小安派 DSL做天气站 用户分享DIY   前言 小安派-DSL(AiPi-DSL) 是安信可开源团队专门为Ai-M61-32S设计的一款屏幕驱动开发板,支持2.8/3.5寸等30Pin SPI
    的头像 发表于 01-03 11:18 850次阅读
    使用小安派DSL<b class='flag-5'>制作</b><b class='flag-5'>天气</b>站

    如何使用Arduino实现CAN总线通信呢

    CAN(Controller Area Network)总线是一种常用于汽车和工业控制系统的串行通信协议,以其高可靠性和实时性而闻名。Arduino,作为一种流行的开源微控制器平台,可以通过附加
    的头像 发表于 12-23 09:06 2819次阅读

    自己设计的Arduino UNO R3主控板原理图+PCB源文件(可直接打样)

    一年前做的Arduino UNO r3,开源精神,把自己这块板子奉献给大家,板子没有什么问题,可以直接打样制作,原理图文件都表明了型号。不用谢~ Arduino UNO R3主控板原理图部分截图: *附件:MYArduino
    发表于 12-10 10:14