我写了一篇介绍新车间的ArduBlock软件,很荣幸ArduBlock官网马上推荐了这篇文章,见网址:http://blog.ardublock.com/zh/2012/02/03/introduction-of-ardublock-in-chinese/,这就是互联网的力量,把自己用心写东西,扩散出去,让有相同爱好的创客,能够分享你的作品,同时你也能通过博客、论坛去了解别人的作品,给自己以启发。

    我感觉看相关博客和论坛帖子,这种交流方式远比QQ聊天效率高,博客和论坛帖子是创客们思考和加工过的内容,而QQ随意性更大,更像是速食性的快餐,没啥营养。QQ群已经成了技术宅男寻找同类,排解寂寞的场所。

     新车间Arduino图形化编程软件ArduBlock的介绍(上):

http://www.eefocus.com/zhang700309/blog/12-02/237994_76dea.html ,文章介绍的ArduBlock编程实例是关于如何实现数字量输入与输出之间的交互,而现在写的“ArduBlock的介绍(下)”文章将介绍两个例子,分别涉及:如何实现模拟量输入输出之间的交互以及模拟量输入如何控制舵机角度。 

    先谈如何实现模拟量输入输出之间的交互,举这样一个例子,用电位计来调节LED的亮度。

   采用“DFRobot”输入输出设备模块库编程,ArduBlock的程序如下(所有图片,点击后都会放大):

    LED的亮度是PWM(脉冲宽度调制)信号的脉宽来控制的,PWM信号一个周期里的脉宽越大,LED越亮,Arduino指令中PWM的脉宽参数可设范围是从0~255:255表示最亮,0表示最暗(相当于OFF状态),所以参数设定为128,则刚好就代表一半的亮度输出。Arduino控制器一共有6个PWM端口,它们是与数字端口重用的,分别位于数字端口3、5、6、9、10、11,上图程序可以看到我用了数字端口9,来为LED提供PWM驱动信号。

   作为模拟量传感器的电位计并不是连在数字端口上,而是连在专门的模拟量输入端口,Arduino UNO控制器的模拟端口一共6个,从A0到A5,这个实验我把电位计模块连在了A0端口,模拟端口可以读取电位计的电压值,通过电位计手柄的旋转,这个电压值可以从0V变化到5V,程序中模数转换后的返回值范围则为0到1024,所以如何把电位计的输入数据正比转换到LED的PWM输出数据,我采用了map[0,1024]to[0,255]函数。

   这个程序用到了“变量”,变量名为“analog input”,从0号模拟端口读取的电位计采样值经过map函数正比转换后的数据,通过“set number variable”模块赋值给了这个变量,然后这个“analog input”变量中的数据又在“LED with brightness”模块输出给9号数字端口。

    从“Number/Constants”库提取出来“number var name ”变量引用模块,然后我把这个模块的名子改成了可读性更好的变量名:“analog input”。注意:“set number variable”变量定义模块也是从“Number/Constants”库提取出来的。如图:(绿框标注了!)

    程序中其它模块,如“loop”循环结构模块是从”Control“ 模块中拖到编程界面的,“Analog Rotation Sensor V1”和“LED with brightness”,哈哈,都来自于”DFRobot“产品模块库。

   如果不采用“DFRobot”产品模块库,而是采用通用输入输出“Pin”模块库编程,程序就如这个样子:

   再谈谈模拟量输入如何控制舵机角度,可以用《为啥不把Arduino与乐高结合起来玩创意》文章中的例子,文章网址:http://www.eefocus.com/zhang700309/blog/12-01/237459_6b7a6.html。用手指旋转电位计手柄,180度舵机上的乐高人偶也随之旋转,实验照片如下:

    由于上篇文章介绍了电位计控制舵机角度变化的原理,所以在这里就不再累述了,倒是可以对比下ArduBlock图形式程序与上篇文章介绍的C文本式程序,这两个程序都完成了同样功能,但给人的启迪和感受是不同的。

    采用“DFRobot”产品模块库编程,程序如下:

   采用通用输入输出“Pin”模块库编程,程序如下:

    刚写完“新车间Arduino图形化编程软件ArduBlock的介绍(下)”,惊悉“ArduBlock在Windows上中文显示的问题已经修好了。 欢迎测试”,赶快改动下文章,好跟上形势。中文版ArduBlock下载网址:

 

https://github.com/downloads/taweili/ardublock/ardublock-all.jar

  我现在把“模拟量输入如何控制舵机角度”的实验改成中文版编程,程序如图:

 

     ArduBlock软件是Arduino官方编程环境的第三方软件,目前必须依附于Arduino软件下运行,区别于Arduino文本式编程环境,ArduBlock是以图形化积木搭建的方式编程的,这样的方式会使编程的可视化和交互性加强,编程门槛降低,即使没有编程经验的人也可以尝试给Arduino控制器编写程序。看上面Maker Faire视频,创客活动是每个老百姓都能参与的活动,降低软件编程门槛,可以吸引更多的人投入到创新制作中来,人人都是创客!

   这是在美国举办的一年一度全民创客盛会Maker faire,看看盛会里有没有未来的乔布斯和马克·扎克伯格。