树莓派GPIO功能学习

[ 复制链接 ]
admin | 2020-2-8 05:29:12 | 显示全部楼层 | 阅读模式 打印 上一主题 下一主题

马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。

您需要 登录 才可以下载或查看,没有帐号?立即注册

x


前言
树莓派现在越来越火,网上树莓派的资料也越来越多。树莓派的学习可以分为linux系统学习和linux驱动学习,利用树莓派制作LED流水灯应该算是驱动学习吧。树莓派来自国外,国外嵌入式开源领域具备良好的分享精神,树莓派的各种集成库也层出不穷,下面推荐几个。
python GPIO
链接网址: https://code.google.com/p/raspberry-gpio-python/
简单介绍:树莓派官方资料中推荐,容易上手。但是需要学习python,需要简单阅读一些python的编程图书或者资料,幸好python也是非常容易学习的。
wiringPi
链接网址: http://wiringpi.com/
简单介绍:编程的方法兼容arduino,原作者给出了大量的说明和示例代码,功能强大。严格来说使用wiringPi编程使用Processing的语言,该语言由java演化而来。
BCM2835 C Library
链接网址:  http://www.airspayce.com/mikem/bcm2835/(www.yun-ling.cn)
简单介绍:C Library可以理解为使用C语言实现的底层驱动,包括GPIO、SPI和UART等,使用简单方便同样容易上手。
1.硬件准备
从淘宝上淘了一下,发现深圳有家店做的很不错,虽然东西有点贵但是品质不做,光有树莓派其实用处也不大,还需要合适的扩展板,下面是扩展板的图片:

树莓派GPIO功能学习

树莓派GPIO功能学习

树莓派GPIO功能学习

树莓派GPIO功能学习


2.程序实现
2.1 Python
新建一个名为led.py的程序,程序的具体内容如下:

#!/usr/bin/env python
# -*- coding: utf-8 -*-
import RPi.GPIO as GPIO
import time
GPIO.setmode(GPIO.BOARD)
# need to set up every channel which are using as an input or an output
GPIO.setup(11, GPIO.OUT)
while True:
    GPIO.output(11, GPIO.HIGH)
    time.sleep(1)
    GPIO.output(11, GPIO.LOW)
    time.sleep(1)
使用cd命令进入文件所在目录,然后输入指令
sudo python led.py
使用这种方法实现LED闪烁的最容易的方法,网上的教程也非常多,是入门树莓派的好方法。
2.2 wiringPi
新建一个名为blink.c的程序,程序内容如下

#include <wiringPi.h>
main ()
{
  wiringPiSetup () ;
  pinMode (0, OUTPUT) ;
  for (;;)
  {
    digitalWrite (0, HIGH) ; delay (500) ;
    digitalWrite (0,  LOW) ; delay (500) ;
  }
}
使用cd命令进入所在文件目录,然后输入以下命令生成可执行文件blink
gcc -Wall -o blink blink.c -lwiringPi
最后输入以下命令执行程序
sudo ./blink
之后程序便会运行,使用ctrl+c可以结束程序,这里会有一点小问题由于程序停止的时间未知,所有LED可能为点亮状态也可能会熄灭状态。和python的程序相比,GPIO的端口号似乎发生了变化,但是实际上为同一个IO,只是IO的编辑顺序略有不同。
2.3 BCM2835 C Library
新建一个名为blink.c的程序,程序的具体内容如下

#include <bcm2835.h>
// Blinks on RPi Plug P1 pin 11 (which is GPIO pin 17)
#define PIN RPI_GPIO_P1_11
int main(int argc, char **argv)
{
  if (!bcm2835_init())
  return 1;
  // Set the pin to be an output
  bcm2835_gpio_fsel(PIN, BCM2835_GPIO_FSEL_OUTP);
  // Blink
  while (1)
  {
    bcm2835_gpio_write(PIN, HIGH);
    bcm2835_delay(100);
    bcm2835_gpio_write(PIN, LOW);
    bcm2835_delay(100);
  }
  bcm2835_close();
  return 0;
}
使用cd指令进入文件所在目录,然后输入以下命令生成可执行文件
gcc -o blink blink.c -l bcm2835
最后执行该程序,输入以下指令
sudo ./blink
之后程序便会运行,运行的效果和前面两个效果相似,只是LED闪烁的时间略有不同。如果深入以上各种函数库,本质上依然是操作bcm2835的相关寄存器。
3.未来技术
实践GPIO输入功能,实践SPI功能,实践I2C功能等。最后综合以上若干内容和以太网功能做一个好玩的应用。

       
温馨提示:
1、在论坛里发表的文章仅代表作者本人的观点,与本网站立场无关。
2、论坛的所有内容都不保证其准确性,有效性,时间性。阅读本站内容因误导等因素而造成的损失本站不承担连带责任。
3、当政府机关依照法定程序要求披露信息时,论坛均得免责。
4、若因线路及非本站所能控制范围的故障导致暂停服务期间造成的一切不便与损失,论坛不负任何责任。
5、注册会员通过任何手段和方法针对论坛进行破坏,我们有权对其行为作出处理。并保留进一步追究其责任的权利。
回复 推荐到N格

使用道具 举报

大神点评(1)

您需要登录后才可以回帖 登录 | 立即注册
    云凌阁
    平阴人在外地 | 2020-6-4 08:27:18 | 显示全部楼层
    正需要,支持云凌阁!
    回复 支持 反对

    使用道具 举报

    相关推荐
    云凌阁

    关注1

    粉丝0

    帖子94526

    发布主题