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. LOJ #6281. 数列分块入门 5-分块(区间开方、区间求和)

    #6281. 数列分块入门 5 内存限制:256 MiB时间限制:500 ms标准输入输出 题目类型:传统评测方式:文本比较 上传者: hzwer 提交提交记录统计测试数据讨论 5   题目描述 给出 ...

  2. Codeforces 1104 D. Game with modulo-交互题-二分-woshizhizhang(Codeforces Round #534 (Div. 2))

    D. Game with modulo time limit per test 1 second memory limit per test 256 megabytes input standard ...

  3. 用谷歌浏览器Chrome浏览jQuery Mobile页面需要配置Tomcat服务器

    在浏览jQuery Mobile 页面中,除了 Chrome浏览器出错外,其他的浏览器都ok: 这里,是因为需要单独配置 Tomcat 服务: 1.先配置java jdk: 2.下载,安装,配置,To ...

  4. 基于SAAJ的客户端

    概述 SAAJ - SOAP with Attachments API for JAVA 结构图如下: 正文 1. 如何获取soap请求的关键参数 关键的参数有四个: xmlns - xml命名空间如 ...

  5. 【JavaScript】JS将Java的Timestamp转为Date类型

    遇到一个小需求,由于要填充日期插件里的数据,前台要把java后台传来的Date类型的数据转成YYYY-MM-DD格式的时间数据.通过json传输,Java的Date类型的数据自动转成了时间戳,例如 “ ...

  6. Xamarin XAML语言教程模板视图TemplatedView(二)

    Xamarin XAML语言教程模板视图TemplatedView(二) (2)打开MainPage.xaml文件,编写代码,将构建的控件模板应用于中TemplatedView.代码如下: <? ...

  7. 函数的扩展--ES6

    箭头函数 由于大括号被解释为代码块,所以如果箭头函数直接返回一个对象,必须在对象外面加上括号. var f = () => ({a:1}); f(); // 返回 {a: 1} 若写成: var ...

  8. 【最短路】NOIP模拟赛 虫洞

    虫洞 [题目描述] N个虫洞,M条单向跃迁路径.从一个虫洞沿跃迁路径到另一个虫洞需要消耗一定量的燃料和1单位时间.虫洞有白洞和黑洞之分.设一条跃迁路径两端的虫洞质量差为delta. 1. 从白洞跃迁到 ...

  9. 【位运算】【BFS】移动玩具

    1054: [HAOI2008]移动玩具 Time Limit: 10 Sec  Memory Limit: 162 MBSubmit: 2246  Solved: 1246[Submit][Stat ...

  10. 【搜索】【约数个数定理】[HAOI2007]反素数ant

    对于任何正整数x,其约数的个数记作g(x).例如g(1)=1.g(6)=4.如果某个正整数x满足:g(x)>g(i) 0<i<x,则称x为反质数. 所以,n以内的反质数即为不超过n的 ...