雷竞技注册
项目

构建树莓派控制器:交互式图形控制器

2016年5月18日通过唐威尔彻尔

在“建筑物覆盆子PI控制器”系列的第7部分中,读者将学习如何使用覆盆子PI和物理计算技术进行交互式图形弹跳球。

Raspberry PI是一个通用的SBC(单板计算机),允许构建各种嵌入式控制器。在此实际讨论的项目中讨论的项目是电子设备和小工具的一个小示例,可以用覆盆子pi构建。

在构建树莓派控制器系列的第7部分中,您将学习如何使用一些现成的电子元器件和物理计算制作交互式图形弹跳球。

图1显示构建此交互图形控制器所需的基本组件块。

图1所示。电学和嵌入式硬件需要建立雷竞技最新appRPI.(覆盆子PI)交互式图形控制器。

部件列表显示了构建控制器所需的各种组件。

项目零件列表

Pygame和树莓派

交互式图形控制器后面的一个关键元素是Python PyGame库。Python Pygame库轻松将图形添加到覆盆子PI动画应用程序。PyGame库允许在没有开发特殊Python代码或算法的情况下创建游戏和交互式对象。

您将构建的交互式图形控制器使用Pygame库将弹跳球图像添加到一个称为画布的窗口中。图2显示了使用Pygame为弹跳的球图像构建的画布。

图2。使用Pygame库构建的弹跳球画布示例。

CANVAS尺寸是使用称为PYGAME指令构建的大小.这大小指令定义了宽度高度如下所示的画布。

尺寸=宽度,高度= 500,500

总之,PyGame库为Python提供了以下编程增强功能:

  • 创建的图形不会闪烁。
  • 可以使用覆盆子PI使用适当的运动速度来控制图形。
  • 图形可以使用键盘、鼠标或外部传感器控制。

除了添加图形,如图1所示,数字传感器将使用Pygame库控制交互式控制器的图像。你将使用触觉按钮开关或光电管来建造数字传感器来移动画布上的沙滩球。

现在,让我们讨论使用物理计算的弹跳球和数字传感器之间的功能交互。

物理计算和覆盆子pi

交互式图形控制器操作的第二个元素是对物理运动作出反应的能力。我们项目的物理交互将是一个手移动一个球运球,如图3所示。这种传感器通过代码和电子学对环境做出反应的技术被称为物理计算。雷竞技最新app

图3。传感器(Photocell)的物理计算环境,带有支撑电子电路在无焊接面包板上连接。手的运动模拟了球形运球。

该传感器的环境是无焊接面包板和支持下拉电阻电路。当手经过传感器时,就会产生一个电信号。然后,树莓派通过嵌入在微控制器内存中的Python代码来处理这个电信号。Pygame库将创建一个跳跃的球画布,允许图形根据Python代码的运动参数移动。这个互动动画的运动参数是一个在画布上向上向下运动的对角线方向。

您将使用Photocell单元作为手动运动传感器以及Python代码和PyGame库来构建基于物理计算的交互式图形控制器。通过了解物理计算和PyGame库,您现在可以建立交互式图形控制器。

雷竞技最新app电子线路布线方法

要构建电子光电池传感器电路,您将使用无焊接面包板和跳线。如图3所示,电子光电池传感器电路的输出将连接到覆盆子PI的GPIO(通用输入输出)引脚。您将电路输出直接连接到覆盆子PI的GPIO引脚25。

在构建控制器之前,将使用触觉按钮开关测试电路来检查数字开关的电路接口。当触觉按钮开关被释放并按下时,1kilo-ohms的下拉电阻将为覆盆子PI的GPIO引脚25提供0V和3.3VDC的数字电压信号。图4显示了触觉按钮开关测试电路接线图。

图4.触觉按钮开关测试电路接线图。

不幸的是,40针公连接器没有在PCB(印刷电路板)上识别GPIO引脚。为了帮助连接触觉按钮开关电路,图5提供了树莓派的GPIO连接器引脚的布线参考。

图5.树莓派GPIO接口插拔。

另一种将电子光电池传感器电路连接到覆盆子PI的方法是使用Adafruit T-Cobbler Plus,如图6所示.T-Cobbler Plus是一种电气突破板,提供对覆盆子PI的GPIO引脚的访问。

