Introduction

看到何同学最新的视频里面出现的办公室标配的提醒喝水的杯垫,感觉很好做,因此就做一个送给女朋友来提醒他按时喝水,项目主要使用了Arduino Nano作为控制器,SSD1306驱动的0.91寸单色OLED作为显示器,屏幕可以显示进度条,以及定制自己想显示的字母或者bmp图片。具体演示效果如下所示。

【WaterRemind】一款何同学视频中出现的提醒喝水杯垫

Method

硬件

硬件很简单,具体清单如下

  • Arduino nano v3.0
  • 0.91寸Oled SSD1306
  • 有源蜂鸣器
  • 红外反射传感器
  • 锂电池充放板
  • 504060锂电池
  • 杜邦线若干
    成本大概在50块钱左右

代码

#include <Arduino.h>
#include <U8g2lib.h>
#include <string.h>
#ifdef U8X8_HAVE_HW_SPI
#include <SPI.h>
#endif
#ifdef U8X8_HAVE_HW_I2C
#include <Wire.h>
#endifU8G2_SSD1306_128X32_UNIVISION_F_SW_I2C u8g2(U8G2_R0, /* clock=*/ SCL, /* data=*/ SDA, /* reset=*/ U8X8_PIN_NONE);   // Adafruit Feather ESP8266/32u4 Boards + FeatherWing OLED
DS1302 rtc(2, 3, 4); // RST, DAT, CLK
Time t1;
Time t2;
int t3;
char tt;
int bee = 13;
int redPin = A0;
int val;#define bmp1_x 80
#define bmp1_y 16static const unsigned char bmp1[] U8X8_PROGMEM = {
0x00,0x80,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x80,0x00,0x00,0x20,0x00,0x00,0x00,0x00,0x00,0x00,0x80,0x00,0x00,0x20,0x04,0xE0,0x07,0x00,0x00,0x20,0xF0,
0x01,0x94,0x20,0x04,0x60,0x04,0x02,0x00,0x20,0x60,0xC0,0xD5,0x20,0x1E,0xE7,0x05,0x02,0x24,0x20,0xD0,0x40,0x7C,0xB0,0x14,0x2D,0x07,0x02,0x24,0xA4,0xCC,0xC1,0x7C,
0xB0,0x15,0xED,0xE3,0x1A,0x24,0xA3,0x47,0xC3,0x09,0x30,0x3F,0x97,0x83,0x0E,0x24,0x21,0x01,0x40,0xFC,0x38,0x1C,0xF8,0xC4,0x0E,0x24,0x28,0x04,0x74,0xD5,0x21,0x34,
0xD8,0x48,0x72,0x24,0x38,0xA4,0xED,0x57,0x21,0x66,0xD0,0x29,0xC3,0x64,0x30,0x24,0x19,0xD6,0x21,0x82,0x70,0x0F,0x03,0x44,0x00,0x20,0x00,0x44,0x00,0x02,0xF0,0x05,
0x02,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x06,0x02,0x67,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x02,0x00,0x66,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,};#define bmp2_x 78
#define bmp2_y 16
static const unsigned char bmp2[] U8X8_PROGMEM = {
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x04,0x00,0x00,0x00,0x00,0x00,0x00,
0x00,0x00,0x00,0x0C,0x00,0x00,0x00,0x00,0x00,0xF0,0x01,0x80,0x00,0x08,0xFE,0x00,0x01,0x00,0x00,0x80,0x00,0x80,0x00,0x08,0x18,0x30,0x01,0x00,0x00,0x80,0x00,0x00,
0x01,0x3E,0x18,0x60,0x31,0x00,0xFC,0x83,0x00,0x30,0x01,0x1F,0x3C,0x60,0x1D,0x00,0x00,0xF8,0x0F,0x10,0x01,0x6A,0x76,0x60,0x05,0x00,0x00,0xC0,0x01,0x08,0x02,0xCB,
0xD2,0x30,0x3D,0x00,0x00,0x60,0x03,0x0C,0x06,0x09,0x10,0x08,0x61,0x00,0x00,0x20,0x02,0x04,0x04,0x08,0x10,0x40,0x01,0x00,0x00,0x10,0x06,0x00,0x08,0x00,0x10,0xC0,
0x01,0x00,0x00,0x18,0x0C,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x08,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
};#define bmp3_x 80
#define bmp3_y 16
static const unsigned char bmp3[] U8X8_PROGMEM = {
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x20,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x80,0x00,0x20,0x00,0x00,0x00,0x00,0x00,0xC0,0x03,0x80,0x00,
0x20,0x00,0x3C,0x0F,0xFC,0x0F,0xF8,0x00,0x80,0x79,0x78,0x3E,0xE6,0x09,0x40,0x00,0x80,0x00,0xFC,0x63,0x6E,0x32,0xC3,0x10,0x40,0x00,0x80,0x00,0x94,0x3B,0x7A,0x1A,
0xC1,0x10,0xF0,0x03,0xC0,0x07,0xF4,0x71,0x3F,0x1E,0x01,0x18,0x5C,0x00,0xF0,0x00,0xDC,0x17,0xF8,0x1E,0x01,0x08,0x40,0x0C,0x80,0x0C,0x60,0x14,0x98,0x0A,0x03,0x0C,
0x40,0x18,0x80,0x18,0xF0,0x17,0xF0,0x02,0x06,0x04,0x40,0x16,0x80,0x10,0x40,0x16,0x90,0x02,0x0C,0x02,0xF8,0x7B,0xFC,0x3F,0x80,0x13,0xF0,0x02,0x98,0x01,0x0F,0x80,
0x07,0x00,0x00,0x00,0x00,0x02,0xF0,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
};void setup(void) {u8g2.setBusClock(200000);u8g2.begin();Serial.begin(9600);pinMode(bee,OUTPUT);void loop(void) {int i;char a[10];val=digitalRead(redPin);//读取模拟接口的值Serial.println(val);//输出模拟接口的值Serial.println(rtc.getTimeStr());u8g2.setFont(u8g2_font_ncenB08_tr); // choose a suitable fontif (val==0){if (t3<180){u8g2.firstPage();do{//放下杯子开始计时u8g2.clearBuffer();itoa(t3,tt,10);u8g2.drawXBMP(30,0, bmp2_x, bmp2_y, bmp2);u8g2.drawLine(0, 25, t3*0.55, 25);u8g2.drawLine(0, 26, t3*0.55, 26);u8g2.drawLine(0, 27, t3*0.55, 27);u8g2.drawLine(0, 28, t3*0.55, 28);u8g2.drawLine(0, 29, t3*0.55, 29);u8g2.drawLine(0, 30, t3*0.55, 30);u8g2.drawLine(0, 31, t3*0.55, 31);itoa(t3*0.55,a,10);u8g2.drawStr(100,31,a);u8g2.drawStr(113,31,"%");  t3+=1;}while(u8g2.nextPage());delay(10000);//  }}else{t3=0;u8g2.clearBuffer();u8g2.drawXBMP(30,0, bmp1_x, bmp1_y, bmp1);u8g2.sendBuffer();digitalWrite(bee,HIGH);delay(200);digitalWrite(bee,LOW);delay(50);digitalWrite(bee,HIGH);delay(200);digitalWrite(bee,LOW);delay(100);digitalWrite(bee,HIGH);delay(200);digitalWrite(bee,LOW);delay(50);digitalWrite(bee,HIGH);delay(200);digitalWrite(bee,LOW);delay(100);digitalWrite(bee,HIGH);delay(200);digitalWrite(bee,LOW);delay(50);digitalWrite(bee,HIGH);delay(200);digitalWrite(bee,LOW);delay(10000);u8g2.sendBuffer();//响}}else{//拿起杯子t3=0;t1 = rtc.getTime();u8g2.clearBuffer();u8g2.sendBuffer(); }
}

代码需要依赖u8g2库,具体安装方式可以自行在网络搜索

接线

如图,不多解释了

更换图或者字

使用pctolcd2002进行取模,字模设置如下图所示。

随后就可以在点阵区域随意发挥了。

外壳模型

外壳模型随意画了一个,已经上传到github:https://github.com/chenziwenhaoshuai/WaterRemind

成品




【WaterRemind】用Arduino与SSD1306做一款提醒喝水的杯垫(何同学同款)相关推荐

  1. 诚之和:“何同学同款”缺货!曾现身罗永浩薇娅直播间,乐歌的网红带货路

    停更近3个月的B站知名数码Up主"何同学"霸气归来.10月17日,一条介绍无线充电桌的视频和它的制作者"老师好我叫何同学"刷屏网络.截至19日,该视频在B站播放 ...

  2. 恐龙跳一跳游戏python_在esp8266上面开发一款chrome浏览器离线时可玩的那款恐龙跳仙人掌的游戏...

    chrome offline game on esp8266 当前更新到2.0版本 以下是1.0版本 在esp8266上面开发一款chrome浏览器离线时可玩的那款恐龙跳仙人掌的游戏. 原型 游戏的原 ...

  3. java回合制武侠手游_4款回合制手游怎么选?这款武侠新游不容错过!

    原标题:4款回合制手游怎么选?这款武侠新游不容错过! 回合制作为游戏不可或缺的重要一环,当得起历久弥新久盛不衰来形容.在移动游戏兴起的今天,回合制更是以其轻操作重策略的玩法偏向吸引了一大批的拥护者.以 ...

  4. 懒人必备,4款匠心打造的国产软件,每一款都堪称珍品

    话不多说,咱们直入主题. Wox Wox,是一款懒人必备的搜索效率工具. Wox 软件界面简洁,体积轻巧,只需一个搜索框,放置在桌面,你便可以,一键搜索电脑上的任意文件.网页.以及软件等等,减少很多不 ...

  5. html5的在线播放页面,整理5款html5网页播放器,总有一款适合你吧

    整理了5款html5网页播放器,总有一款适合你吧. 酷播云HTML5倍速功能视频播放器 介绍: 重要提示:本播放器为酷播云在线产品,用户可以免费注册使用,下载包仅提供代码使用示例及演示,并非播放器的下 ...

  6. coreldraw水涟漪怎么做_都说女人是水做的,温柔如水,你怎么一点也不温柔呢?...

    我们看看最近网络上流行的一段对话: "都说女人是水做的,温柔如水,你怎么一点也不温柔呢?" "我刚结婚的时候温柔吗?" "温柔啊!" &qu ...

  7. html5+php视频播放器,整理5款html5网页播放器,总有一款适合你吧

    整理了5款html5网页播放器,总有一款适合你吧. 酷播云HTML5倍速功能视频播放器 介绍: 重要提示:本播放器为酷播云在线产品,用户可以免费注册使用,下载包仅提供代码使用示例及演示,并非播放器的下 ...

  8. 哪款app看计算机书籍好,实测六款主流看图软件,看看哪一款更轻小、便捷、实用?...

    实测六款主流看图软件,看看哪一款更轻小.便捷.实用? 2020-08-18 19:47:38 46点赞 127收藏 63评论 创作立场声明:本文通过空间.界面.内存.格式这4个方面对Picasa.Ho ...

  9. 早上空腹喝水,比不吃早餐更伤胃?起床后先做2件事

    节假日清晨,李先生一觉睡到自然醒,非常满足地伸着懒腰拉开窗帘,随手端起床头的一杯水,咕咚咕咚地灌下去,瞬间感觉到神清气爽. "别喝了,你的胃还想不想要了!"还没等李先生清醒,只感觉 ...

最新文章

  1. 关于CSDN不给任何通知强制关闭我的6年博客,我深表痛心
  2. 弹出页(指定高度,自由拖动,点击空白包括状态栏触发)
  3. 哪个学校考研考python_python3爬取中国考研网 考研学校名称和地区并进行数据清洗...
  4. 白钢条用什么可以切割_错怪李佳琦了!原来用小苏打刷牙,1个月真的可以白4度,太心动了...
  5. 拦截导弹 最长上升/下降子序列
  6. 想学Web前端,你需要了解这些职责和必备技能
  7. jmeter之-用Firefox录制https协议证书问题
  8. MYSQL--一条SQL查询语句是如何执行的?
  9. java office文件加水印_文档预览加水印——或可一用的防泄密方式
  10. 疑似荣耀30S将于今日正式官宣:首发搭载全新麒麟820芯片
  11. 网络学习(一)网络版块主题介绍
  12. 微信小程序前端登录模块设计
  13. js实现斗地主的算法 验证牌型 找大于上家的牌型
  14. Qt三种方式实现背景色和背景图(都可放缩,qss方式也可以)
  15. 技能冷却: 判断技能 释放技能
  16. 《视搭》开源视频创作工具,保姆级搭建教程,短视频创作利器
  17. CMU CSAPP : Decoding lab
  18. 对数组名取地址与数组名
  19. windows下tomcat集群配置(两种方法)
  20. mysql入门视频 吾_学习猿地-全网最新版本MySQL8全套视频教程(学完这个课 MySQL 就精通了)...

热门文章

  1. 浙大PAT练习题1003
  2. 《马云给年轻人的77条忠告》读书笔记2
  3. 恒温恒湿实验室(房)建设、设计SICOLAB
  4. PHP连接MySQL数据库【展示员工信息】
  5. 802.11n采用的关键技术
  6. AS608 指纹模块驱动代码
  7. Paddle2.0 + CPM-LM:让AI帮你写文章吧
  8. [go学习笔记.第十六章.TCP编程] 3.项目-海量用户即时通讯系统-redis介入,用户登录,注册
  9. 陈力:传智播客古代 珍宝币 泡泡龙游戏开发第32讲:PHP 构造方法、析构方法
  10. jquery.qrcode生成带logo和背景图的二维码