11回答

8收藏

[教程] 喜欢c语言的同学,控制gpio

 

Raspberry Pi Raspberry Pi 15296 人阅读 | 11 人回复 | 2013-01-18

本帖最后由 其实不懂贴 于 2013-1-18 12:37 编辑

说到折腾 RPi ,  每个粉丝都有自己的玩法.  只要想象力够丰富, 能折腾出的花样真的太多了.  其中一种折腾方式就是通过 RPi 的 GPIO 接口去控制一些小玩意, 甚至可以用来 DIY 机器人.  说到控制 RPi 的 GPIO 接口 , 大家最熟悉的应该是 RPi.GPIO 库了.  因为这是官方提供的库,  而且树莓派杂志上的相关教程里都用的是这套库.   但除了 RPi.GPIO 库之外,  有一些第三方库也非常好用,  比如 WiringPi .  这是一款模仿 Arduino Wiring 风格的函数库, 使用起来非常简单.

WiringPi 的特色:

模仿 Arduino Wiring 风格, 熟悉 Arduino 编程的人直接就会用;
可以操作 RPi 上全部 17 根 GPIO 针脚  ( I2C SPI UART 针脚也可以作为 GPIO 使用) ;
支持通过操作 /proc/mem 或 /sys/class/gpio 两种方式来控制 GPIO (前者也是 RPi.GPIO 库的方式,  后者提供了一个不需要 root 权限的方案);
支持 C/C++ , Ruby, Python, Perl, Java, TCL等多种语言编程, 不局限于 Python .

另外,它还提供了附加的功能函数,包括:
shiftIn/shiftOut 库,
串口处理库(同时支持板载串口和USB转接的串口),
LCD 库,
简单的线程编程和进程优先级控制库 .

WiringPi 还完全支持 PiFace 扩展板.

更多的细节可以参考 WiringPi 的主页: https://projects.drogon.net/raspberry-pi/wiringpi/

下载和安装:

安装git-core
sudo apt-get install git-core

下载winringPi库
git clone git://git.drogon.net/wiringPi


编译和安装库
cd wiringPi
./build
  1. 写了一段简单的测试代码:
  2. /********** test.c ***************/
  3. #include <wiringPi.h>
  4. #include <stdlib.h>

  5. int main()
  6. {
  7.     int i;

  8.     if( wiringPiSetup() == -1 )
  9.         exit( 1 );

  10.     pinMode( 0, OUTPUT );
  11.     pinMode( 1, OUTPUT );
  12.     pinMode( 2, OUTPUT );
  13.     pinMode( 3, OUTPUT );

  14.     for(i = 0; i < 40; i++)
  15.     {
  16.         digitalWrite( i % 4, HIGH );
  17.         delay( 200 );
  18.         digitalWrite( i % 4, LOW );
  19.         delay( 200 );
  20.     }

  21.     return 0;
  22. }
  23. /********** test.c ***************/

  24. 编译&执行:
  25. cc -o test test.c -L/usr/local/lib -lwiringPi
  26. sudo ./test
复制代码

英文好的同学自己看看,基本上https://projects.drogon.net/raspberry-pi/wiringpi/把要用的写完了。我本来想翻译的,无奈自己的开发水平不行。有的名词不知道如何解释,所以大家自己进去看看。不会很难。
转载自http://bigbosshu.com/2012/08/162.html
分享到:
回复

使用道具 举报

回答|共 11 个

倒序浏览

沙发

liuyu-419812

发表于 2013-1-18 12:48:41 | 只看该作者

好呀,顶一个
板凳

bw57899

发表于 2013-1-18 14:41:30 | 只看该作者

void pinMode (int pin, int mode) ;
This sets the mode of a pin to either INPUT, OUTPUT, or PWM_OUTPUT. Note that only wiringPi pin 1 (BCM_GPIO 18) supports PWM output. The pin number is the number obtained from the pins table.

This function has no effect when in Sys mode.

void digitalWrite (int pin, int value) ;
Writes the value HIGH or LOW (1 or 0) to the given pin which must have been previously set as an output.

void delay (unsigned int howLong)
This causes program execution to pause for at least howLong milliseconds. Due to the multi-tasking nature of Linux it could be longer. Note that the maximum delay is an unsigned 32-bit integer or approximately 49 days.
地板

其实不懂贴

发表于 2013-1-19 18:22:37 | 只看该作者

powerdruy 发表于 2013-1-18 21:14
这就是ARDUINO的函数命名规范,使用起来很容易

是啊,那个上面就是这么说的。由于我没有玩过arduino,就不是很清楚
5#

其实不懂贴

发表于 2013-1-19 18:23:46 | 只看该作者

powerdruy 发表于 2013-1-18 21:28
我嘞个去啊,突然发现有这个东西了之后不是可以用树莓搞开发了么,连GPIO和各种接口都有了,这不是就是个开发 ...

哈哈,是啊!这个真的可以研究研究.
6#

铮铮卡穆

发表于 2013-1-19 21:23:50 | 只看该作者

powerdruy 发表于 2013-1-18 21:28
我嘞个去啊,突然发现有这个东西了之后不是可以用树莓搞开发了么,连GPIO和各种接口都有了,这不是就是个开发 ...

本来就是开发板啊~~~
7#

baiyunh0

发表于 2013-4-11 16:27:45 | 只看该作者

为什么我的安装完~不能运行~运行gpio~没有反应呀

WQGPR0Y{LQGD9TY938W0VDD.jpg (12.82 KB, 下载次数: 232)

WQGPR0Y{LQGD9TY938W0VDD.jpg
8#

a20084666

发表于 2013-7-12 21:59:30 | 只看该作者

好东西的  哈哈
9#

a20084666

发表于 2013-7-12 22:58:41 | 只看该作者

再来顶一下帖子
10#

genime

发表于 2013-8-20 00:31:40 | 只看该作者

这个真心好,还是C亲切
您需要登录后才可以回帖 注册/登录

本版积分规则

关闭

站长推荐上一条 /3 下一条