这些小活动你都参加了吗?快来围观一下吧!>>
电子产品世界 » 论坛首页 » 活动中心 » 板卡试用 » u7u7 的Intel Edison 开发进程帖

共50条 3/5 1 2 3 4 5 跳转至
高工
2016-07-16 16:51:24     打赏
21楼

Grove-Starter Kit Plus(GEN2)入门(来源于seed WIKI)

Grove Base Shield 简介

Grove Base Shield是Arduino到Grove系统的接口板。它将所有Arduino的管脚扩展成16个Grove接口,包括:digital(8),analog(4)以及I2C(4)。不同的Grove模块是通过不同的协议与Arduino交互数据的。只要知道单个Grove产品使用哪种方式和Arduino沟通,你就可以轻易地使用该模块了。

 


Digital接口

中间被红线标出的是8个digital Grove接口。它们与Arduino上的0 - 9管脚是对等的。大多数情况下,它们被用来读取一个输出0或者1的传感器的值,或者控制一个接受开关命令的执行部件。
它们当中的一些可以被复用为PWM(pulse width modulation)输出,包括D3,D5以及D6这三个接口。在驱动舵机或者制造呼吸灯效果时,你会用到这些功能。
串口也是会用到digital的接口的。Arduino的硬串口,也就是UART口,被引出到D1这个Grove接口处。Arduino与PC之间的通信就是通过硬串口实现的。在Grove系统使用的过程中,如果需要至少两个使用串口的设备(例如一个与PC通信以便调试的硬串口,以及另一个串口设备),Grove Base Shield上的digital Grove接口是可以作为软串口被复用的。在往后的Grove系统探索中,会有这种情况。

Analog输入接口

左边区域是4个用于读取analog输入的Grove接口。analog的传感器工作时会返回一个0 - 1024的值。相比只会返回0或者1的digital传感器而言,analog的传感器返回值更精确和包含更多细节。

I2C接口

下方区域是4个I2C Grove接口。I2C是一种只使用两根信号线,SCL和SDA,来传输数据的低速总线。SCL是控制总线上节奏的时钟信号,SDA是数据信号。
I2C总线上可以挂任意数目的设备,但是同一时间点只能有一个工作在主机模式,其他必须是从机模式。对于Grove中用到I2C这种协议的模块而言,主机就是Arduino主板。作为主机,Arduino为整个系统提供时钟信号,向从机分发命令,以及接收从机返回的数据。如何识别每一个从机呢?挂在I2C上的设备是需要一个唯一的I2C地址的。
当需要传送的数据量超过了digital或者analog这两种模式可以承受的范围时,I2C就会被提上日程了。例如,当我们想要收集到一些较复杂的传感器信息,如角速度,或者现实时间时,我们就会首选I2C作为模块与Arduino之间的通信方式。

 


高工
2016-07-20 11:59:44     打赏
22楼

Grove-LED(呼吸灯)

LED 是最常用的元件了。这个Grove Starter Kit Plus 套件中配备三个小LED,红、绿、蓝(RGB)。我们通过改变PWM,营造呼吸灯的效果。首先我们需要找到LED Socket Kit 和LED 进行一个组装

安装好就是这样,注意LED 长脚接正极

然后通过查阅手册可以看到,Edison 上有4个I/O 具有PWM 的功能,默认对应到拓展板的引脚3、5、6、9 。其中J11 引脚1接拓展板接口5,引脚2接Edison PWM1,引脚3接拓展板接口9,引脚4接Edison PWM3,引脚5接拓展板接口11,;J12中 引脚1接拓展板接口3,引脚2接Edison PWM0,引脚3接拓展板接口6,引脚4接Edison PWM2,引脚5接拓展板接口10。

在Arduino拓展板上带有这个功能的引脚边上都有一个"~" 标识,除了引脚3、5、6、9,不难发现在拓展板上的引脚10和11也有这个标识。这是因为在标准的Arduino 中有6个引脚带有PWM 功能,但是在Edison 上只有4个引脚具有PWM 功能,所以在拓展板上有两组跳线来将这4个I/O 映射到6个PWM 引脚上。如果非要在引脚10和11上实现具体的PWM 输出,就需要跳线来实现。跳线默认的连接方式是J11 1、2相连(Edison PWM1 连接拓展板Pin~5),3、4相连(Edison PWM3 连接拓展板Pin~9);J12 1、2相连(Edison PWM0 连接拓展板Pin~3),3、4相连(Edison PWM2 连接拓展板Pin~6)

