C'est La Vie

    人生无彩排,每一天都是现场直播!

    Respberry Pi的GPIO针脚说明以及其电平操作

    可以通过树莓派自带的GPIO针脚控制诸如继电器或是其它控制器,来实现基础的“物联网”,来达到控制家中电器的目的 […]

    可以通过树莓派自带的GPIO针脚控制诸如继电器或是其它控制器,来实现基础的“物联网”,来达到控制家中电器的目的。

    关于GPIO针脚的说明介绍如下图:

    从树莓派官方下载回来的Respbian自带的python环境中,内置了RPi.GPIO包,是对树莓派的GPIO针脚的操作库。

    对其进行二次封装,简化了控制针脚电平的功能操作。

    代码 GPIO.py :

    #!/usr/bin/env python
    #coding=utf-8
    
    import RPi.GPIO
    
    RPi.GPIO.setwarnings(False)
    RPi.GPIO.setmode(RPi.GPIO.BOARD)
    
    class GPIO:
    
    	OUT = RPi.GPIO.OUT
    	IN = RPi.GPIO.IN
    
    	LOW = RPi.GPIO.LOW
    	HIGH = RPi.GPIO.HIGH
    
    	def set_high(self, G_PORT):
    		try:
    			RPi.GPIO.setup(G_PORT, self.OUT)
    			if RPi.GPIO.input(G_PORT) == self.LOW:
    				RPi.GPIO.output(G_PORT, self.HIGH)
    			state = RPi.GPIO.input(G_PORT)
    			RPi.GPIO.cleanup()
    
    			return True, state
    		except:
    			return False, -1
    
    	def set_low(self, G_PORT):
    		try:
    			RPi.GPIO.setup(G_PORT, self.OUT)
    			if RPi.GPIO.input(G_PORT) == self.HIGH:
    				RPi.GPIO.output(G_PORT, self.LOW)
    				RPi.GPIO.setup(G_PORT, self.IN)
    			state = RPi.GPIO.input(G_PORT)
    			RPi.GPIO.cleanup()
    
    			return True, state
    		except:
    			return False, -1
    
    	def trigger(self, G_PORT):
    		try:
    			RPi.GPIO.setup(G_PORT, self.OUT)
    			if RPi.GPIO.input(G_PORT) == self.LOW:
    				result, state = self.set_high(G_PORT)
    			else:
    				result, state = self.set_low(G_PORT)
    			RPi.GPIO.cleanup()
    
    			return result, state
    		except:
    			return False, -1
    
    	def get_state(self, G_PORT):
    		try:
    			RPi.GPIO.setup(G_PORT, self.OUT)
    			state = RPi.GPIO.input(G_PORT)
    			RPi.GPIO.cleanup()
    
    			return True, state
    		except:
    			return False, -1
    
    if __name__ == '__main__':
    	gpio = GPIO()
    
    	# 设置高电平
    	gpio.set_high(7)
    
    	# 设置低电平
    	gpio.set_low(7)
    
    	# 切换高低电平
    	gpio.trigger(7)
    
    	# 获取针脚当前电平状态
    	gpio.get_state(7)
    

    发表回复

    您的电子邮箱地址不会被公开。 必填项已用*标注