树莓派上使用C语言和Python控制继电器和LED灯

   本实验就是使用C语言和Python来控制GPIO的高低电平即可,然后再通过接线来控制继电器和LED灯。

1、接线图

    V是正极5V,G是负极,S是信号线(GPIO口)。

树莓派上使用C语言和Python控制继电器和LED灯_第1张图片

2、wiringPi库代码程序:

#include

#include

#include

#define relay 29

int main(void)

{

  if(wiringPiSetup()==-1)

   {

    printf("setup wiringPi failed !");

    return 1;

   }

  pinMode(relay,OUTPUT);

  while(1)

   {

            digitalWrite(relay,HIGH);

            delay(1000);

            digitalWrite(relay,LOW);

            delay(1000);

   }

}

python代码 relay.py:(注意要安装rpi.gpio库,sudo apt-get install python3-rpi.gpio)

import RPi.GPIO as GPIO

import time

GPIO.setmode(GPIO.BOARD)

GPIO.setup(40, GPIO.OUT)

while True:

        GPIO.output(40, True)

        time.sleep(1)

        GPIO.output(40, False)

        time.sleep(1)


3、C语言编译生成relay程序

    gcc relay.c -o relay -lwiringPi  #编译C语言

    ./relay   #运行程序


  python程序运行sudo python relay.py

    需要注意的是两个程序的接口编号是不一样的,C语言时wiringpi编码,python是board编码,pyhon也可以设置为BCM编码:GPIO.setmode(GPIO.BCM)。编码不同,那么编号就不一样,就需要参考上面的引脚对照表来设置。

接上继电器模块或 LED灯模块,就可以循环控制了。

4、实际效果图

5、继电器模块原理

    DO是信号线,在信号线导通时高电平(3.3v),断开时输出低电平(0v)。高电平时,DO通过1K电阻形成信号,三极管NPN的C E极导通,那么继电器线圈就可以通电5V,继电器就可以工作了,输出NC NO触点。

6、LED模块原理

    TRIG是S信号线,在信号线导通时高电平(3.3v),LED灯电压低不亮,低电平时亮。

树莓派上使用C语言和Python控制继电器和LED灯_第2张图片

7、直接在GPIO和GND上接入小的led灯,利用gpio输出的高电平来供电闪烁。程序还是和上面的一样。

你可能感兴趣的:(树莓派上使用C语言和Python控制继电器和LED灯)