raspberry GPIO控制第一步

时间:2021-08-23 19:31:08

今天再来更新。

首先我假定你的pi已经安装好了,可以联网获取数据,并且可以ssh。链接之。


GPIO,通用输入输出接口。说白了,就是可以通过芯片控制拉高拉低的引脚或者可以接收外部信号的引脚。

我们用它来做什么呢?闪个灯吧,这似乎是所有控制的入门。


第一步,我们需要下载raspberry芯片的GPIO控制库。默认的,博通不开放芯片手册,我也没钱去买,所以用人家封装好的接口吧。

幸好,有人封装好了,那就用吧。bcm2835芯片可用引脚的GPIO库在这里:

http://www.airspayce.com/mikem/bcm2835/ 

最好认真读一下网页,了解以下基本的信息。

好了,我获取到了我需要的信息,该库的最新版本为1.25。


ssh终端下输入:

wget http://www.open.com.au/mikem/bcm2835/bcm2835-1.25.tar.gz
完成后输入以下命令:

 tar zxvf bcm2835-1.xx.tar.gz
 cd bcm2835-1.xx
 ./configure
 make
 sudo make check
 sudo make install
OK,安装陈功。

第二步:控制一个引脚

(这段代码是网上找来的,还没细细研究)

#include <bcm2835.h>

#define LEDA_PIN RPI_GPIO_P1_16        /* LED灯A使用P1上的16引脚 */
#define LEDB_PIN RPI_GPIO_P1_18        /* LED灯A使用P1上的18引脚 */

int main(int argc, char **argv)
{
        if (!bcm2835_init())
                return 1;

        /* 初始化GPIO端口 */
        bcm2835_gpio_fsel(LEDA_PIN, BCM2835_GPIO_FSEL_OUTP);//初始化LEDA为输出模式
        bcm2835_gpio_write(LEDA_PIN, LOW);//拉低
        bcm2835_gpio_fsel(LEDB_PIN, BCM2835_GPIO_FSEL_OUTP);//初始化LEDB为输出模式
        bcm2835_gpio_write(LEDB_PIN, LOW);//拉低

        while (1) {
                bcm2835_gpio_write(LEDA_PIN, HIGH);//LEDA点亮
                bcm2835_gpio_write(LEDB_PIN, LOW); //LEDB灭掉

                bcm2835_delay(250);//延迟

                bcm2835_gpio_write(LEDA_PIN, LOW); //LEDA灭掉
                bcm2835_gpio_write(LEDB_PIN, HIGH);//LEDB点亮

                bcm2835_delay(250);
        }

        return 0;
}
保存为led.c,传到我的pi上。

编译:

gcc led.c -l rt  -l bcm2835 -o led

运行:

sudo ./led

看到灯闪烁了吧?!


注:需要挂两个LED灯,引脚分别为PIN16,PIN18.数引脚的方法如下:

raspberry GPIO控制第一步

参考文章:http://www.eeboard.com/bbs/thread-6791-1-1.html

http://elinux.org/RPi_Low-level_peripherals

http://www.airspayce.com/mikem/bcm2835/index.html