当前位置:   article > 正文

树莓派科学小实验4B--08_倾斜传感器、干簧管、震动传感器_三个传感器树莓派实验

三个传感器树莓派实验

系列文章目录

树莓派科学小实验
001 点亮第一盏LED灯
002 点亮LED灯组
003_开关控制LED灯
004_获取温湿度
005_跑马灯(ws2812b))
006_数字温度传感器(PCF8591,LM393)
007_继电器
008_倾斜传感器、干簧管、震动传感器



前言

倾斜传感器、干簧管、震动传感器 这一类型传感器是一样的数字传感器,可以直接接在树莓派的GPIO端口上来获取高低电平值。


提示:以下是本篇文章正文内容,下面案例可供参考

一、实验元件

接口板一块
在这里插入图片描述
双色灯模块一个
在这里插入图片描述

倾斜传感器
在这里插入图片描述
震动传感器
在这里插入图片描述

二、接线原理
1) 传感器和双色灯的VCC和GND要共线,VCC供电选择3.3V
2)双色灯的控制线接在18脚上
3)传感器的输出接在17脚上

二、代码

1.引入库

代码如下(示例):

from gpiozero import LED, Button
import time,datetime
from signal import  pause
  • 1
  • 2
  • 3

2. 管脚定义

可以将传感器看做一个开关来定义直接调用gpiozero中的函数就可以了

led = LED(18)
SButton = Button(17)
  • 1
  • 2

3. 实现代码

第一种模式,直接读取传感器的高低电平来显示,通过pause()函数来实现不退出

# -*- coding: utf-8 -*-
"""倾斜传感器、干簧管、震动传感器实验
#
author = "Derek Tian"
version = '0.0.1'
make day=2/9/2022 6:44 PM
"""
__docformat__ = "restructuredtext en"

__all__ = []

__license__ = "MIT license"

from gpiozero import LED, Button
import time,datetime
from signal import  pause

led = LED(18)
SButton = Button(17)

def SS():
    led.on()
    print(f"{datetime.datetime.now()}:发生倾斜")
def SS1():
    led.off()
    print(f"*"*20)

 
if __name__ == '__main__':
    led.on()
    #loop()
    SButton.when_activated=SS
    SButton.when_deactivated=SS1
    print('This is Main start')
    pause()
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23
  • 24
  • 25
  • 26
  • 27
  • 28
  • 29
  • 30
  • 31
  • 32
  • 33
  • 34
  • 35

程序启动

在这里插入图片描述发生倾斜时,LED从绿色变成红色,同时程序有显示
在这里插入图片描述在这里插入图片描述

第二种模式,通过循环来读取传感器的状态值

# -*- coding: utf-8 -*-
"""
#类说明文件
author = "Derek Tian"
version = '0.0.1'
make day=2/9/2022 6:44 PM
"""
__docformat__ = "restructuredtext en"

__all__ = []

__license__ = "MIT license"

from gpiozero import LED, Button
import time,datetime
from signal import  pause

led = LED(18)
SButton = Button(17)

def SS():
    led.on()
    print(f"{datetime.datetime.now()}:发生倾斜")
def SS1():
    led.off()
    print(f"*"*20)


def loop():
    while True:
        SBs=SButton.is_active # 获取开关的状态 1 为高电平 ;0为低电平
        print(f"Sbs:{SBs}")
        if SBs:
            led.on()
            print(f"{datetime.datetime.now()}:发生倾斜")
        else:
            led.off()
            print(f"~"*20)
        time.sleep(1)

if __name__ == '__main__':
    led.on()
    loop()
   

  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23
  • 24
  • 25
  • 26
  • 27
  • 28
  • 29
  • 30
  • 31
  • 32
  • 33
  • 34
  • 35
  • 36
  • 37
  • 38
  • 39
  • 40
  • 41
  • 42
  • 43
  • 44
  • 45

实现的效果是一样的,但是固定延迟1秒
在这里插入图片描述

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/笔触狂放9/article/detail/560184
推荐阅读
相关标签
  

闽ICP备14008679号