37种传感器-树莓派开发-3-继电器

C语言编程

宏定义 wiringPi中的 0 引脚,对应GPIO17,由于继电器采用的只是小的电压压降控制,所以本次不需要PWM控制,只需要定义引脚为输出,再利用高低输出的无限循环就可以实现实现。
PS:pinMode 函数
原型为: void pinMode(int pin, int mode);
digitalWrite 函数
原型为: void digitalWrite(int pin, int value);
使用该函数可以向指定的管脚写入 HIGH(高)或者LOW(低),写入前,需要将管脚讴置为输出模式。
wiringPi 将任何的非 0 值作为 HIGH(高)来对待,因此,0 是唯一能够代表 LOW(低)的数值。

#include <wiringPi.h>
#include <stdio.h>

#define RelayPin      0

int main(void)
{
	if(wiringPiSetup() == -1){ //when initialize wiring failed,print messageto screen
		printf("setup wiringPi failed !");
		return 1; 
	}
//	printf("linker LedPin : GPIO %d(wiringPi pin)\n",VoicePin); //when initialize wiring successfully,print message to screen
	
	pinMode(RelayPin, OUTPUT);

	while(1){
			digitalWrite(RelayPin, LOW);			
			delay(1000);
			digitalWrite(RelayPin, HIGH);
			delay(1000);
	}

	return 0;
}

Python 编程

#!/usr/bin/env python
import RPi.GPIO as GPIO
import time

RelayPin = 11    # pin11

def setup():
	GPIO.setmode(GPIO.BOARD)       # Numbers GPIOs by physical location
	GPIO.setup(RelayPin, GPIO.OUT)
	GPIO.output(RelayPin, GPIO.HIGH)

def loop():
	while True:
		print '...relayd on'
		GPIO.output(RelayPin, GPIO.LOW)
		time.sleep(0.5)
		print 'relay off...'
		GPIO.output(RelayPin, GPIO.HIGH)
		time.sleep(0.5)

def destroy():
	GPIO.output(RelayPin, GPIO.HIGH)
	GPIO.cleanup()                     # Release resource

if __name__ == '__main__':     # Program start from here
	setup()
	try:
		loop()
	except KeyboardInterrupt:  # When 'Ctrl+C' is pressed, the child program destroy() will be  executed.
		destroy()

PS:GPIO.setmode(GPIO.BOARD)
GPIO.setmode(GPIO.BOARD)RPi.GPIO中,同时支持树莓派上的两种GPIO引脚编号。第一种编号是BOARD编号,这和树莓派电路板上的物理引脚编号相对应。不用担心因为版本的更改而导致引脚调用要重新更改。
另外一种调用方式是GPIO.setmode(GPIO.BCM),面向的是更底层的工作方式,使用起来会比较困难。

PS:还要说的就是GPIO.cleanup()
GPIO.cleanup() 是用来释放资源的,可以及时的释放树莓派中的引脚,避免树莓派损坏。

发布了5 篇原创文章 · 获赞 5 · 访问量 123

猜你喜欢

转载自blog.csdn.net/qq_44752226/article/details/104576151
今日推荐