Beaglebone Black教程项目1闪烁板载LED
Beaglebone Black教程项目1闪烁板载LED
项目1闪烁板载LED
当设置完你的Beaglebone Black的时候,可能早就非常期待你的第一个项目了。下面就来满足大家的愿望,当然,这个项目可不是惊天动地的大项目,但万事总是有个开始的。这个项目不需要额外的电子器件,这可以让你的精力集中在编程这方面来。这也可以确保你的Beaglebone Black板子所有的设置都是正确的。
闲话少叙,我们的这个项目是编写代码控制Beaglebone Black的板载LED。如果你之前有过编程经验,那么可以把这个项目当做Beaglebone Black的“Hello World”程序。我们将会从零开始完成整个程序,这样可以使你在Cloud9 IDE中编写BoneScript代码有一个初步的感觉。
下面的就是闪烁板载LED的代码:
- var b = require('bonescript');
- var led = "USR3";
- b.pinMode(led, b.OUTPUT);
- var state = b.LOW;
- b.digitalWrite(led, state);
- setInterval(toggle, 1000);
- function toggle() {
- if(state == b.LOW) state = b.HIGH;
- else state = b.LOW;
- b.digitalWrite(led, state)
- }
当使用BoneScript编写代码的时候,我们需要将代码指向BoneScript库以访问GPIO端口和Beaglebone Black的其他功能。所以,我们的第一行代码就创建一个变量(b)来将两个括号之间的库引入我们的代码:
- var b = require('bonescript');
代码的下一个逻辑上的代码段是创建引用板载LED USR3的一个变量:
- var led = "USR3";
在上面的例子中我们将这个变量称为led,它对应于板载LED的USR3。
Beaglebone Black上面的GPIO数字端口可以被设置为输入或者输出端口。所以,在我们的代码中需要告诉Beaglebone Black我们想要板载LED作为输出。为了完成这个任务,我们需要使用名为pinMode的函数并将我们期望的端口作为他的参数;在这个示例中,我们使用变量led并使用变量b.OUTPUT将它设置为输出:
- b.pinMode(led, b.OUTPUT);
在这个代码中,我们创建了一个集合了LED状态的循环。在这个循环中,将LED的状态在开和关之间切换。要完成它,我们还需要设置一个额外的变量state,它用来保存LED此时的状态;在最开始我们应该给它一个初始值,这里是b.LOW,即对应于“关”:
- var state = b.LOW;
现在我们就可以设置LED的状态了,将他设置为state。做这个需要使用digitalWrite()函数并将期望操作的GPIO端口和状态(开和关)作为参数:
- b.digitalWrite(led, state);
LED的初始状态设置完毕后,我们需要触发LED点亮和熄灭,即改变state变量的状态。我们使用setInterval()函数将这个改变的时间间隔设置为1000毫秒即1秒。在间隔时间到达的时候,我们调用toggle()函数:
- setInterval(toggle, 1000);
现在我们需要创建一个名为toggle的函数供setInterval()函数调用,这个函数会每1000毫秒调用一次。这个函数实现的功能就是切换LED的状态,即在HIGH和LOW之间切换。由于只有这两个状态,所以最简单的方式就是if…else判断,它接受一个条件语句,根据条件语句是TRUE或者FALSE执行不同的语句:
- if (条件语句){
- 当条件语句为TRUE的时候执行
- }else{
- 当条件语句不为TRUE时候执行
- }
在我们的函数中,我们应该检查state变量的值是否等于LOW。如果是,我们将state设置为HIGH;如果不是,则执行else后的语句,将state设置为LOW。在设置完成后,使用digitalWrite()函数将这个状态应用于LED:
- function toggle() {
- if(state == b.LOW) state = b.HIGH;
- else state = b.LOW;
- b.digitalWrite(led, state)
- }
执行上面的代码,我们就可以看到LED USR3以1000豪秒的间隔闪烁。如果你想要改变闪烁的频率,可以修改这条语句:
- setInterval(toggle, 1000);
实际尝试一下是最好的。
小结
现在你已经将你的Beaglebone Black设置好并完成了了第一个项目。虽然这个项目非常简单,并且看起来不怎么霸气,但是这么简单的程序可以让你知道你的Beaglebone Black已经准备好投入更霸气的项目了。同时,也让你了解到了Beaglebone Black的一些基本操作。在本书接下来的内容中,会有逐步复杂的项目等你来完成。随着经手的项目逐渐增多你应该会了解到完成一个项目可能有多种不同的方式,你的思维将被完全打开。最终你将可以完成自己心目中蕴藏已久的宏伟目标。
本文选出自:BeagleBone Black项目实训手册转载请注明出处,尊重技术尊重IT人!
相关文章
- sourceTree 克隆项目clone
- 在Jenkins的pipeline项目中运行jmeter测试-教程
- Argo 项目入驻 CNCF,一文解析 Kubernetes 原生工作流
- 项目重构之数据源配置与优化:log4j 配置数据库连接池Druid,并实现日志存储到数据库
- 16-crm项目-kingadmin,权限管理
- 【IOS-COCOS2D-X 游戏开发之七】整合COCOS2DX的ANDROID项目到XCODE项目中,XCODE编写&编译代码,ANDROID导入打包运行即可!
- 【COCOS CREATOR 系列教程之三】PREFAB讲解&CC项目如何多开与分享
- OA项目迁移到CentOS
- 通过beego快速创建一个Restful风格API项目及API文档自动化
- 【OAK开源项目教程】如何使用 OAK 通过视觉 SLAM 执行定位?
- 【OAK开源项目教程】跌倒检测难做?教你一个开外挂般的做法
- jib-maven-plugin:Google开源maven项目docker镜像构建插件
- IntelliJ IDEA教程之如何clean或者install Maven项目
- SAP UI5 应用开发教程之一百零四 - SAP UI5 表格控件的支持复选(Multi-Select)以及如何用代码一次选中多个表格行项目
- Atitit 软件项目的一整套解决方案(gui界面,中间,存储数据库,图像处理,全文搜索)attilax总结
- 如何创建开发uniapp微信小程序项目?详细步骤教程
- 【项目实战】并发编程之Java中常见的并发编程模型
- 【单片机仿真项目】模拟开关灯(proteus原理图+keil代码)
- Github最受欢迎的10大深度学习时间序列项目
- java中如何获取项目的路径
- [手游新项目历程]-48-svn分支开发与主干合并
- 全网最全的Gitlab CI/CD自动化部署的介绍和教程,使用GitLab CI/CD自动化热部署SpringBoot或maven项目,GitLab CI/CD的Kubernetes集群的集成
- 2022最新版超详细的Maven下载配置教程、IDEA中集成maven(包含图解过程)、以及导入项目时jar包下载不成功的问题解决
- [Android开发教程]Android官网developer training中文版教程 - 1.1.1 创建一个Android项目
- cocos2d-x 2.2.3 创建项目的方法
- 【uni-app高级实战】手把手带你学习一个纯实战复杂项目的开发1/100
- 简化基于Maven的Scala项目创建详解
- 深度学习项目:火灾烟雾监测【附完整源码】
- 第三门课 结构化机器学习项目(Structuring Machine Learning Projects)
- 【区块链技术开发】Vs Code 创建、测试和部署Helloworld智能合约的Truffle示例项目(保姆级别教程)