玩了几天 Arduino,本来想做一个基于 wifi 能够收集数据在家里,然后能够通过远程控制家里的空调或者什么设备打开。只是玩玩而已。
一开始我用 c 去写的,因为全部例子都是 c 的代码。因为淘宝上买的 wifi shield 大部分都是用 https://github.com/asynclabs/WiShield 作为驱动的。所以你必须下载这个驱动。然后有时候还编译不通过,你得根据网上的教程吧源代码里的东西改改。
后来当用 c 完成例子之后就想用 ruby 去试验一下,后来发现只有 RAD 这个 gem 才能够把程序烧录到 arduino 上,其他的都是烧一个程序上去先,然后通过串口或者网络实时跟电脑连接然后传输数据,代码虽然是 ruby 但是不能把 ruby 代码上传上去。
当我要把 wifi 模块的代码改写成 ruby 的时候,我发现问题来了。很多 c 代码我都不知道怎么转,文档奇缺,也没有很多人用,比如 wifi 模块通过一些外部变量去设置 ip 地址:
extern U8 local_ip[];
我都不知道怎么去用 ruby 去定义这个
unsigned char local_ip[] = {192,168,1,2};
然后又能被驱动读懂。
有个方法似乎是写 ArduinoPlugin,这个是什么东西呢?
class YourPlugin < ArduinoPlugin
>>>> ALL IS **** C CODE <<<<<
end
其实很多时候你做一些简单的教程上的例子还好,可能 ruby 刚好有写好的 plugin 或者模块,直接调用就可以了。否则如果你要写一些自定义的东西,绝对不靠谱。
最重要的是 Arduino 的 c,不是我们想想的那么难的 c,其实是非常非常简单的 c。 这里有了所有的 arduino api,包括字符串操作的也有,也麻烦不到哪里去,关键是有教程,有很多人用出了问题找到到原因。 http://arduino.cc/en/Reference/HomePage
https://itunes.apple.com/cn/app/arduino-companion/id501635254?l=en&mt=8