前言
原创文章,转载引用务必注明链接。水平有限,欢迎指正。 因为是使用Typora(markdown)写好然后复制到论坛的,推荐直接访问我的网站以获得更好地阅读体验。 (http://www.omoikane.cn/2016/08/14/edison_xdk_1)
前面有了Hello World入门,我们下面来请出今天的主角,一般来说,传感器数值有两种,模拟变量和数字变量,相当于统计学中的二分类变量和连续变量,前者如性别(男或女),药物反应(阳性或阴性),0或1等;后者如心跳频率,体温,环境亮度等。我们这里以红色发光LED二极管和温度传感器为例。Grove接口防呆设计很不错,得益于Seeed Studio强大的影响力,国际上兼容此种接口的设备比较多,模块质量也挺好。缺点就是价格贵,和普通三针模块、拓展板不兼容。。。故意的吧你们。A0 - A3 代表模拟(Analog),D2 - D8 代表数字(Digital)。 3.1 用户空间方式控制发光二极管点亮熄灭Kit里提供了红、绿、蓝三种颜色的LED,选用红色因为它波长短,大半夜不刺眼。另外关于发光LED正负极怎么看,有三种方法:a. 长正短负;b. 负极一侧边缘是平的或者有凹槽; c. 灯芯里三角形的是负极。另外LED发光二极管有个特性,耐压不耐流,也就是一般来说,只要超过启动电压就可以亮,几十伏上百伏一般也没问题,但是电流不宜过大,很容易烧坏,可以看到LED插座模块上有很多限流电阻。 Edison板子上引脚兼容Arduino,如果用Arduino IDE编程会很方便,但是使用用户空间访问GPIO接口,会很麻烦,这里做演示就是为了告诉你们有封装好的库多么方便啊。非常推荐Intel的小册子《Internet of Things with Intel Edison GPIO on Edison》(链接:http://pan.baidu.com/s/1kV6Qhmv 密码:ml07),感谢emutex labs 的工作,emutex 网站找不到相关网页了,这里有个残本。以下内容将参考Intel的小册子。 3.1.1 点亮熄灭LED我这里仅演示sysfs用户空间控制D7,其他模拟端口的读写自己看册子吧,大多数估计看完这个示例就赶紧跑了,尼玛太麻烦了吧。以数字接口D7为例,Arduino IDE里的Blink例程是这样的: 有点简单呢对吧,我们来看看low-level是什么样子的,首先看一下查看 sys用户空间 文件系统节点信息: 想要使用一个引脚,一般首先需要export出来,然后设置方向(direction,输入还是输出),里面的value就是引脚的值(可以读取。设置)。我们来看看数字引脚7(D7): gpio255负责设置D7是用来输入还是输出;gpio223是一个上拉电阻;gpio48相当于D7的值。 下面我们来演示如何点亮、熄灭LED: 准备工作:将Edison底板上的J9跳线接头接到2、3位上,调整Grove拓展板为3.3V电平。关于Edison Arduino 底板上跳线接头的定义作用可以看官方说明。
- # 引出核心引脚48和附属引脚223、255、214,214是啥我也不清楚
- echo –n "48" > /sys/class/gpio/export
- echo –n "223" > /sys/class/gpio/export
- echo –n "255" > /sys/class/gpio/export
- echo –n "214" > /sys/class/gpio/export
- # 设置引脚方向(输入、输出)
- echo –n "out" > /sys/class/gpio/gpio48/direction
- echo –n "in" > /sys/class/gpio/gpio223/direction # (禁用上拉电阻)
- echo –n "out" > /sys/class/gpio/gpio255/direction
- echo –n "out" > /sys/class/gpio/gpio214/direction
- # 设置GPIO引脚的值
- echo –n "1" > /sys/class/gpio/gpio214/value
- echo –n "1" > /sys/class/gpio/gpio255/value
- # 点亮或熄灭 LED
- echo –n "1" > /sys/class/gpio/gpio48/value # (点亮LED)
- echo –n "0" > /sys/class/gpio/gpio48/value # (熄灭LED)
复制代码
3.1.2 教练,我要封装方便下次调用!如果你懂得linux下shell编程,我们可以写一个脚本例如led.sh,将gpio引脚号与Arduino引脚对应,自动完成初始化(引脚引出,设置方向,设置初始值等),然后想实现点亮熄灭的功能只需输入选项0或1给led.sh即可。 想法挺好啊,很方便嘛,仔细一想,这不就是封装成Arduino里面那句吗。。。哭死。。。
- void setup(){
- pinMode(7,OUTPUT);
- }
复制代码
|