博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
[转]树莓派gpio口控制
阅读量:4653 次
发布时间:2019-06-09

本文共 1948 字,大约阅读时间需要 6 分钟。

0.前言
    树莓派现在越来越火,网上树莓派的资料也越来越多。树莓派源自英国,国外嵌入式开源领域具有良好的分享精神,树莓派各种集成库也层出不穷,下面推荐几个。
    【
 
    
    【相关博文】
    【树莓派】——在开始所有的实验之前,你需要一块完整的树莓派。
    【IO扩展板】——可以通过淘宝购买IO扩展板,或者购买万用板和杜邦线自行制作IO扩展板。
图1 树莓派扩展板——图片来自 天猫 大菠萝数码专营店
 
图2 运行效果图

2.注意事项

  【编号方式】

图3 GPIO编号方式——该图片来自wiringPi说明文档
    树莓派的软件扩展库虽然很多,但也导致了扩展库“碎片化”的问题,例如操作树莓派的GPIO端口,GPIO的编号便存在三种不同的方式
 
   编号侧重P1插座侧,从上到下,从左到右。正如图3的Header一栏。
    编号    【3】wiringPi编号方式
    编号 侧重实现逻辑,把扩展GPIO端口从0开始编号,这种编号方便编程。正如图3 WiringPi一栏。
    【举例说明】
    插座编号方式 11 -> BCM2835编号方式 17 -> wiringPi编号方式 GPIO0。无论如何它都是同一个IO管脚。
 
    
    【1】直接在树莓派中编写
    树莓派中有几款代码(文本)编辑软件,可以在树莓派中编写代码。
    【2】在windows中编写
    可以在windows中编写代码,如果是Python脚本可通过FTP软件传输到树莓派中,然后使用SSH客户端登录到树莓派中执行Python脚本。如 果是C语言文件,除了使用FTP传输之外还需要在树莓派上编译才可以生成可执行文件(相当于windows上的exe文件)。相关软件操作请参考【
2 Python GPIO实现
        【1】先安装python-dev,输入以下指令。
sudo apt-get install python-dev
        【2】安装RPi.GPIO,依次输入以下指令。特别说明,由于RPi.GPIO仍处于不断完善的过程中,请参考前言中的链接下载最新的安装代码。
# 下载 

$ wget 
# 解压缩 
# 进入解压之后的目录 
# 启动安装 
    新建一个名为led.py的文件,该文件具体内容如下:
  • import RPi.GPIO as GPIO  
  • import time  
  • # BOARD编号方式,基于插座引脚编号  
  • GPIO.setmode(GPIO.BOARD)  
  • # 输出模式  
  • GPIO.setup(11, GPIO.OUT)  
  •   
  • while True:  
  •     GPIO.output(11, GPIO.HIGH)  
  •     time.sleep(1)  
  •     GPIO.output(11, GPIO.LOW)  
  •     time.sleep(1)  
    如果在windows上编写代码,请使用FTP软件下载到树莓派中,使用SSH客户端登陆树莓派,cd命令进入文件所在目录,然后输入指令
    sudo python led.py
    好吧,扩展板上的LED等开始闪烁了。最后使用Ctrl+C结束Python程序。
    【简单说明】

    【1】    【2】由于采用插座引脚编号方式,此处的11脚相当于BCM2835寄存器编号方式的引脚11。

4 WiringPi实现
 
    详见【
  
  • {  
  •   wiringPiSetup() ;  
  •   pinMode (0, OUTPUT) ;  
  •   for(;;)   
  •   {  
  •     digitalWrite(0, HIGH) ; delay (500) ;  
  •     digitalWrite(0,  LOW) ; delay (500) ;  
  •   }  
  • }  
    特别说明,由于BCM2835 C Library仍处于不断完善的过程中,请参考前言中的链接下载最新的安装代码。
# 下载
# 解压缩
# 进入压缩之后的目录
    新建一个名为blink.c的程序,程序的具体内容如下:
  
  •   
  • // P1插座第11脚  
  • #define PIN RPI_GPIO_P1_11  
  •   
  • int main(int argc, char **argv)  
  • {  
  •   if (!bcm2835_init())  
  •   return 1;  
  •   
  •   // 输出方式  
  •   bcm2835_gpio_fsel(PIN, BCM2835_GPIO_FSEL_OUTP);  
  •   
  •   while (1)  
  •   {  
  •     bcm2835_gpio_write(PIN, HIGH);  
  •     bcm2835_delay(100);  
  •       
  •     bcm2835_gpio_write(PIN, LOW);  
  •     bcm2835_delay(100);  
  •   }  
  •   bcm2835_close();  
  •   return 0;  
  • }  
    实践GPIO输入功能,实践SPI功能,实践I2C功能等。最后综合以上若干内容结合web做些好玩的应用。
 

转载于:https://www.cnblogs.com/reddusty/p/4751158.html

你可能感兴趣的文章
Android studio怎么去掉应用的标题栏
查看>>
[Cocos2D-X官方文档:解读CCArray类]
查看>>
大数据——大价值、大机遇、大变革(全彩)
查看>>
常用SQL查询语句
查看>>
SQLiteOpenHelper类
查看>>
补充[BNDSOJ]小p的数列
查看>>
读APUE分析散列表的使用
查看>>
jquery选中checkbox多选项并添加到文本框中
查看>>
CI框架后台添加左侧导航栏出现的一系列问题
查看>>
cocos2d-js 运行动画
查看>>
1.基础知识
查看>>
[NOI2018]你的名字
查看>>
关于mysql中select * for update锁表与Deadlock found when trying to get lock; try restarting transaction...
查看>>
[uva 1350]数位dp+二分
查看>>
445port入侵具体解释
查看>>
事务并发、事务隔离级别
查看>>
求无序数组中第二大的数--快速选择
查看>>
ios文字描边
查看>>
linux命令之pssh命令
查看>>
redis
查看>>