ruby arduino hacking - 入门篇

我对[url=http://arduino.cc]Arduino[/url]一直很有兴趣,它简单容易上手,不折腾实在对不起我大学的电子工程专业(虽然专业课程都60分,补考什么的...),最近终于有空可以开始写系列博客,记录我的折腾之路。

什么是arduino,已经有很多文章了:
[quote="arduino.cc"]
Arduino是一款便捷灵活、方便上手的开源电子原型平台,包含硬件(arduino的各种电路板)和软件(arduino IDE)。它能够和环境以及各种硬件进行互动。[/quote]

如何安装驱动,如何写第一个程序,网络上也有很多文章了,不过大部分中文资料都是基于windows的,其实在Linux下安装更加简单,各个发行版的包管理都有带,以Ubuntu 12.04为例子,只要运行:
apt-get install arduino

会将各种依赖和驱动安装好,然后运行arduino命令就能够打开IDE。

arduino板和电脑之间用的是串口通讯,但是现在电脑几乎都没有串口了,通常都是用USB转串口。在Linux下安装好驱动,接上arduino板以后,对应的tty设备就是/dev/ttyUSB0(如果有多个的话,就是1..N)。

arduino的基础指令很少,控制结构和其他语言类似,所以非常容易上手,以最常见的[url=http://arduino.cc/en/Tutorial/Blink]闪烁一个LED[/url]灯为例子,将一个LED灯和一个220欧姆电阻(防止LED过载烧掉,1个LED几分钱,烧掉一个很心痛的 :cry: )接到编号为13的口和地口上:

[img]http://arduino.cc/en/uploads/Tutorial/ExampleCircuit_bb.png[/img]

然后在IDE里面输入如下的代码,通过IDE的upload指令,将代码烧入板子:

void setup() {
pinMode(13, OUTPUT);
}

void loop() {
digitalWrite(13, HIGH);
delay(1000);
digitalWrite(13, LOW);
delay(1000);
}


所有在板子上运行的代码无论简单还是复杂,都是由2个函数setup和loop构成。顾名思义setup只在启动时运行一次,在上面的代码我们设置了13口为输出。而loop会不停地循环执行,在上面的代码里面是往13口输出一个高电平信号,然后延迟1秒,再输出一个低电平信号,再延迟1秒,这样就实现了LED灯亮1秒,暗一秒的闪烁效果。

其实arduino本身的代码简单易学,连我刚上小学的儿子也能读懂。要做一个好的arduino作品,更多的时候靠的是创意而不是编程和电路(人工智能啥的除外 。。。)但是作为不折腾不舒服司机和ruby控的我,更希望能够用ruby来写。

[url=http://rad.rubyforge.org/]RAD[/url]是我找到的第一个开源的ruby控制arduino方案,它定义了一系列的dsl,然后通过ruby2c,将代码转换上传到板子,我们来看一下对应上面的闪烁代码:

class MySketch < ArduinoSketch
output_pin 13, :as => :led
def loop
blink led, 1000
end
end

这个代码比之前更加容易懂,而且还添加了blink这样的dsl,看起来很美,但是实际使用下来问题很多。
首先它只支持ruby 1.8,然后开发已经停滞,它的原理又是通过代码转换来实现的,每次调试代码必须通过编译上传来进行,arduino如果升级或者有新的函数(比如第3方库),它也不支持。

现在比较常见的方法是,将代码放在PC端运行,通过串口通讯写入和读取arduino上的各种输入输出口,这样的好处有2个:1复杂的控制代码(比如互联网,计算,数据库)可以不受限于arduino语言。 2方便快速调试,不需要编写,上传,烧入这样麻烦。

ruby和串口通讯有[url=http://ruby-serialport.rubyforge.org/]serialport[/url]这个gem,具体如何使用,请等待下篇...
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值