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人!

Beaglebone Black教程项目1闪烁板载LED相关推荐

  1. 米思奇blynk_米思奇编程积木套件入门教程 项目一:点亮板载LED灯

    该教程实验平台:上一篇教程:本节课程任务 任务1--点亮板载LED灯 1.程序编写 双击右图中的Mixly.vbs文件,即可打开Mixly软件: 2.png (109.53 KB, 下载次数: 56) ...

  2. 咸鱼ZTMR实例—板载LED

    咸鱼ZTMR实例-板载LED 大部分开发板的例程,都是从闪灯(控制LED闪烁)开始的.因为闪灯的程序简单,也比较直观,不但可以让初学者快速了解基本方法, 也可以直观地看到效果. 用法 说明 pyb.L ...

  3. Arduino ESP32利用PWM实现板载LED呼吸灯效果

    Arduino ESP32利用PWM实现板载LED呼吸灯效果 LEDC简介 LED控制(LEDC)外围设备主要用于控制LED的强度,尽管它也可以用于生成PWM信号用于其他目的.它具有16个通道,可以生 ...

  4. 基于STC15W系列的板载LED灯控制程序讲解

    前言 Hello,大家好,我是STC15W系列单片机的初学者,很高兴能在这个平台上和大家分享我的学习经验~ 言归正传,现在我们就开始对STC15W4K56S4单片机进行学习吧! 一.对STC15W4K ...

  5. cubieboard上通过U-boot点亮板载LED

    有空了,先先来个简单的u-boot上实现LED控制 软件环境: 笔记本一台,安装WindowsXP sp3 XP下软件:Source Insight 3.5:SecureCRT:VMware Work ...

  6. AIR系列|板载LED|gpio引脚选择|GPIO|流水灯|LuatOS-SOC接口|官方demo|学习(20-1):GPIO库基础

    AIR系列各型号开发板板载LED对应管脚及GPIO控制代码 AIR103: rtos_bsp == "AIR103" then -- Air103开发板LED引脚编号--retur ...

  7. 新唐 Nuvoton NUC029 入门 点亮板载LED

    官网地址 http://www.nuvoton.com.cn/products/microcontrollers/arm-cortex-m0-mcus/nuc029-series/nuc029sde/ ...

  8. 使用arduino D1 wifi模块(WeMos D1)连接阿里云物联网平台并成功实现APP点亮板载LED(九)---制作APP

    前几篇文章讲解了如何在阿里云控制台上给设备登记"身份证",如何用MQTT.fx客户端模拟一个设备连接阿里云物联网平台,分析了arduino编程环境如何配置依赖库,在arduino ...

  9. STM32F103ZET6点亮板载LED灯

    1.新建工程,这边先套用了原子的工程模板 2.编写LED.C文件,GPIO引脚使能,查看原理图,发现我的开发板LED灯连接的引脚为PB9和PE5,于是我们初始化PB9和PE5即可 #include & ...

最新文章

  1. mysql 数据目录更改
  2. boost::mp11::mp_apply_q相关用法的测试程序
  3. java泛型机制_Java泛型机制必要性及原理解析
  4. 【Paper】AAAI 2020 故事生成模型 之 角色一致性
  5. 怎么申请注册微信小程序-微信小程序教程1
  6. git stash暂存操作
  7. ati自定义分辨率_真三7:猛将传自定义分辨率图文教程
  8. MySQL update语句使用连表(join)
  9. 电脑下载了谷歌浏览器,设置无法默认选用谷歌浏览器
  10. 罗永浩改造苹果iPad,装了个门把手
  11. 多媒体计算机系统中的媒体
  12. SSD固态硬盘优化(转)
  13. 【磁盘调度算法】磁盘调度模拟的设计与分析
  14. STM32基于软件模拟IIC进行AHT21B温湿度采集
  15. BFC、IFC、GFC、FFC
  16. 母牛问题。母牛每年生一只母牛,新出生的母牛成长三年后也能每年生一只 母牛……
  17. “再回首,云遮断归途,再回首,荆棘密布...
  18. 测试驱动设计_测试驱动的设计,第2部分
  19. 第五章.MyBatis高级映射
  20. 黑苹果 【 I7 8700K z370 1060 和 I7 7700K z270 集显 的安装记录】

热门文章

  1. Xcode 中关于#的小知识
  2. CSS学习六:布局剖析
  3. 2015.1.10 解决DataGridView SelectionChanged事件自动触发问题
  4. linux 下使用 curl 访问带多参数,GET掉参数解决方案
  5. 解决python2.x文件读写编码问题
  6. Access denied for user ‘root‘@‘localhost‘ (using password:YES) 解决方案
  7. 在解决方案中所使用 NuGet 管理软件包依赖
  8. Push rejected: Push to origin/master was rejected错误解决方案
  9. 如何判断一个字符串在JavaScript中是否包含某个字符?
  10. Java中的接口命名[关闭]