Arduino——My-Clock项目 发布时间:2018-12-31

技术:Arduino、光敏传感器、DHT11、DS1302、OLED显示屏

概述

项目My-Clock是一个环境监测时钟,接入光敏传感器和温湿度传感器监测环境信息,加入DS1302模块用于获取时间,并用OLED显示屏进行实时显示。

详细

代码下载:http://www.demodashi.com/demo/14767.html

一、My-Clock简介

项目My-Clock是一个环境监测时钟,接入光敏传感器和温湿度传感器监测环境信息,加入DS1302模块用于获取时间,并用OLED显示屏进行实时显示。Arduino内部有AD/DA转换器,所以用Arduino来获取一些传感器的模拟值是非常容易的事。

My-Clock的硬件材料:Arduino、光敏传感器、DHT11温湿度传感器和0.96寸OLED显示屏(7针)。



二、My-Clock实现

1. 硬件连接:

2. 加载库:

  • 右击Arduino软件->打开文件所在的位置
  • 将本项目代码文件夹中的Dht11,DS1302文件夹复制到libraries文件夹中

  • 打开Arduino IDE -> 项目 -> 加载库 -> 管理库中搜索U8glib,然后安装即可

3. OLED如何显示中文呢?

U8glib的位图函数可以实现中文的显示:

函数原型:drawBitmapdrawBitmapP(u8g_uint_t x ,u8g_uint_t y ,u8g_uint_t cnt,u8g_uint_t h , const uint8_t * bitmap)//参数: x:x轴起点,y:y轴起点,cnt:一行是8的几倍,h:高,bitmap为数组地址

打开PCtoLCD2002.exe,修改以下:

输入你想要显示的汉字,点击->生成字模,复制下面的数组即可:

这里我们得到的是:

{0x00,0x08,0x00,0x08,0x7C,0x08,0x44,0x08,0x45,0xFE,0x44,0x08,0x44,0x08,0x7C,0x08},
{0x44,0x88,0x44,0x48,0x44,0x48,0x44,0x08,0x7C,0x08,0x44,0x08,0x00,0x28,0x00,0x10},/*"时",0*/
{0x20,0x00,0x13,0xFC,0x10,0x04,0x40,0x04,0x47,0xC4,0x44,0x44,0x44,0x44,0x44,0x44},
{0x47,0xC4,0x44,0x44,0x44,0x44,0x44,0x44,0x47,0xC4,0x40,0x04,0x40,0x14,0x40,0x08},/*"间",1*/

放到代码中为:

const uint8_t bitmap_z0 [] U8G_PROGMEM ={
  0x00,0x08,0x00,0x08,0x7C,0x08,0x44,0x08,0x45,0xFE,0x44,0x08,0x44,0x08,0x7C,0x08,
  0x44,0x88,0x44,0x48,0x44,0x48,0x44,0x08,0x7C,0x08,0x44,0x08,0x00,0x28,0x00,0x10,
};//‘时’
const uint8_t bitmap_z1 [] U8G_PROGMEM ={
  0x20,0x00,0x13,0xFC,0x10,0x04,0x40,0x04,0x47,0xC4,0x44,0x44,0x44,0x44,0x44,0x44,
  0x47,0xC4,0x44,0x44,0x44,0x44,0x44,0x44,0x47,0xC4,0x40,0x04,0x40,0x14,0x40,0x08,
};//‘间’

接着用drawBitmapP函数就可以打印中文“时间”了:

u8g.drawBitmapP ( 0 , 0 , 2 , 16 , bitmap_z0);   //在(0,0)处打印‘时’
u8g.drawBitmapP ( 16 , 0 , 2 , 16 , bitmap_z1);  //在(0,0)处打印‘间’

OLED显示代码如下:

u8g.firstPage();  //表示图像循环的开始
    do{
         u8g.setColorIndex(1);
         u8g.drawBitmapP ( 0 , 0 , 2 , 16 , bitmap_z0);  //时
         u8g.drawBitmapP ( 16 , 0 , 2 , 16 , bitmap_z1); //间
         u8g.setFont(u8g_font_fub11);   //设置字体和自号
         u8g.setPrintPos(32, 13);       //显示的位置
         u8g.print(":");                //打印‘:’
         u8g.setPrintPos(42, 13);       //显示的位置
         u8g.print(buf);                //打印时间
         u8g.setPrintPos(90, 13);       //显示的位置
         u8g.print(day);                //打印星期

         u8g.setPrintPos(0, 35);        //显示的位置
         u8g.print("T:");               //打印“T:”
         u8g.setPrintPos(22, 35);       //显示的位置
         u8g.print(tem);                //打印温度
         u8g.setPrintPos(42, 35);       //显示的位置
         u8g.print("C");                //打印‘C’
         u8g.setPrintPos(68, 35);       //显示的位置
         u8g.print("H:");               //打印“H:”
         u8g.setPrintPos(90, 35);       //显示的位置
         u8g.print(hum);                //打印湿度
         u8g.setPrintPos(110, 35);      //显示的位置
         u8g.print("%");                //打印‘%’

         u8g.setPrintPos(0, 60);        //显示的位置
         u8g.print("L:");               //打印“L:”
         u8g.setPrintPos(18, 60);       //显示的位置
         u8g.print(light_date);         //打印光强
         u8g.setPrintPos(36, 60);       //显示的位置
         u8g.print("%");                //打印‘%’

         u8g.setPrintPos(60, 60);       //显示的位置
         u8g.print("MyClock");          //打印“MyClock”

      }while( u8g.nextPage() );  //u8g.nextPage() 表示图像循环的结束

My-Clock效果如下图:

My-Clock效果演示视频:



三、总结

前面教大家如何开发传感器和使用显示屏,都是为本文做铺垫的,做个小项目将所学的知识整合起来是很有必要的。这里我将获取到的时间、温湿度和光照强度值在OLED上简单的显示出来。Arduino内部有AD/DA转换器,因此接收传感器的模拟值非常容易,大家也可以在此功能上加入其他传感器,继续扩展功能。希望你能继续支持!!!

觉得对你有帮助的话,可以收藏下哦,后面还会介绍其他高大上的东西!!!



四、项目结构图

代码下载:http://www.demodashi.com/demo/14767.html

注:本文著作权归作者,由demo大师发表,拒绝转载,转载需要作者授权

原文地址:https://www.cnblogs.com/demodashi/p/10503394.html

时间: 2024-10-10 20:43:04

Arduino——My-Clock项目 发布时间:2018-12-31的相关文章

2018.12.31|区块链技术头条

元旦快乐|今日区块链技术头条 1.比特大陆裁撤全部矿场,「巨轮」早已危机暗藏? 2.加密货币和区块链的2018:行业发展回顾 3.引介 | Uniswap -- 一家不走寻常路的交易所 4.联盟链初识以及Fabric环境搭建流程 5.区块链技术指南:如何用链码实现的Hello World 6.关于比特币的炒作周期,蘑菇已经给了我们答案 7.东半仙:全是假货,没有一件真的!(百假争鸣之三十六) 8.盘点走出概念验证的区块链落地项目 9.区块链服务渐渐在全球范围内推出 华为成为区块链巨头的潜力股 1

迎接2019多校联合新生训练赛(2018/12/31)

A 新年礼物(数学) 这个题之前cf div2刚刚考过应该都会吧.就是把左边界×2遍历一下就可以了 代码 #include <bits/stdc++.h> using namespace std; typedef long long ll; int main() { ios::sync_with_stdio(0); cin.tie(0); cout.tie(0); ll l,r,sum=0; cin>>l>>r; for(ll i=l;i<=r;) i*=2,su

date和clock获取的时间不一致

