5237|0

659

帖子

1

TA的资源

纯净的硅(中级)

楼主
 

beagblebone之node.js的LED流水灯设计、网页控制LED灯(初步) [复制链接]

A基于node.js的LED流水灯设计

1、前提:
    已建立PC与beagblebone之间的网络连接
2、效果描述:
    采用beaglebone的node.js开发环境,即在浏览器输入http://IP_ADDR_OF_BB:3000,参照自带的blinkled程序,做一个将beagblebone的4个USR-LED流水灯效果的程序
3、代码
    如下,注释已经很明显
4、效果
    实现了4个LED逐个依次点亮的效果。具体效果做过单片机的LED流水灯的都懂得。
  1. // 本程序从采用node.js实现beagblebone的四个LED流水灯效果

  2. // get the beaglebone variables and functions
  3. var bb = require('./bonescript');

  4. // the delay duration between two LEDs, in microseconds
  5. var delayMs = 200;
  6. // the whole number of LEDS
  7. var NUM_LEDS = 4;
  8. // 4 LEDs
  9. var ledPin0 = bone.USR0;
  10. var ledPin1 = bone.USR1;
  11. var ledPin2 = bone.USR2;
  12. var ledPin3 = bone.USR3;

  13. // 4 LED status
  14. var led0 = LOW;
  15. var led1 = LOW;
  16. var led2 = LOW;
  17. var led3 = LOW;

  18. // the counter used for couting for the current lighting LED
  19. var counter = 0;

  20. // setup function set the pin mode of the 4 LEDS
  21. setup = function() {
  22.     pinMode(ledPin0, OUTPUT);
  23.     pinMode(ledPin1, OUTPUT);
  24.     pinMode(ledPin2, OUTPUT);
  25.     pinMode(ledPin3, OUTPUT);
  26. };

  27. /* the loop function increase the counter, and divided by 4
  28. * using the remain to judge the number of the LED to be lighted
  29. */
  30. loop = function() {
  31.     // Firstly unlighting all LEDS
  32.     led0 = LOW;
  33.     led1 = LOW;
  34.     led2 = LOW;
  35.     led3 = LOW;

  36.     // increase the counter and divided by 4, to
  37.     counter ++;
  38.     var remain = counter % NUM_LEDS;

  39.     // using the remain to judge the LED to be lighted, set the respond led status to be HIGH
  40.     if(0 == remain) {
  41.         led0 = HIGH;
  42.     }
  43.     else if(1 == remain) {
  44.         led1 = HIGH;
  45.     }
  46.     else if(2 == remain) {
  47.         led2 = HIGH;
  48.     }
  49.     else if(3 == remain) {
  50.         led3 = HIGH;
  51.     }
  52.     // output the status to the LED
  53.     digitalWrite(ledPin0, led0);
  54.     digitalWrite(ledPin1, led1);
  55.     digitalWrite(ledPin2, led2);
  56.     digitalWrite(ledPin3, led3);
  57.     // delay for the required duration
  58.     delay(delayMs);
  59. };

  60. bb.run();
复制代码
B 基于node.js的网页控制LED设计

1、前提:
    已建立PC与beagblebone之间的网络连接
2、效果描述:
    采用beaglebone的node.js开发环境,即在浏览器输入http://IP_ADDR_OF_BB:3000,参照自带的blinkled程序,做一个将beagblebone的USR0-LED通过网页刷新来控制亮和灭,
3、代码
   如下,注释已经很明显
4、效果
    即在另一个浏览器窗口输入http://IP_ADDR_OF_BB:8000,刷新一次,则LED-USR0则改变一次亮灭。
5、亮点和进一步创新点
    在网页上实现LED的控制。
    进一步可采取node.js的一些功能比如(nowjs的server与client的通讯功能,在网页上动态控制LED、显示模拟输入或数字输入量。

  1. // 打开浏览器;输入http://IP_Addr_if_Beaglebone:8000,刷新,则LED-USR0相应亮灭
  2. //=======================================

  3. // 采用下述代码取代引用到bonescript的一些常量和函数
  4. var bb = require('./bonescript');

  5. // 选取LED0作为显示
  6. var ledPin = bone.USR0;

  7. //用于LED亮灭的循环次数技术
  8. var counter = 0;

  9. // 设置LED的引脚模式为输出
  10. setup = function() {
  11.     pinMode(ledPin, OUTPUT);
  12.     var http = require('http');
  13.    
  14.     // 创建http服务器,每次有新的http请求(刷新浏览器),则counter加1,除以2的余数作为LED的状态
  15.     var s = http.createServer(
  16.         function(req, res) {
  17.             counter ++;
  18.             if(0 == counter%2) {
  19.                 digitalWrite(ledPin, HIGH);
  20.             }
  21.             else {
  22.                 digitalWrite(ledPin, LOW);
  23.             }

  24.                     res.writeHead(200, { 'Content-type' : 'text/plain'} );
  25.                     res.write("Hello, beaglebone!");
  26.             res.write("\ncounter = " + counter);
  27.                     res.end("\n================\n");
  28.                 }
  29.     );
  30.     s.listen(8000);
  31. };

  32. // 循环函数无执行
  33. loop = function() {
  34.      // Your function to run in a loop
  35. };

  36. // 启动bb
  37. bb.run();
复制代码



[ 本帖最后由 mars4zhu 于 2012-10-12 00:13 编辑 ]
点赞 关注
 

回复
举报
您需要登录后才可以回帖 登录 | 注册

随便看看
查找数据手册?

EEWorld Datasheet 技术支持

相关文章 更多>>
关闭
站长推荐上一条 1/9 下一条

 
EEWorld订阅号

 
EEWorld服务号

 
汽车开发圈

About Us 关于我们 客户服务 联系方式 器件索引 网站地图 最新更新 手机版

站点相关: 国产芯 安防电子 汽车电子 手机便携 工业控制 家用电子 医疗电子 测试测量 网络通信 物联网

北京市海淀区中关村大街18号B座15层1530室 电话:(010)82350740 邮编:100190

电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 电信业务审批[2006]字第258号函 京公网安备 11010802033920号 Copyright © 2005-2025 EEWORLD.com.cn, Inc. All rights reserved
快速回复 返回顶部 返回列表