0.前言
    树莓派现在越来越火,网上树莓派的资料也越来越多。树莓派的学习可以分为linux系统学习和linux驱动学习,利用树莓派制作LED流水灯应该算是驱动学习吧。树莓派来自国外,国外嵌入式开源领域具备良好的分享精神,树莓派的各种集成库也层出不穷,下面推荐几个。
    python GPIO
    简单介绍:树莓派官方资料中推荐,容易上手。但是需要学习python,需要简单阅读一些python的编程图书或者资料,幸好python也是非常容易学习的。

    wiringPi

    链接网址:
http://wiringpi.com/
    简单介绍:编程的方法兼容arduino,原作者给出了大量的说明和示例代码,功能强大。严格来说使用wiringPi编程使用Processing的语言,该语言由java演化而来。

    BCM2835 C Library

    链接网址: 
http://www.airspayce.com/mikem/bcm2835/
    简单介绍:C Library可以理解为使用C语言实现的底层驱动,包括GPIO、SPI和UART等,使用简单方便同样容易上手。


1.硬件准备
    从淘宝上淘了一下,发现深圳有家店做的很不错,虽然东西有点贵但是品质不做,光有树莓派其实用处也不大,还需要合适的扩展板,下面是扩展板的图片:




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功能等。最后综合以上若干内容和以太网功能做一个好玩的应用。

树莓派学习笔记——GPIO功能学习的更多相关文章

  1. 学习笔记:CentOS7学习之二十五:shell中色彩处理和awk使用技巧

    目录 学习笔记:CentOS7学习之二十五:shell中色彩处理和awk使用技巧 25.1 Shell中的色彩处理 25.2 awk基本应用 25.2.1 概念 25.2.2实例演示 25.3 awk ...

  2. 学习笔记:CentOS7学习之二十四:expect-正则表达式-sed-cut的使用

    目录 学习笔记:CentOS7学习之二十四:expect-正则表达式-sed-cut的使用 24.1 expect实现无交互登录 24.1.1 安装和使用expect 24.2 正则表达式的使用 24 ...

  3. 学习笔记:CentOS7学习之二十三: 跳出循环-shift参数左移-函数的使用

    目录 学习笔记:CentOS7学习之二十三: 跳出循环-shift参数左移-函数的使用 23.1 跳出循环 23.1.1 break和continue 23.2 Shift参数左移指令 23.3 函数 ...

  4. 学习笔记:CentOS7学习之二十:shell脚本的基础

    目录 学习笔记:CentOS7学习之二十:shell脚本的基础 20.1 shell 基本语法 20.1.1 什么是shell? 20.1.2 编程语言分类 20.1.3 什么是shell脚本 20. ...

  5. 学习笔记:CentOS7学习之十七: Linux计划任务与日志的管理

    目录 学习笔记:CentOS7学习之十七: Linux计划任务与日志的管理 17.1 计划任务-at-cron-计划任务使用方法 17.1.1 at计划任务的使用 17.1.2 查看和删除at将要执行 ...

  6. 学习笔记:CentOS7学习之十九:Linux网络管理技术

    目录 学习笔记:CentOS7学习之十九:Linux网络管理技术 本文用于记录学习体会.心得,兼做笔记使用,方便以后复习总结.内容基本完全参考学神教育教材,图片大多取材自学神教育资料,在此非常感谢MK ...

  7. 学习笔记:CentOS7学习之十八:Linux系统启动原理及故障排除

    目录 学习笔记:CentOS7学习之十八:Linux系统启动原理及故障排除 18.1 centos6系统启动过程及相关配置文件 18.1.1 centos6系统启动过程 18.1.2 centos6启 ...

  8. 学习笔记:CentOS7学习之十六:LVM管理和ssm存储管理器使用

    目录 学习笔记:CentOS7学习之十六:LVM管理和ssm存储管理器使用 16.1 LVM的工作原理 16.1.1 LVM常用术语 16.1.2 LVM优点 16.2 创建LVM的基本步骤 16.2 ...

  9. HTML+CSS学习笔记 (6) - 开始学习CSS

    HTML+CSS学习笔记 (6) - 开始学习CSS 认识CSS样式 CSS全称为"层叠样式表 (Cascading Style Sheets)",它主要是用于定义HTML内容在浏 ...

随机推荐

  1. 设置iframe 载入页面的效果跟直接打开这个页面一样

    <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xht ...

  2. 堆管理之malloc和free分析

    在win7 64环境下分析 1.malloc代码 int main(){ void *p = malloc(0xa8); memset(p, 'a', 0xa8); free(p); return 0 ...

  3. CSU 2151 集训难度【多标记线段树】

    http://acm.csu.edu.cn/csuoj/problemset/problem?pid=2151 Input 第一行三个数n,m,v0 表示有n名萌新和m次调整,初始时全部萌新的集训难度 ...

  4. 洛谷——P1529 回家 Bessie Come Home

    P1529 回家 Bessie Come Home 题目描述 现在是晚餐时间,而母牛们在外面分散的牧场中. 农民约翰按响了电铃,所以她们开始向谷仓走去. 你的工作是要指出哪只母牛会最先到达谷仓(在给出 ...

  5. 洛谷——P2126 Mzc家中的男家丁

    P2126 Mzc家中的男家丁 题目背景 mzc与djn的…还没有众人皆知,所以我们要来宣传一下. 题目描述 mzc家很有钱(开玩笑),他家有n个男家丁,现在mzc要将她们全都聚集起来(干什么就不知道 ...

  6. 洛谷——P2384 最短路

    P2384 最短路 题目背景 狗哥做烂了最短路,突然机智的考了Bosh一道,没想到把Bosh考住了...你能帮Bosh解决吗? 他会给你10000000000000000000000000000000 ...

  7. Xamarin Android项目真机测试闪退

    Xamarin Android项目真机测试闪退 项目在模拟器中运行正常,但在真机上闪退.这是由于项目设置使用共享的Mono运行时.Visual Studio中,在项目属性-Android Option ...

  8. 关于网络流sap算法

    今天终于学习了网络流..之前一直很怕这类问题,个人觉得网络流算是图论里面最难的了.... sap学习下来感觉一般,关于解法都是意识流,细节也是蛮多的.. 我这里先贴一份模版,自已也加了点注释(只是个人 ...

  9. Spring AOP动态代理

    出现org.springframework.aop.framework.ProxyFactoryBean cannot be cast to 错误 在类型转换的时候, 调用getObject()方法, ...

  10. poj 1654:Area 区域 ---- 叉积(求多边形面积)

    Area   Time Limit: 1000MS   Memory Limit: 10000K Total Submissions: 19398   Accepted: 5311 利用叉积求多边形面 ...