图6.adafruit t-cobbler plus。

T-Cobbler Plus插入到一个标准的无焊接面包板和跳线连接到所需的GPIO引脚。一根扁平的带状电缆连接在T-Cobbler Plus和树莓派的电子连接器之间。图7显示触觉按钮开关电路连线到T-Cobbler Plus安装在一个无焊接面包板。T-Cobbler Plus是用一根扁平的带状电缆连接到树莓派2上的。

图7。作者的交互式图形控制器的触觉按钮开关测试电路。

通过在无焊接面包板上有线连接的测试电路,您现在可以使用清单1所示的Python代码来检查交互式图形控制器的操作。

清单1. buttonbouncingball.py #include python库导入sys,pygame导入时间导入rpi.gpio作为io io.setmode(io.bcm)#make引脚分配按钮_pin = 25 #setup button_pin作为输入io.setup(button_pin,io.in)pygame.init()#set canvas参数大小=宽度,高度= 500,500速度= [100,100] white = 255,255,255 #display标题在canvas pygame.display.set_caption(“弹跳球”)屏幕= pygame.display.set_mode(size)ball = pygame.image.load(“beachball2.png”)ballrect = ball.get_rect()而1:在pygame.event.get()中的事件:如果事件.type == pygame。退出:sys.exit()如果io.Input(button_pin):#如果按下按钮,请移动Beachball Ballrect = BallRect.move(速度)如果ballrect.left <0或ballrect.right>宽度:#move beachball向上速度[0] =  - 如果ballrect.top <0或ballrect.bottom>高度:#move beachball向下速度[1] = -speed [1] screen.filvas screen.blit背景(ball,ballrect)pygame.display.flip()time.sleep(0.1)以前100ms下一个按钮按下

ButtonBouncingBall_materials.zip

测试交互式图形控制器

在测试交互式图形控制器之前,您需要在raspberry pi文件目录中解压缩buttonbouncingball_materials文件夹。您将看到ziped文件夹中的beachball2.png和buttonbouncingball.py文件。

接下来,通过打开树莓派桌面上的LXTerminal来运行应用程序。在LXTerminal中输入Linux命令“cd”(更改目录),以访问ButtonBouncingBall.py Python代码。Python代码的关键函数用注释语句突出显示。在运行Python代码之前,请检查这些注释语句以理解它是如何工作的。

Linux命令〜sudo python buttonbouncingball.py将键入lxterminal编辑器,如图8所示运行应用程序。

图8。buttonbouncingball.py python应用程序在lxterminal执行。

执行代码后,弹跳球画布将显示在HDMI监视器屏幕上,如图9所示。

图9.在pygame画布上运行的buttonbouncingball.py代码。

用手指按下触觉按钮开关几次,看海滩球对角线向下展开画布。祝贺建立互动图形控制器!最终项目构建是使用电子光电池传感器电路来添加如讨论的手动运行检测功能。

手动运球检测特征

通过手动运行将冰球反弹,要求用电子光电池传感器电路替换触觉按钮开关。电子光电电池传感器电路作为数字开关连接。将手放在光电池上方将提供覆盆子PI读取的二进制1(3.3V)控制信号。Raspberry PI将处理此数字控制信号并允许海滩球移动或弹跳。

从光电池中卸下手提供二进制0(0V)数字控制信号。滩球停止覆盆子PI控制的弹跳。用于手动式检测电路的接线图如图10所示。

图10.手动式检测电路布线图。

我已将最终交互式图形控制器项目构建的另一张图片包含在图11中所示的手动运输检测功能作为参考。

图11作者的最终项目构建交互式图形控制器。注意Photocell更换触觉按钮开关进行手工运转检测。

您可以查看位于下面的小型视频剪辑中显示的项目的操作。使用前面讨论的Linux命令运行Python应用程序代码。当您向电子光电池传感器提供手动运输动作时,海滩球将在Pygame画布上弹跳。

同样,恭敬于成功将手动运输检测功能添加到交互式图形控制器中。下次,我们将探索将相机添加到Raspberry PI中的照片成像乐趣。

为自己提供这个项目!BOM。