GPIO之初始化高电平或低电平

GPIO之初始化高电平或低电平

#实验背景:当我们做传感器实验时,经常会有个疑虑,当传感器被触发或者被获取之前,那么程序的电压状态是高电平还是低电平呢;这块其实程序处于一个float状态,也就是悬浮可变状态,它会很容易受到其他因素的干扰,从而导致出现获取到意外的数值。因此就需要在程序开始之时,初始化对应的针脚的电压状态。

【GPIO.IN】


设置示例
可见通过:
1、GPIO.setup(channel, GPIO.IN, pull_up_down=GPIO.PUD_UP) #拉高电压
2、GPIO.setup(channel, GPIO.IN, pull_up_down=GPIO.PUD_DOWN)#拉低电压

        执行代码可见,当pull_up_down=GPIO.PUD_UP时,输出高电平1;当GPIO.setup(channel, GPIO.IN, pull_up_down=GPIO.PUD_DOWN)时,输出低电平0。


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

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

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

detectPin = 18

GPIO.setmode(GPIO.BCM)   ##此处采用的BCM编码 因为T型扩展板也是BCM编码 方便统一

#GPIO.setup(detectPin, GPIO.IN, pull_up_down=GPIO.PUD_UP)  ##拉高电压
GPIO.setup(detectPin, GPIO.IN, pull_up_down=GPIO.PUD_DOWN) ##拉点电压

print GPIO.input(detectPin)

GPIO.cleanup()

【GPIO.OUT】


设置示例
可见通过:
1、GPIO.output(detectPin, GPIO.LOW) ##初始化低电平
2、GPIO.output(detectPin, GPIO.HIGH) ##初始化高电平

        执行代码可见,当GPIO.LOW时输出低电平0;当GPIO.HIGH时输出高电平1;


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

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

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

detectPin = 18

GPIO.setmode(GPIO.BCM)   ##此处采用的BCM编码 因为T型扩展板也是BCM编码 方便统一
GPIO.setup(detectPin, GPIO.OUT) ##设置为输出模式

GPIO.output(detectPin, GPIO.LOW)  ##设置默认输出低电平
#GPIO.output(detectPin, GPIO.HIGH)  ##设置默认输出高电平

print GPIO.input(detectPin)

GPIO.cleanup()
jiujiang

2条评论

njbinbin 发布于下午10:57 - 2020年9月30日

我更关心机器上电启动时GPIO口的默认状态,这个时候你的代码还没机会执行,如果外连模块,肯定会受到影响。

    jiujiang 发布于上午9:13 - 2021年7月30日

    没有默认状态 正因为不确定 所以需要代码执行前初始化到预期状态;
    可参考 https://sourceforge.net/p/raspberry-gpio-python/wiki/Inputs/ 的如下部分:
    详细解释

    可见在传感器未触发前,它的状态是’float’、’undefined’。

评论已关闭。

评论已关闭。