项目15 模拟沙漏

项目15 模拟沙漏#

1.项目介绍:

古代人没有电子时钟,就发明了沙漏来测时间,沙漏两边的容量比较大,在一边装了细沙,中间有个很小的通道,将沙漏直立,有细沙的一边在上方,由于重力的作用,细沙就会往下流通过通道到沙漏的另一边,当细沙都流到下边了,就倒过来,把一天反复的次数记录下来,第二天就可以通过沙漏反复流动的次数而知道这一天大概的时间了。这一课我们将利用ESP32控制倾斜开关和LED灯来模拟沙漏,制作一个电子沙漏。

2.项目元件:

Img

Img

Img

Img

ESP32*1

面包板*1

倾斜开关*1

10KΩ电阻*1

Img

Img

Img

Img

红色 LED*4

220Ω电阻*1

跳线若干

USB 线*1

3.元件知识:

Img

倾斜开关也叫数字开关或球形开关,里面有一个金属球。它用于检测小角度的倾斜。

原理很简单:当开关倾斜一定角度时,里面的球会向下滚动,接触到连接到外面引脚的两个触点,从而触发电路。否则,球将远离触点,从而断开电路。

这里用倾斜开关的内部结构来说明它是如何工作的,显示如下图:

Img

4.项目接线图:

Img

注意:

怎样连接LED

Img

怎样识别五色环220Ω电阻和五色环10KΩ电阻

Img

Img

5.项目代码:

本教程中使用的代码保存在:“…\程序代码\Python_代码”的路径中。

Img

你可以把代码移到任何地方。例如,我们将代码保存在D盘中,路径为D:\2. 项目教程

Img

打开“Thonny”软件,点击“此电脑”→“D:”→“2. 项目教程”→“项目15 模拟沙漏”。并鼠标左键双击“Project_15_Tilt_And_LED.py”。

Img

from machine import Pin
import time

led1 = Pin(16, Pin.OUT) # 创建引脚2为LED对象,设置引脚2为输出
led2 = Pin(17, Pin.OUT) # 创建引脚17为LED对象,设置引脚17为输出
led3 = Pin(18, Pin.OUT) # 创建引脚18为LED对象,设置引脚18为输出
led4 = Pin(19, Pin.OUT) # 创建引脚19为LED对象,设置引脚19为输出
Tilt_Sensor = Pin(15,Pin.IN) #创建引脚15倾斜传感器对象,设置GP15为输入

while True:
    if(Tilt_Sensor.value() == 0) : #如果倾斜传感器的值为0时
        led1.value(1) # led1 点亮
        time.sleep_ms(200)#延时
        led2.value(1) # led2 点亮
        time.sleep_ms(200)#延时
        led3.value(1) # led3 点亮
        time.sleep_ms(200)#延时
        led4.value(1) # led4 点亮
        time.sleep_ms(200)#延时
    else :           #如果倾斜传感器的值为1时
        led4.value(0) # led4 熄灭
        time.sleep_ms(200)#延时
        led3.value(0) # led3 熄灭
        time.sleep_ms(200)#延时
        led2.value(0) # led2 熄灭
        time.sleep_ms(200)#延时
        led1.value(0) # led1 熄灭
        time.sleep_ms(200)#延时

6.项目现象:

确保ESP32已经连接到电脑上,单击Img

Img

单击Img,代码开始执行,你会看到的现象是:将面包板倾斜到一定角度,led就会一个一个地亮起来。当回到上一个角度时,led会一个一个关闭。就像沙漏一样,随着时间的推移,沙子漏了出来。按“Ctrl+C”或单击Img退出程序。

Img

Img