0.前言
树莓派现在越来越火,网上树莓派的资料也越来越多。
更多树莓派学习笔记请参考——【
树莓派学习笔记——索引博文】
树莓派来自国外,国外嵌入式开源领域具有良好的分享精神,树莓派各种集成库也层出不穷,下面推荐几个。
(该库更确切的名称应为raspberry-gpio-python)
简单介绍:树莓派官方资料中推荐容易上手。python GPIO是一个小型的python库,可以帮助用户完成raspberry相关IO口操作。但是python GPIO库还没有支持SPI、I2C或者1-wire等总线接口,这些总线接口的开发会在未来开发。
简单介绍:编程的方法兼容arduino,作者给出了大量的说明和示例代码,功能强大。
简单介绍:C Library可以理解为使用C语言实现的底层驱动,包括GPIO、SPI和UART等,使用简单方便同样容易上手。
1.硬件准备
从淘宝上淘了一下,发现深圳有家店做的很不错,虽然东西有点贵但是品质上乘。光有树莓派其实用途有限,还需要合适的扩展板,下面是扩展板的图片:
2.程序实现
2.1 Python
RPi.GPIO安装
a.安装python-dev
sudo aptitude install python-dev
b.安装RPi.GPIO
# 下载
$ wget http://raspberry-gpio-python.googlecode.com/files/RPi.GPIO-0.5.3a.tar.gz
# 解压缩
$ tar xvzf RPi.GPIO-0.5.3a.tar.gz
# 进入解压之后的目录
$ cd RPi.GPIO-0.5.3a
# 启动安装
$ sudo python setup.py install
新建名为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
#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
BCM2835 C Library 安装
# 下载
$ wget http://www.airspayce.com/mikem/bcm2835/bcm2835-1.35.tar.gz
# 解压缩
$ tar xvzf bcm2835-1.35.tar.gz
# 进入解压之后的目录
$ cd bcm2835-1.35
# 配置
./configure
# 从源代码生成安装包
make
# 执行检查
sudo make check
# 安装 bcm2835库
sudo make install
新建一个名为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 -lbcm2835
最后执行该程序,输入以下指令
sudo ./blink
之后程序便会运行,运行的效果和前面两个效果相似,只是LED闪烁的时间略有不同。如果深入以上各种函数库,本质上依然是操作bcm2835的相关寄存器。
3.未来想法
实践GPIO输入功能,实践SPI功能,实践I2C功能等。最后综合以上若干内容和以太网功能做一个好玩的应用。
4.树莓派博文链接
分享到:
相关推荐
树莓派学习笔记——wiringPi GPIO使用详解.docx GPIO使用详解
树莓派Qt开发入门(二):超声波测距实验——GPIO的读写操作+多线程编程
树莓派-通过Web控制GPIO针脚输出高低电平(改进版) http://blog.csdn.net/a497785609/article/details/78060029
超经典的STM32学习笔记——第一章GPIO口.docx
本例程演示如何操作GPIO输入和输出。通过检测USER1、USER2按键的状态,点亮不同的LED,同时输出键值到串口1。
STM32学习记录——2.GPIO输入—按键检测 使能 GPIO端口时钟; 初始化 GPIO目标引脚为输入模式(引脚默认电平受按键电路影响,浮空/上拉/下拉均没有区别); 编写简单测试程序,检测按键的状态,实现按键控制 LED灯...
Raspberry Pi B+ IO Connectors Schematic
昨天在网上看到一个老外用树莓派web控制GPIO的视频,刨根问底终于找到了源码的出处,今天写个教程给大家,方便大家使用,这里也要感谢这位叫trouch的原作者,本来想修改修改的,后来觉得还是保持原汁原味吧,这个...
树莓派GPIO测试程序 ,树莓派GPIO控制LED亮灭程序。使用之前需安装GPIOpython库。
STM8-库函学习笔记之GPIO相关的函数: 1 void GPIO_DeInit(GPIO_TypeDef* GPIOx); 2 void GPIO_Init(GPIO_TypeDef* GPIOx, GPIO_Pin_TypeDef GPIO_Pin, GPIO_Mode_TypeDef GPIO_Mode); 3 void GPIO_Write(GPIO_...
ZYNQ__GPIO操作,控制GPIO,点亮LED灯,FPGA开发基础
MTK 驱动 GPIO ,中断,背光,PWM,BT,FM,LCD,Camera等
树莓派WiringPi库
Simlink生成dsp(28377d)程序,其中主要包括GPIO输入模块、GPIO输出模块、GPIO输入配合外部中断程序编写。记得配合博文使用啊!
树莓派 Python GPIO包
树莓派 RPi.GPIO-0.4.1a.tar.gz 挺好用的,谷歌code真的不能下
自己写的以操作寄存器的方式驱动树莓派3b GPIO的程序,使用之前请sudo apt-get install raspberrypi-kernel-headers 安装树莓派内核头文件,安装完成之后解压zip然后cd到解压目录中make,然后安装对应的.ko文件然后...
树莓派gpio4测试程序,复制到pi目录中,然后运行终端,输入python gpio4blink.py,就可以看到gpio4口led闪烁,前提gpio4口接了一个led
树莓派Linux系统下利用GPIO控制数码管的代码