存档11月 2019

有源蜂鸣传感器实验

实验目的:通过利用有源蜂鸣传感器在接收到低电平的时候,发出蜂鸣的特性,然后用来模仿时钟几点的报时效果。
#接线效果如图
接线示例
#实验代码

#!/usr/bin/env python
#coding:utf-8

'''
from JiuJiang
树莓酱的操作实例
https:://www.shumeijiang.com
'''

import RPi.GPIO as GPIO  ##引入GPIO模块
import time              ##引入time库

soundPin = 18   ##定义信号输出为18口

GPIO.setmode(GPIO.BCM)          ##此处采用的BCM编码 因为T型扩展板也是BCM编码 方便统一
GPIO.setup(soundPin, GPIO.OUT)  ##设置信号引脚为输出状态

n = 1
moment = int(raw_input('老狼 老狼几点了:'))  ##接收问询输入
if moment > 12: moment = 12   ##12点老狼就要来了

try:
    while True:
        if n > moment: break
        print n
        GPIO.output(soundPin, GPIO.LOW)  ##输出低电平 然后传感器发出声音
        time.sleep(0.15)    ##声音输出时间
        GPIO.output(soundPin, GPIO.HIGH) ##输出高电平 然后声音输出终止
        time.sleep(0.15)    ##声音中断时间
        n += 1

except KeyboardInterrupt:
    pass

GPIO.cleanup()
#实验效果
1、执行代码 Python jiujiang.py;
2、根据提示输入时刻;
3、屏幕会逐个报数,然后同时蜂鸣传感器会开始鸣响,直到报到指定的点数;
4、仅支持报数到12点(因为老狼要来了)。
#视频效果如下:

轻触开关传感器实验

实验目的:通过点击传感器,然后程序获取状态;从而得到不同的状态提示。
#接线效果如图
接线的例子
接线示例
#实验代码

#!/usr/bin/env python
#coding:utf-8

'''
from JiuJiang
树莓酱的操作实例
https:://www.shumeijiang.com
'''

import RPi.GPIO as GPIO  ##引入GPIO模块
import time              ##引入time库

touchPin = 18   ##设置传感器走18口

GPIO.setmode(GPIO.BCM)  ##此处采用的BCM编码 因为T型扩展板也是BCM编码 方便统一
GPIO.setup(touchPin, GPIO.IN)  ##设置BCM编码下18号引脚为读取状态

#隔一秒读取一次状态  然后判断输出
try:
    while True:
        status = GPIO.input(touchPin)  ##读取数据
        if status == 1:
            print '正常';
        elif status == 0:
            print '不好 被踩到了';

        time.sleep(1)

except KeyboardInterrupt:
    pass

GPIO.cleanup()
#实验效果
1、点击执行 Python jiujiang.py
2、传感器没有触动则提示 ”正常“;
3、点击传感器则提示 ”不好 被踩到了“;
#视频效果如下:

倾斜传感器实验

实验目的:通过操作倾斜传感器,实现对物体倾斜产生的感知。
#接线效果如图:
接线示例
#实验代码
检测小车状态

#!/usr/bin/env python
#coding:utf-8

'''
from JiuJiang
树莓酱的操作实例
https:://www.shumeijiang.com
'''

import RPi.GPIO as GPIO  ##引入GPIO模块
import time              ##引入time库

CarPin = 18  ##定义小车读取18口信息

GPIO.setmode(GPIO.BCM)
GPIO.setup(CarPin, GPIO.IN, pull_up_down=GPIO.PUD_UP) ##设置为接收模式 同时拉高电阻 减少杂声干扰

#隔一秒读取一次状态  然后判断输出
try:
    while True:
        status = GPIO.input(CarPin)  ##读取数据
        if status == 0:
            print '小车正常';
        elif status == 1:
            print '不好了 小车要翻车了';

        time.sleep(1)

except KeyboardInterrupt:
    pass

GPIO.cleanup()
#实验效果
1、执行Python jiujiang.py;
2、小车正常状态下屏幕显示 “小车正常”;
3、小车发生倾斜时屏幕显示 ”不好了 小车要翻车了“。
4、每隔一秒检测一次状态,可调节时间。
#视频效果如下:

RGB三色LED灯实验

如题顾名思义,R(Red)红色,G(Green)绿色,B(Blue)蓝色。
实验目的,通过程序操作RGB三色,实现不同颜色的展示和切换。
#接线效果如图:
接线示例
#实验代码:

#!/usr/bin/env python
#coding:utf-8

'''
from JiuJiang
树莓酱的操作实例
https:://www.shumeijiang.com
'''

import RPi.GPIO as GPIO
import time

R = 18  ##Red采用18口
G = 19  ##Green采用19口
B = 20  ##Blue采用20口

GPIO.setmode(GPIO.BCM) ##采用BCM编码

#设置输出模式
GPIO.setup(R, GPIO.OUT)
GPIO.setup(G, GPIO.OUT)
GPIO.setup(B, GPIO.OUT)

#实例化PWM
rPwm = GPIO.PWM(R, 50)
gPwm = GPIO.PWM(G, 50)
bPwm = GPIO.PWM(B, 50)

#启动PWM
rPwm.start(0)
gPwm.start(0)
bPwm.start(0)

#接收用户选择
color = raw_input('选择颜色:')
color = color.lower() ##转化为小写

#根据用户选择展示不同的颜色
if color == 'red':
    rPwm.ChangeDutyCycle(100)
    gPwm.ChangeDutyCycle(0)
    bPwm.ChangeDutyCycle(0)
elif color == 'green':
    rPwm.ChangeDutyCycle(0)
    gPwm.ChangeDutyCycle(100)
    bPwm.ChangeDutyCycle(0)
elif color == 'blue':
    rPwm.ChangeDutyCycle(0)
    gPwm.ChangeDutyCycle(0)
    bPwm.ChangeDutyCycle(100)
else:
    print '不支持的颜色'

#点亮持续时间
time.sleep(2)

#点亮结束
rPwm.stop()
gPwm.stop()
bPwm.stop()

#清除端口占用
GPIO.cleanup()
#执行如上代码可见效果为:
1、执行Python jiujiang.py
2、提示输入要选择的颜色;
3、输入如red,可见led灯红色灯亮起,并持续两秒;
4、两秒后灯熄灭,等待下次调用。
#视频效果如下: