Arduino主控板程序[翻译]

本文全文译自开发者Jonathan发表在lvl1.org上的介绍文章

ArduinoDashboard

简述:

Arduino主控板(ArduinoDashboard)是用来实时查看Arduino模拟和数字输入输出接口数值的程序,可以在任何Arduino小程序(Arduino sketch)中引用,同时还提供已编译的版本,这样即使你没有安装Processing语言的集成开发环境也可以使用,下载包中还包括了源代码。

更多细节:

Arduino主控板程序包括了Processing语言的小程序和桌面应用程序,目前仍是初期测试版本,只提供了基本的功能。当前的版本可以让用户获得A0-A6模拟接口,以及1-13数字接口的数据。

使用指南:

即使你的计算机中没有Processing的集成开发环境,也可以使用Arduino主控板的编译版本,针对不同平台的每一个版本内都有一个单独的文件夹,包含了Arduino小程序文件,里面是需要引入到你自己小程序内的函数代码,下面是具体的步骤:

  1. 根据你的系统下载已编译的版本:Win32Win64Linux32Linux64MacOSX
  2. 将压缩包中提供的ArduinoDashboardArduinofunction.pde文件内的函数代码复制这粘贴到你现有的小程序中;
  3. 将小程序上传到Arduino板中(确认完全上传完毕);
  4. 在电脑中运行ArduinoDashboard.exe文件。

如果你已经安装了Processing的集成开发环境,则按下面的步骤操作

  1. 下载解压缩Arduino主控板的Processing小程序(下载地址);
  2. 将下面的函数代码复制到你自己的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);
  3. 将小程序上传至Arduino板中运行;
  4. 在电脑使用Processing集成开发环境运行ArduinoDashboard.pde小程序。

未来升级计划:

  • 可自由选择要监视的接口;
  • 将接口按输入/输出进行分类;
  • 可以选择不同型号的Arduino板,以使用相应的接口数量和配置信息;
  • 为每一个接口的高低电平值设置不同的显示颜色;
  • 基于变量或单独接口的可自定义的警示信息;
  • 接口或变量值的展示可以选择用图表、按钮、仪表盘等不同形式;
  • 更多功能敬请期待

[我的观点]
对于要用到多个输入输出口的Arduino项目开发来说,实时监控每个接口的数据是调试中的难点,Arduino主控板程序确实可以提供很好的帮助,大家应该多多支持,试用该程序,并向开发者报告bug和提供建议。但是这种靠在sketch层面增加额外函数代码的方式有很大的局限性,首先是附加代码的融合增加了程序出错的几率,其次是牺牲执行效率拖慢了程序,最后是加剧了Arduino本来就捉襟见肘的内存不足问题。我觉得这样的接口监控/记录功能最好还是通过硬件层实现,在IDE中增加调试功能将数据展现给开发者。当然这样会增加Arduino板的复杂性和成本,可以考虑用shield子开发板方式,或者在公版Arduino中增加此功能做成开发板的形式完成,过两天我就去arduino.cc论坛嚷嚷一下。