Arduino主控板程序[翻译]
本文全文译自开发者Jonathan发表在lvl1.org上的介绍文章。
简述:
Arduino主控板(ArduinoDashboard)是用来实时查看Arduino模拟和数字输入输出接口数值的程序,可以在任何Arduino小程序(Arduino sketch)中引用,同时还提供已编译的版本,这样即使你没有安装Processing语言的集成开发环境也可以使用,下载包中还包括了源代码。
更多细节:
Arduino主控板程序包括了Processing语言的小程序和桌面应用程序,目前仍是初期测试版本,只提供了基本的功能。当前的版本可以让用户获得A0-A6模拟接口,以及1-13数字接口的数据。
使用指南:
即使你的计算机中没有Processing的集成开发环境,也可以使用Arduino主控板的编译版本,针对不同平台的每一个版本内都有一个单独的文件夹,包含了Arduino小程序文件,里面是需要引入到你自己小程序内的函数代码,下面是具体的步骤:
- 根据你的系统下载已编译的版本:Win32,Win64,Linux32,Linux64,MacOSX
- 将压缩包中提供的ArduinoDashboardArduinofunction.pde文件内的函数代码复制这粘贴到你现有的小程序中;
- 将小程序上传到Arduino板中(确认完全上传完毕);
- 在电脑中运行ArduinoDashboard.exe文件。
如果你已经安装了Processing的集成开发环境,则按下面的步骤操作
- 下载解压缩Arduino主控板的Processing小程序(下载地址);
- 将下面的函数代码复制到你自己的arduino小程序尾部,并在主程序中调用此函数(同时确定在小程序头部的设置代码段有”Serial.begin(9600);”语句)
void dashboard() {
int sensorValue1, sensorValue2, sensorValue3, sensorValue4, sensorValue5,sensorValue6, sensorValue7, sensorValue8, sensorValue9, sensorValue10, sensorValue11, sensorValue12, sensorValue13, sensorValue14, sensorValue15, sensorValue16, sensorValue17, sensorValue18, sensorValue19;
sensorValue1 = analogRead(A0);
sensorValue2 = analogRead(A1);
sensorValue3 = analogRead(A2);
sensorValue4 = analogRead(A3);
sensorValue5 = analogRead(A4);
sensorValue6 = analogRead(A5);
sensorValue7 = digitalRead(1);
sensorValue8 = digitalRead(2);
sensorValue9 = digitalRead(3);
sensorValue10 = digitalRead(4);
sensorValue11= digitalRead(5);
sensorValue12= digitalRead(6);
sensorValue13= digitalRead(7);
sensorValue14= digitalRead(8);
sensorValue15= digitalRead(9);
sensorValue16 = digitalRead(10);
sensorValue17 = digitalRead(11);
sensorValue18 = digitalRead(12);
sensorValue19 = digitalRead(13);
Serial.print(sensorValue1, DEC);
Serial.print(",");
Serial.print(sensorValue2, DEC);
Serial.print(",");
Serial.print(sensorValue3, DEC);
Serial.print(",");
Serial.print(sensorValue4, DEC);
Serial.print(",");
Serial.print(sensorValue5, DEC);
Serial.print(",");
Serial.print(sensorValue6, DEC);
Serial.print(",");
Serial.print(sensorValue7);
Serial.print(",");
Serial.print(sensorValue8);
Serial.print(",");
Serial.print(sensorValue9);
Serial.print(",");
Serial.print(sensorValue10);
Serial.print(",");
Serial.print(sensorValue11);
Serial.print(",");
Serial.print(sensorValue12);
Serial.print(",");
Serial.print(sensorValue13);
Serial.print(",");
Serial.print(sensorValue14);
Serial.print(",");
Serial.print(sensorValue15);
Serial.print(",");
Serial.print(sensorValue16);
Serial.print(",");
Serial.print(sensorValue17);
Serial.print(",");
Serial.print(sensorValue18);
Serial.print(",");
Serial.print(sensorValue19);
newline (println) Serial.print("!"); delay(200); - 将小程序上传至Arduino板中运行;
- 在电脑使用Processing集成开发环境运行ArduinoDashboard.pde小程序。
未来升级计划:
- 可自由选择要监视的接口;
- 将接口按输入/输出进行分类;
- 可以选择不同型号的Arduino板,以使用相应的接口数量和配置信息;
- 为每一个接口的高低电平值设置不同的显示颜色;
- 基于变量或单独接口的可自定义的警示信息;
- 接口或变量值的展示可以选择用图表、按钮、仪表盘等不同形式;
- 更多功能敬请期待
[我的观点]
对于要用到多个输入输出口的Arduino项目开发来说,实时监控每个接口的数据是调试中的难点,Arduino主控板程序确实可以提供很好的帮助,大家应该多多支持,试用该程序,并向开发者报告bug和提供建议。但是这种靠在sketch层面增加额外函数代码的方式有很大的局限性,首先是附加代码的融合增加了程序出错的几率,其次是牺牲执行效率拖慢了程序,最后是加剧了Arduino本来就捉襟见肘的内存不足问题。我觉得这样的接口监控/记录功能最好还是通过硬件层实现,在IDE中增加调试功能将数据展现给开发者。当然这样会增加Arduino板的复杂性和成本,可以考虑用shield子开发板方式,或者在公版Arduino中增加此功能做成开发板的形式完成,过两天我就去arduino.cc论坛嚷嚷一下。