diff --git a/DS1307_/README_.md b/DS1307_/README_.md
new file mode 100644
index 0000000000000000000000000000000000000000..0b8cb64e9eb03d2d687849afd8427c37ad28b39a
--- /dev/null
+++ b/DS1307_/README_.md
@@ -0,0 +1,77 @@
+# 时钟
+
+## 案例展示
+
+一个能显示时间,日期和星期的时钟。
+
+
+
+## 物理连线
+
+### 传感器选择
+
+传感器选择如下图所示的型号为`DS1307`的时钟模组。
+
+
+
+### 传感器接线
+
+传感器与`Waffle Nano`之间的接线方式如下表所示,且未在下表中显示的引脚均处于悬空不连状态。
+
+| Waffle Nano | 传感器 |
+| ----------- | ------ |
+| 3V3 | VCC |
+| IO0 | SDA |
+| IO1 | SCL |
+| GND | GND |
+
+(注:上述传感器接线柱均为五接线柱一侧,即上图下方的五个接线柱)
+
+## 传感器库使用
+
+可以获取[ds1307.py](https://gitee.com/blackwalnutlabs/waffle-nano-v1-sensor-lib/tree/master/DS1307_/code/ds1307.py),将此库通过[Waffle Maker](https://wafflenano.blackwalnut.tech/ide/index.html#/editor)的文件上传功能将此库上传到`Waffle Nano`上。
+
+我们可以在主函数中使用以下代码导入此库。
+
+```python
+import ds1307
+```
+
+在对象构造函数中,我们需要传入一个已经构造好的`I2C`对象
+
+```python
+# 此处省略I2C对象的构造过程
+ds = ds1307.DS1307(i2c) # 构造时钟对象
+```
+
+导入此库后,我们可以进行以下操作
+
+```python
+datetime() datetime(now) halt(False)
+```
+
+1.`ds.datetime()`
+
+该函数能读出`DS1307`现在的时间,所以,你可以使用`print(ds.datetime())`来显示时间(注:若未的设置时间,只能读出其内置的初始值,即`(2000,1,1,0,0,0,0)`)。
+
+2.`ds.datetime(now)`
+
+该函数用于设置时间,具体设置方法如下。
+
+```python
+now=(2021,7,1,4,0,0,0)
+ds.datetime(now)
+```
+
+3.`ds.halt(False)`
+
+该函数用于控制振荡器,`False`激活,`True`关闭。
+
+关于此库相关细节说明详见代码注释。
+
+## 案例代码复现
+
+可以获取[main.py](https://gitee.com/blackwalnutlabs/waffle-nano-v1-sensor-lib/tree/master/DS1307_/code/main.py)代码将其内容复制到[Waffle Maker](https://wafflenano.blackwalnut.tech/ide/index.html#/editor)编辑器上传输给`Waffle Nano`,以复现此案例,基础效果如文档开始图片所示。
+
+案例相关细节说明详见代码注释。
+
diff --git a/DS1307_/code/ds1307.py b/DS1307_/code/ds1307.py
new file mode 100644
index 0000000000000000000000000000000000000000..6ec89637f40160808cd6f41f0faa165ed58a538b
--- /dev/null
+++ b/DS1307_/code/ds1307.py
@@ -0,0 +1,53 @@
+from micropython import const # 引入常量
+
+DATETIME_REG = const(0) # 日期的地址是从0x00-0x06
+CHIP_HALT = const(128)
+
+class DS1307(object):
+ def __init__(self, i2c, addr=0x68):# 定义一个DS1307的类
+ self.i2c = i2c
+ self.addr = addr
+ self.weekday_start = 1
+ self._halt = False # False时振荡器启动,True时振荡器关闭
+
+ def _dec2bcd(self, value):# 将十进制转换为二进制编码十进制(BCD)格式
+ return (value // 10) << 4 | (value % 10)
+
+ def _bcd2dec(self, value):# 将二进制编码十进制(BCD)格式转换为十进制
+ return ((value >> 4) * 10) + (value & 0x0F)
+
+ def datetime(self, datetime=None):# 设定或获得时间
+ if datetime is None:# 设定时间
+ buf = self.i2c.readfrom_mem(self.addr, DATETIME_REG, 7)# 从寄存器中获得时间数据
+ return (
+ self._bcd2dec(buf[6]) + 2000, # year
+ self._bcd2dec(buf[5]), # months
+ self._bcd2dec(buf[4]), # days
+ self._bcd2dec(buf[3] - self.weekday_start), # weekday
+ self._bcd2dec(buf[2]), # hours
+ self._bcd2dec(buf[1]), # minutes
+ self._bcd2dec(buf[0] & 0x7F), # seconds
+ 0 # subseconds
+ )
+ buf = bytearray(7)
+ buf[0] = self._dec2bcd(datetime[6]) & 0x7F # second,msb=CH,1=halt,0=go
+ buf[1] = self._dec2bcd(datetime[5]) # minute
+ buf[2] = self._dec2bcd(datetime[4]) # hour
+ buf[3] = self._dec2bcd(datetime[3] + self.weekday_start) # weekday
+ buf[4] = self._dec2bcd(datetime[2]) # day
+ buf[5] = self._dec2bcd(datetime[1]) # month
+ buf[6] = self._dec2bcd(datetime[0] - 2000) # year
+ if (self._halt):
+ buf[0] |= (1 << 7)
+ self.i2c.writeto_mem(self.addr, DATETIME_REG, buf)# 向寄存器内写入时间数据
+
+ def halt(self, val=None):# 通电、断电或检查状态
+ if val is None:
+ return self._halt
+ reg = self.i2c.readfrom_mem(self.addr, DATETIME_REG, 1)[0]
+ if val:
+ reg |= CHIP_HALT
+ else:
+ reg &= ~CHIP_HALT
+ self._halt = bool(val)
+ self.i2c.writeto_mem(self.addr, DATETIME_REG, bytearray([reg]))
\ No newline at end of file
diff --git a/DS1307_/code/main_.py b/DS1307_/code/main_.py
new file mode 100644
index 0000000000000000000000000000000000000000..ca362e0549ce213136da28f05b833a341bd8f2d9
--- /dev/null
+++ b/DS1307_/code/main_.py
@@ -0,0 +1,37 @@
+from machine import I2C, Pin,SPI # 导入通信引脚及相关的库
+import ds1307,utime,st7789 # 导入时钟模块,时间模块和屏幕驱动
+i2c = I2C(1, sda=Pin(0), scl=Pin(1),freq=100000) # 构造IIC对象,将1号引脚设置为scl,将0号引脚设置为sda,频率设为100000
+week_day = ["Mon", "Tue", "Wed", "Thus", "Fri", "Sat", "Sun"] # 设置星期列表便于下方将数字转换为星期
+ds = ds1307.DS1307(i2c) # 构造时钟对象
+spi = SPI(0, baudrate=40000000, polarity=1, phase=0, bits=8, endia=0, sck=Pin(6), mosi=Pin(8)) # 构造spi对象
+display = st7789.ST7789(spi, 240, 240, reset=Pin(11,func=Pin.GPIO, dir=Pin.OUT), dc=Pin(7,func=Pin.GPIO, dir=Pin.OUT)) # 构造屏幕控制对象
+display.init() # 屏幕初始化
+display.fill(st7789.color565(255, 255, 255)) # 设置屏幕背景为白色
+
+# 接下来的一部分为设置时间,设置完成后需删除,防止覆盖现有时间而产生错误
+# print(ds.datetime()) # 显示当前DS1307模块的内置时间
+# ds.halt(False) # 打开振荡器,让时间开始走动
+# now=(2021,7,16,5,13,27,0,0) # 接下来两句为设定时间
+# ds.datetime(now)
+
+while True: # 不断刷新,获取实时数据
+ date = ds.datetime() # 获取时间和日历信息
+ year = date[0] # 年
+ month = date[1] # 月
+ day = date[2] # 日
+ weekday = date[3] # 星期
+ hour = date[4] # 小时
+ minute = date[5] # 分钟
+ second = date[6] # 秒
+
+ # 统一格式
+ year1_str = "%04d" % year
+ month1_str = "%02d" % month
+ day1_str = "%02d" % day
+ time1_str = "%02d:%02d" % (hour, minute)
+ second1_str = "%02d" % second
+
+ display.draw_string(40, 40, time1_str+":"+second1_str, size=3, color=st7789.color565(0, 0, 0)) # 在屏幕上显示时分秒
+ display.draw_string(20, 130, year1_str+"/"+month1_str+"/"+day1_str, size=3, color=st7789.color565(0, 0, 0)) # 在屏幕上显示年月日
+ display.draw_string(30, 195, week_day[weekday - 1], size=3, color=st7789.color565(0, 0, 0)) # 在屏幕上显示星期
+ utime.sleep(1) # 每隔一秒刷新一次
\ No newline at end of file
diff --git a/DS1307_/img/IMG20210713195601.jpg b/DS1307_/img/IMG20210713195601.jpg
new file mode 100644
index 0000000000000000000000000000000000000000..e8e90db0b7691cc508788b4b0d2937a8790ef939
Binary files /dev/null and b/DS1307_/img/IMG20210713195601.jpg differ
diff --git a/DS1307_/img/IMG20210721120603.jpg b/DS1307_/img/IMG20210721120603.jpg
new file mode 100644
index 0000000000000000000000000000000000000000..c3c849375a79805471e6fa2dc844daea556bea0e
Binary files /dev/null and b/DS1307_/img/IMG20210721120603.jpg differ
diff --git a/LM35/README.md b/LM35/README.md
new file mode 100644
index 0000000000000000000000000000000000000000..fd39eff4ff9d6351671a350b03d951d24822b772
--- /dev/null
+++ b/LM35/README.md
@@ -0,0 +1,50 @@
+# 温度测量
+
+## 案例展示
+
+一个简单的温度计,检测周围的环境温度,并呈现出来。
+
+
+
+## 物理连线
+
+### 传感器选择
+
+传感器选择如下图的型号为LM35的温度传感模块
+
+
+
+### 传感器连线
+
+传感器与Waffle Nano 之间的接线方式如下表所示
+
+| Waffle Nano | 传感器 |
+| :---------- | ------ |
+| 3V3 | VCC |
+| IO13 | OUT |
+| GND | GND |
+
+## 传感器库使用
+
+可以获取[LM35.py](https://gitee.com/blackwalnutlabs/waffle-nano-v1-sensor-lib/blob/master/LM35/code/LM35.py),将此库通过[Waffle Maker](https://wafflenano.blackwalnut.tech/ide/index.html#/editor)的文件上传到`Waffle Nano`上。
+
+因为该传感器测温库较为简单,所以我们可以直接在主函数中使用以下代码导入此库
+
+```python
+import LM35
+```
+
+接着,定义一个新的变量接收`temp()`方法传回来的结果
+
+```python
+te=LM35.temp()#获取温度
+```
+
+关于此库相关细节说明详见代码注释。
+
+## 案例代码复现
+
+可以获取[main.py](https://gitee.com/blackwalnutlabs/waffle-nano-v1-sensor-lib/blob/master/LM35/code/main.py)函数,将其内容复制到[Waffle Makeer](https://wafflenano.blackwalnut.tech/ide/index.html#/editor)编辑器上传输给`Waffle Nano`,以复现此案例。
+
+案例相关细节说明详见代码注释。
+
diff --git a/LM35/code/LM35.py b/LM35/code/LM35.py
new file mode 100644
index 0000000000000000000000000000000000000000..f58cfa8439fa337f962acd7f1817a98ba40663e4
--- /dev/null
+++ b/LM35/code/LM35.py
@@ -0,0 +1,7 @@
+def temp():
+ from machine import Pin, ADC#导入 machine 模块的硬件类 Pin和数模转换类ADC
+ adc = ADC(Pin(13))#把waffle nano默认的GPIO 13号引脚设置为ADC通道3
+ adc.equ(ADC.EQU_MODEL_8)#设置ADC的平均计算的采样次数为8次
+ adc.atten(ADC.CUR_BAIS_DEFAULT)#将电源电压设为默认值
+ a = "%.3g" % ((adc.read() * 0.488 - 32) / 1.8-5)#读取采样值并计算,实操后发现测得温度偏高5℃,所以减去5℃
+ return a#返回温度值
\ No newline at end of file
diff --git a/LM35/code/main.py b/LM35/code/main.py
new file mode 100644
index 0000000000000000000000000000000000000000..58bc4879c3dcbdb792fa23c6ef2129bcd99d2914
--- /dev/null
+++ b/LM35/code/main.py
@@ -0,0 +1,11 @@
+from machine import SPI, Pin#导入通信以及引脚相关的库
+import st7789,LM35,utime#导入屏幕库驱动,温度模块,时间模块
+spi = SPI(0, baudrate=40000000, polarity=1, phase=0, bits=8, endia=0, sck=Pin(6), mosi=Pin(8))##构造spi对象
+display = st7789.ST7789(spi, 240, 240, reset=Pin(11,func=Pin.GPIO, dir=Pin.OUT), dc=Pin(7,func=Pin.GPIO, dir=Pin.OUT))#构造屏幕控制对象
+display.init()#屏幕初始化
+display.fill(st7789.color565(255, 255, 255))#设置屏幕背景为白色
+while(1):#不断循环获取实时温度
+ te=LM35.temp()#获取温度
+ display.draw_string(70, 150, str(te)+" C",size=3,color=st7789.color565(0, 0, 0))#在屏幕上显示温度
+ utime.sleep(1)#刷新温度的时间间隔
+ display.fill(st7789.color565(255, 255, 255))#设置屏幕背景为白色
\ No newline at end of file
diff --git a/LM35/img/IMG20210713193158.jpg b/LM35/img/IMG20210713193158.jpg
new file mode 100644
index 0000000000000000000000000000000000000000..b8ac7790e00f0597f6e067aa3f8f73da8cc4621e
Binary files /dev/null and b/LM35/img/IMG20210713193158.jpg differ
diff --git a/LM35/img/IMG20210716152704.jpg b/LM35/img/IMG20210716152704.jpg
new file mode 100644
index 0000000000000000000000000000000000000000..a5f0b9b57338c06e96ae05f039dc800f6f68dff3
Binary files /dev/null and b/LM35/img/IMG20210716152704.jpg differ