55回答

3收藏

[原创] 【RPI 2】+ 遇见树莓派

 

回答|共 55 个

倒序浏览

21#

liunian__92

发表于 2015-5-3 09:55:31 | 只看该作者

分享到:
本帖最后由 liunian__92 于 2015-5-3 11:57 编辑


8.python LED



一、RPi.GPIO简介

     上一篇帖子中,我们使用了脚本来控制GPIO。这里来介绍使用python来控制GPIO。
     首先要来介绍一个库文件:RPi.GPIO
     具体的可以访问网址如下:https://pypi.python.org/pypi/RPi.GPIO/
RPi.GPIO  提供了访问树莓派的GPIO的类和方法。

RPi.GPIO  最新版特性如下:
0.5.11
  • Fix - pins > 26 missing when using BOARD mode
  • Add getmode()
  • Raise exception when a mix of modes is used
  • GPIO.cleanaup() unsets the current pin mode


以下链接中有一些关于模块的使用例子:http://sourceforge.net/p/raspberry-gpio-python/wiki/Examples/

关于硬件连接图,可以参考上一节中讲的连接,即可。

二、python LED

      新建一个 .py 为后缀的文件。
     例如 reaction.py
  1. import RPi.GPIO as GPIO
  2. import time
  3. import random
  4. GPIO.setmode(GPIO.BCM)
  5. GPIO.setwarnings(False)
  6. GPIO.setup(4,GPIO.OUT)
  7. print ("hello")
  8. while 1:
  9. GPIO.output(4,1)
  10. time.sleep(0.5)
  11. GPIO.output(4,0)
  12. time.sleep(0.5)
复制代码
保存之后。

# python reaction.py

执行之后,即可看到和上一节中相同的效果,LED灯闪烁。


图8-1:LED OFF



图8-2:LED ON






22#

liunian__92

发表于 2015-5-3 09:56:04 | 只看该作者

【RPI 2】+ 遇见树莓派
23#

liunian__92

发表于 2015-5-3 09:56:47 | 只看该作者

【RPI 2】+ 遇见树莓派
24#

liunian__92

发表于 2015-5-3 09:57:22 | 只看该作者

【RPI 2】+ 遇见树莓派
25#

liunian__92

发表于 2015-5-3 12:07:11 | 只看该作者

【RPI 2】+ 遇见树莓派
26#

liunian__92

发表于 2015-5-3 12:07:44 | 只看该作者

本帖最后由 liunian__92 于 2015-5-3 12:45 编辑


9.   LCD1602+按键+RGB灯的模块简介



模块收到了,感谢爱板网,感谢http://www.52pi.net提供的这么好的模块,来晒一晒。。。

活动依然火热进行中,链接如下:https://www.cirmall.com/bbs/thread-41259-1-1.html


图9-0:活动

购买链接如下:http://item.taobao.com/item.htm?spm=a1z10.33-c.w4002-3978303545.67.TKLZ3B&id=39232976058


废话不多说了,直接上图:
打开快递竟然发现有个盒,也是开心的不行。
下图就是全家福,
附带了一个插槽,也是不明白干什么用的。

图9-1:全家福


模块上的资源:一个RGB LED、5个按键、一个1602液晶屏幕。
                        一个I2C扩展IO的芯片。




图9-2:模块正面


由于树莓派2是兼容树莓派1 的GPIO的,所以这个模块也可以用在树莓派2上。



图9-3:模块背面


        将它和树莓派安装一起,终于明白了插槽的用处,树莓派2比树莓派1USB接口处厚一点,所以,需要垫插槽,才能使用在树莓派2上。


图9-4:模块与树莓派安装之后的侧面



LCD 模块做的大小和树莓派相当,略小一点。两个模块安装在一起也是略显小巧精致。。。
唯一不足就是有点小厚。


图9-5:模块与树莓派安装之后的正面



晒图结束,虽然不是什么高大上的东东,但还是蛮喜欢这个模块的。
倘若用树莓派做简单的东西,加上这个模块,可以实现简单的交互设计。为树莓派增色不少。。。




27#

liunian__92

发表于 2015-5-3 12:47:11 | 只看该作者


【RPI 2】+ 遇见树莓派
28#

liunian__92

发表于 2015-5-3 12:47:59 | 只看该作者

10. LCD1602模块第一个demo

本帖最后由 liunian__92 于 2015-5-3 19:18 编辑


10.   LCD1602模块第一个demo



在上一篇帖子中简单的介绍了这个模块。
这个模块中重要的一个芯片就是MCP23017。


图10-1:MCP23017


图10-2:MCP23017 Block Diagram


关于这个模块,官方已经给了相应的使用教程,链接如下:
http://www.52pi.net/forum.php?mod=viewthread&tid=949&extra=page%3D1

在配置RPi2的时候有点小小的不同。
并没有找到   /etc/modprobe.d/raspi-blacklist.conf 这个文件

最后,只是加了下面这个步骤:
  1. 在 /boot/config.txt
  2. 加入:
  3. dtparam=i2c_arm=on
复制代码
编辑完成配置。
  1. #include <stdio.h>                                                                        
  2. #include <wiringPi.h>                                                            
  3. #include <mcp23017.h>                                                          //将wiringPI中提供的MCP23017的库包含到程序中
  4. #include <lcd.h>                                                               //将wirongPi中提供的LCD驱动库包含到程序中

  5. int main()
  6. {
  7.    int display,i,count;                                                 //定义几个等下需要使用的变凉
  8.    wiringPiSetup();                                                     //初始化wiringPi
  9.    mcp23017Setup (100, 0x20);                              //初始化MCP23017芯片,IO口起始编号为100,I2C地址0x20
  10.    printf ("Raspberry Pi - MCP23017 Test\n");
  11.    for(i=0;i<16;i++)
  12.        pinMode(100+i,OUTPUT);                          //将拓展出的IO口全部置为输出模式
  13. digitalWrite(107,1);                                           //将107引脚置为高电平,点亮LCD背光灯
  14. digitalWrite(101,0);                                          //将R/W置为低电平,将LCD设置为写入状态
  15. display=lcdInit(2,16,4,100,102,103,104,105,106,0,0,0,0);                       //初始化LCD屏幕
  16. lcdHome(display);                                         //将LCD的光标归位
  17. lcdClear(display);                                           //清屏
  18. lcdPosition(display,0,0);                                                  //设置LCD屏幕显示初始位置
  19. lcdPuts(display,"     EEboard");                                            //在屏幕上显示“Hello World”
  20.    while(1)
  21.    {
  22.       lcdPosition(display,0,1);                                                                                       
  23.       lcdPrintf(display,"%d",count++);                                        //自动循环加1   
  24.       delay(300);                                                             //延时300毫秒
  25.       printf("lcd1602\n");
  26.    }
  27. }
复制代码
效果如下图所示:

图10-3:效果图







29#

liunian__92

发表于 2015-5-3 12:48:41 | 只看该作者

【RPI 2】+ 遇见树莓派
30#

liunian__92

发表于 2015-5-3 12:51:45 | 只看该作者


【RPI 2】+ 遇见树莓派
您需要登录后才可以回帖 注册/登录

本版积分规则

关闭

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