我们选择PWM0功能输出,跳线默认短接J12 1、2(Edison PWM0 连接拓展板Pin~3),将LED连在Pin~3输出上。硬件连接图如下,通过排线将LED 连在Grove Base Shield D3 输出。

上传代码


// Demo for Grove - Starter V2.0
// Author: Loovee  2013-3-10
// Pulses the Grove - LED with a "breathing" effect.
// Connect the Grove - LED to the socket marked D3

// Defines the pin to which the LED is connected.
// Any pin that supports PWM can also be used:
// 3, 5, 6, 9, 10, 11
const int pinLed    = 3;

// Define the delay for the "breathing" effect; change this
// to a smaller value for a faster effect, larger for slower.
const int BREATH_DELAY = 5; // milliseconds

void setup()
{
    // Configure the LED's pin for output signals.
    pinMode(pinLed, OUTPUT);
}

void loop()
{
    for(int i=0; i<256; i++) { analogWrite(pinLed, i); delay(BREATH_DELAY); } delay(100); for(int i=254; i>=0; i--)
    {
        analogWrite(pinLed, i);
        delay(BREATH_DELAY);
    }
    delay(500);
}

上传成功

可以看到呼吸灯效果。



院士
2016-07-20 13:42:17     打赏
23楼

这个挺有意思的。

LED灯的效果还是非常可玩的


专家
2016-07-20 17:31:02     打赏
24楼
楼主加油

专家
2016-07-21 09:53:51     打赏
25楼
抱紧坐 台的大腿 摸摸粗~

专家
2016-07-25 11:24:08     打赏
26楼
快点更新

专家
2016-07-25 12:53:48     打赏
27楼
不错,了解一下。

专家
2016-07-25 13:09:57     打赏
28楼
快点更新

高工
2016-07-26 08:52:37     打赏
29楼

灯带也会呼吸

在我的开发方案中,有一部分是要用Edison输出PWM 调节LED,使其明暗渐变,模拟阳光。灯带隐藏在枕头内部,发光的枕头以这种温和的方式叫醒用户。本帖22楼已经实现了PWM 输出调节Grove-LED ,为了更好地实现产品化,这里决定用LED灯带。

这两天从网上买的5V灯带到了,买的USB 插口的,改成杜邦线方便连接。

外面是一层滴胶,防水等级IP65。柔性灯带,可做可穿戴开发,内嵌到枕头里面既可以随枕头形状变化,也不会影响舒适感。

之前已经说过关于Edison 上PWM 的输出,这里沿用上次的程序,选择PWM0 输出,对应的引脚是Arduino 拓展板上面的“~3”。正极接“~3”,负极接“GND”。

程序不变,选怎对应的引脚输出PWM即可

// Demo for Grove - Starter V2.0
// Author: Loovee  2013-3-10
// Pulses the Grove - LED with a "breathing" effect.
// Connect the Grove - LED to the socket marked D3

// Defines the pin to which the LED is connected.
// Any pin that supports PWM can also be used:
// 3, 5, 6, 9, 10, 11
const int pinLed    = 3;

// Define the delay for the "breathing" effect; change this
// to a smaller value for a faster effect, larger for slower.
const int BREATH_DELAY = 5; // milliseconds

void setup()
{
    // Configure the LED's pin for output signals.
    pinMode(pinLed, OUTPUT);
}

void loop()
{
    for(int i=0; i<256; i++)
    {
        analogWrite(pinLed, i);
        delay(BREATH_DELAY);
    }
    delay(100);
    
    for(int i=254; i>=0; i--)
    {
        analogWrite(pinLed, i);
        delay(BREATH_DELAY);
    }
    delay(500);
}

 上传成功,就能看到理想的效果啦~

拿来撩妹也是不错的选择~


专家
2016-07-26 09:17:09     打赏
30楼
好漂亮哇!

共50条 3/5 1 2 3 4 5 跳转至

回复

匿名不能发帖!请先 [ 登陆 注册 ]