[[email protected] ~]# clock Sun 25 Feb 2018 12:36:09 AM CST -0.016252 seconds   [[email protected] ~]# date Sun Feb 25 18:49:44 CST 2018 所看到clock和date输出的时间不一致,然后我查看时区是正确的.然后我解决方法如下 [[email protected] ~]# date -R Sun, 25 Feb 2018 18:54:26 +0800 步骤一:先

Tomcat的安装配置与web项目发布

Tomcat的安装配置与web项目发布 今日内容 1.Web开发基本概念(了解) 2.tomcat的安装和配置(必会) 3.web项目的发布(必会) 4.Http协议简介(理解) Web开发基本概念 1.软件的架构 常用的软件:QQ.京东.淘宝.kgc 1)C/S架构 解释:客户端/服务器. 特点:需要下载并安装,每次更新需要下载,客户端和服务器有可能都需要更新 控件炫酷,因为它调用的是系统底层的图形的API 2)B/S架构 解释:浏览器/服务器架构.它是基于Http协议的,用的是请求/响应模式

VS2012中使用CEGUI项目发布到XP平台的问题(核心方法就一句话。“你项目使用的所有外部依赖库都用/MT编译。”)

接着上一篇文章,详细说说如何把一个带CEGUI的项目发布到XP平台. 这个问题纠缠了我好几天.这里把详细解决思路记下来.有同样问题的朋友可以少走很多弯路. 核心方法就一句话.“你项目使用的所有外部依赖库都用/MT编译.” 1.准备. 首先你要具备如下工具:CEGUI源码:FreeType源码:Pcre源码:CMake工具.我会在下文说明原因. 各个开源库的版本号,请参考你的CEGUI引用的各自的头文件分别下载. FreeType开源库主页:http://sourceforge.net/proje

Java Web项目发布及使用自定义域名

详细讲解的网址: http://wenku.baidu.com/link?url=-ACZxKUcfrbhrMRUP3Ov-Q_c-Q9JPrA9D1fzHjHuJsWwZfRsVDVQ2qBtoY7Ly5Os_iNgQTIjepSxK5DGEl1OF2UM1hjXnxNMlL6l5tdNXpS Java Web项目发布及使用自定义域名的方法: 第一步:拷贝Java Web项目工程名至Tomcat7.x安装目录/webapps下:如下 C:\WebServer\apache-tomcat-7.0

第一次项目发布的心得体会

昨晚, —— 不, 应该是今天凌晨, —— 注定是个不简单的时刻. 我入职后参与的第一个项目发布,而且自己所做的工作是数据订正,涉及用户数据的操作总是非常敏感而重要的.因此,心理还是比较紧张的. 果然是真实环境更能锻炼人.虽然事先检查了好几遍,可是实际执行时还是出问题了. 事情是这样的: 我写了几个 .py  脚本用来操作数据库,需要更新10000多个用户的资源记录,每个用户的资源记录涉及好几个数据库的几张表.  在具体执行时,发现每一个用户的资源更新都比较慢,——但实际上,仅从操作上来看并不能

log4j的日志文件保存到项目发布目录,log4j文件每天分割按日期命名

自己设置目录,也就是在项目启动时通过System.setProperty来设置,实现ServletContextListener来解决: public class log4jlistener implements ServletContextListener { public static final String log4jdirkey = "log4jdir"; public void contextDestroyed(ServletContextEvent servletcont

Android各版本代号、版本号、API/NDK级别、发布时间及市场份额

Android各版本代号.版本号.API/NDK级别.发布时间及市场份额 代号 版本号 API/NDK级别 发布时间 棉花糖 Marshmallow 6.0.1 API level 23 2015-12 6 2015-10-05 棒棒糖 Lollipop 5.1.1 API level 22 2015-04-21 5.1 2015-03-09 5.0.2 API level 21 2014-12-19 5.0.1 2014-12-02 5 2014-11-12 奇巧 KitKat 4.4W.2