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. 3. // get the beaglebone variables and functions 4. var bb = require('./bonescript'); 5. 6. // the delay duration between two LEDs, in microseconds 7. var delayMs = 200; 8. // the whole number of LEDS 9. var NUM_LEDS = 4; 10. // 4 LEDs 11. var ledPin0 = bone.USR0; 12. var ledPin1 = bone.USR1; 13. var ledPin2 = bone.USR2; 14. var ledPin3 = bone.USR3; 15. 16. // 4 LED status 17. var led0 = LOW; 18. var led1 = LOW; 19. var led2 = LOW; 20. var led3 = LOW; 21. 22. // the counter used for couting for the current lighting LED 23. var counter = 0; 24. 25. // setup function set the pin mode of the 4 LEDS 26. setup = function() { 27. pinMode(ledPin0, OUTPUT); 28. pinMode(ledPin1, OUTPUT); 29. pinMode(ledPin2, OUTPUT); 30. pinMode(ledPin3, OUTPUT); 31. }; 32. 33. /* the loop function increase the counter, and divided by 4 34. * using the remain to judge the number of the LED to be lighted 35. */ 36. loop = function() { 37. // Firstly unlighting all LEDS 38. led0 = LOW; 39. led1 = LOW; 40. led2 = LOW; 41. led3 = LOW; 42. 43. // increase the counter and divided by 4, to 44. counter ++; 45. var remain = counter % NUM_LEDS; 46. 47. // using the remain to judge the LED to be lighted, set the respond led status to be HIGH 48. if(0 == remain) { 49. led0 = HIGH; 50. } 51. else if(1 == remain) { 52. led1 = HIGH; 53. } 54. else if(2 == remain) { 55. led2 = HIGH; 56. } 57. else if(3 == remain) { 58. led3 = HIGH; 59. } 60. // output the status to the LED 61. digitalWrite(ledPin0, led0); 62. digitalWrite(ledPin1, led1); 63. digitalWrite(ledPin2, led2); 64. digitalWrite(ledPin3, led3); 65. // delay for the required duration 66. delay(delayMs); 67. }; 68. 69. 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、显示模拟输入或数字输入量。
file:///C:\DOCUME~1\ADMINI~1\LOCALS~1\Temp\ksohtml\wps554.tmp.png 1. 2. // 打开浏览器;输入http://IP_Addr_if_Beaglebone:8000,刷新,则LED-USR0相应亮灭 3. //======================================= 4. 5. // 采用下述代码取代引用到bonescript的一些常量和函数 6. var bb = require('./bonescript'); 7. 8. // 选取LED0作为显示 9. var ledPin = bone.USR0; 10. 11. //用于LED亮灭的循环次数技术 12. var counter = 0; 13. 14. // 设置LED的引脚模式为输出 15. setup = function() { 16. pinMode(ledPin, OUTPUT); 17. var http = require('http'); 18. 19. // 创建http服务器,每次有新的http请求(刷新浏览器),则counter加1,除以2的余数作为LED的状态 20. var s = http.createServer( 21. function(req, res) { 22. counter ++; 23. if(0 == counter%2) { 24. digitalWrite(ledPin, HIGH); 25. } 26. else { 27. digitalWrite(ledPin, LOW); 28. } 29. 30. res.writeHead(200, { 'Content-type' : 'text/plain'} ); 31. res.write("Hello, beaglebone!"); 32. res.write("\ncounter = " + counter); 33. res.end("\n================\n"); 34. } 35. ); 36. s.listen(8000); 37. }; 38. 39. // 循环函数无执行 40. loop = function() { 41. // Your function to run in a loop 42. }; 43. 44. // 启动bb 45. bb.run(); 复制代码 |