如何构建和使用FunShield

电子说

1.3w人已加入

描述

步骤1:收集零件

压电扬声器

首先,请检查您是否具备以下所有条件:

从SparkFun发明家的工具包(或您最喜欢的供应商):

(1)Photocell,SparkFun SEN-09088, $ 1.50

(1)SN74HC595N移位寄存器16-DIP,SparkFun COM-00733,$ 1.50

(1)IC传感器温度,SparkFun SEN-10988,$ 1.50

(1)压电扬声器,SparkFun COM-07950,$ 1.95

(1)TRIMMER 10K OHM 0.2W PC PIN,SparkFun COM-09806,$ 0.95

(1)迷你按钮,SparkFun COM-00097、0.35美元

(2)瞬时按钮开关-12mm方形,SparkFun COM-09190、1.00美元

(1)普通阴极RGB LED 5或10mm,SparkFun COM-11120,$ 0.95

(8)彩色5mm LED,COM-12062,$ 2.95

(12)330欧姆1/6W电阻,SparkFun COM-11507,$ 0.95/ea

(4)10K 1/6W电阻,SparkFun COM-08374,1.00美元

(1)二极管SparkFun COM-08588,0.15美元

(1)NPN晶体管,COM-12852,0.50美元

其他项目:

(1)PCB板,http://oshpark.com/shared_projects/lPWpxju2,三个副本$ 22.10

(1)40针分离头,SparkFun PRT-00116,$ 1.50

(2)CONN HEADER FEMALE 2POS。 1“ TIN,Digikey S7000-ND,$ 0.68

(1)CONN女性4POS .100” R/A金,Digikey S5479-ND,$ 0.74

(1)CONN HEADER 4POS .100 R/A 30AU,Digikey 609-3312-ND,$ 0.39

请记住,如果您只是想在Tindie.com上购买套件,我已经做了所有的辛苦工作。/p》

第2步:轻拍,开始动手

我们将假设您有一些套件-建筑经验。如果您需要焊接方面的帮助,请访问www.sparkfun.com/tutorials/213进行刷涂。

组装顺序主要取决于偏好。如果您没有帮手或虎钳,通常我会从最低的高度到最高的高度,这样当木板在桌子上翻转时,零件就会留在原处。

电阻:

strong》

让我们从电阻器入手,因为它们是最丰富,最低的座垫,而且最容易焊接。它们具有更高的耐热性,将使您有机会熟练掌握技术。它们也没有极性,因此您可以以任何一种方式放置它们。

但是,如果您希望LED保持正确的亮度,则必须获得正确的值。通常,我将330欧姆用于红色和黄色,将180欧姆用于绿色和蓝色。如有疑问,请检查数据表中的正向电压,然后在http://led.linear1.org/1led.wiz上计算5伏的正确电阻。其他组件的电阻值,例如I2C总线的10K欧姆,已在PCB上标出。

二极管和光电管:

现在,您已准备就绪,时间到了尝试一些带有极性的东西。在电路板中央上方的330欧姆电阻上方添加二极管,观察PCB上的白线和二极管上的黑带。这是电机晶体管的“反冲”二极管,因此,如果电机向后旋转,电机将无法工作(它将绕过电机,可能会过热。

光电管位于右下角

第3步:I2C标头和移位寄存器

右侧的strong》 I2C接头连接器是可选的,可让您将两块板连接在一起,或连接到Wii Nunchuk或Adafruit I2C LCD之类的另一个I2C设备。

移位寄存器允许我们仅使用Arduino的I/O引脚中的三个来控制八个LED。 是一种16针IC,必须以正确的方向插入才能正常工作,注意一端的凹口,这表明芯片的哪一侧具有插脚,使该凹口与PCB上的轮廓匹配。在每个对角线的销钉上,然后检查座位。 仔细检查方向,因为在焊接两个以上的引脚后,将很难切换。相信我,我必须做多个以上的操作。

第4步:温度传感器和晶体管

压电扬声器

温度传感器和晶体管一样,除了标记不同。通过使用强光和放大镜在脸上的标记来识别它们。您正在从诸如“ TMP36”之类的温度IC和“ 2Nxxxx”之类的晶体管中查找。

温度传感器位于左上角,其平坦的一面朝向电路板的中心。这是一个模拟设备,其产生的电压与温度成正比。

NPN晶体管位于电路板的右上角,平面可能会也可能不指向电路板的中心,取决于您的制造。检查数据手册和上面的示意图,以了解基极,集电极和发射极引脚的位置。晶体管是一个电子开关,可让我们使用Arduino数字引脚可提供的小电流来控制需要200毫安的电机。另一方面,LED仅需要10毫安,因此可以直接通过数字引脚供电。

步骤5:按钮和扬声器

接下来是按钮。有两个输入按钮,可以使用12mm按钮或较小的触觉按钮,以及重置设置按钮。这些确实需要按一定的方向安装,PCB孔要对齐以解决这一问题(不要弯曲插针以使其插入)。

接下来是扬声器。有两组孔。 SparkFun销售的扬声器的引线更靠近,并且具有极性。两组孔相距90度,相距更远,适合Adafruit销售的没有极性的PS1202扬声器。

第6步:放光吧!或LED。

LED 的时间。您应该已经决定了颜色和电阻值,所以现在您只需要在正确的位置获得正确的LED即可。 LED具有极性,较长的脚为正极。焊接每个LED的一只脚,然后检查另一侧的位置(如果只加热一个焊点,则更容易复位!)

RGB 指示灯在左上角。 RGB有两种类型:公共阴极,其中较长的引脚具有电源电压,并且每种颜色都接地;以及公共阳极,其中较长的引脚具有电源电压。地面。在这两种情况下,更长的引线都会通过方形焊盘穿过孔。该板可用于通用阴极,该板由SparkFun套件提供,但如果您是从Adafruit获得的,则可以很容易地对其进行修改。在电路板的下侧,切割CC焊盘,然后用焊料桥接CA焊盘。用万用表检查两者的连续性。注意:我已经留出足够的空间使用10mm RGB LED代替标准的5mm。

第7步:测量电位-修剪电位器

电位器或“修剪锅”位于左下角。电位计的引脚布置有几种类型,SparkFun套件随附一种可与面包板友好的装置,一行中有3条0.1英寸间隔的引线。我还添加了偏置孔,用于安装更常见且便宜的修整罐。

第8步:前往或进入-I/O头

没有足够的空间来容纳所有SparkFun套件组件,因此我添加了一些接头,以帮助我们与外界连接。左侧的2针母接头将电动机连接到晶体管控制的数字输出。右侧的2针母接头连接到模拟引脚和接地,以连接挠性传感器等组件。使用一块公接头将其固定到位并在焊接时对齐。

用于连接到伺服,在电机接头旁边添加3针公接头。

步骤9:最终热加工-Arduino接头

您需要焊接的最后一点是连接ct两个8针和2个6针公头,用于将屏蔽板连接到Arduino。我发现最简单的方法是先将接头连接器放在Arduino中,然后将屏蔽层覆盖在引脚上,然后再将其焊接到位。

步骤10:启动Sparkin

您应该已经注意到,现在所有的引脚分配都标记在了板的底部,并且可以以常规Arduino方式使用。在很多情况下,它们实际上与SparkFun Inventors Kit的演示草图中使用的匹配。最多只需更改针脚号即可使用它们。

SparkFun Inventors套件指南:http://dlnmh9ip6v2uc.cloudfront.net/datasheets/Kit 。..

SparkFun Inventors套件示例草图:http://dlnmh9ip6v2uc.cloudfront.net/datasheets/Kit 。..

将“ SIK指南代码”文件夹放置在Arduino IDE“示例”目录中:

PC:将“ SIK指南代码”文件夹拖到C: program files Arduino-x examples

MAC:将“ SIK指南代码”文件夹拖到Arduino-x/内容/资源/Java/示例

Linux:请参见http://www.arduino.cc/playground/Learning/Linux

启动Arduino IDE;这些示例应该在文件/示例/SIK指南代码

中可见

这是FunShield引脚分配:

A0 TRIM

A1 LIGHT

A2 TEMP

A3 ANALOG

A4 I2C-SDA

A5 I2C-SCL

D2移位寄存器数据

D4移位寄存器锁存

D12移位寄存器时钟

D6 RGB-BLUE

D9 RGB-红色

D10 RGB-GREEN

D3马达

D5伺服器

D7右按钮

D8左按钮

D11扬声器

步骤11:FunShield库

我为FunShield编写了一个库,以帮助您完成设置和管脚分配的工作。该库包含演示草图,帮助您入门。

步骤:

从以下位置下载zip文件:https://github.com/MakersBox/FunShield/archive/mas。 。.

解压缩文件夹。

将“ FunShield-master FunShield libraries FunShield”文件夹移至素描本的“ library”文件夹。

重新启动Arduino IDE。

示例草图现在应显示在以下位置:

[文件]-》 [示例]-》 [FunShield]

步骤12:ArduBlock

ArduBlock是与Arduino IDE集成的图形化编程环境。这是一个用Java编写的开源项目。

如果您尚未从以下位置下载zip文件:https://github.com/MakersBox/FunShield/archive/master.zip

将工具 文件夹移动到您的 sketchbook 文件夹中。

将 ArduBlockExamples 文件夹移至您的 sketchbook 文件夹。

重新启动Arduino IDE。

从[工具]-》 [ArduBlock]启动ArduBlock。

如果“ ArduBlock”选项不可见,请返回并检查是否将其放在正确的位置。

实际的目录结构应最终看起来像:。./sketchbook/tools/ArduBlockTool/tool/ardublock-FunShield.jar

如果仍然遇到问题,请在http://blog.ardublock.com/engetting-started-ardublockzhardublock/

打开中查看更详细的说明。一个示例项目(您必须导航到 。./sketchbook/ArduBlockExamples 文件夹。

步骤13:组件集成示例

您已经完成了!我想剩下的就是为您朝正确的方向轻轻推。让我们看一下名为“ FS_01_LED.ino”的示例草图“:

首先,我们需要表明我们要使用FunShield库,并实例化一个名为” fs“的FunShield对象:

// sets up and initialize FunShield

#include

#include // Require for I2C communication

FunShield fs; // Instanciate FunShield instance

几个简单的变量为我们提供帮助:

// variable declarations

int led = 0; // Can be any led from 0 to 7

int delayTime = 1000; // Delay time in milliseconds

由于FunShield库可以处理所有设置,因此setup()函数可以为空。我通常会添加一些代码,以查看通过consol进行的操作e:

void setup() {

Serial.begin(9600); // Setup serial communications for troubleshooting

Serial.println(“FS_01_LED.ino”);

}

现在进入主循环:

void loop(){

LED(led, HIGH); // turn LED on

delay(delayTime);

LED(led, LOW); // turn LED off

delay(delayTime);

}

您应该使用FunShield将其识别为基本的Arduino“眨眼”草图。 LED()函数代替了 digitalWrite()。

让我们进入一个 for循环,以便我们可以打开和关闭所有LED。

void loop(){

for(led=0; led《8; led++){

LED(led, HIGH); // turn LED on

delay(delayTime);

LED(led, LOW); // turn LED off

}

}

您可能想降低 delayTime 值,因此遍历LED不需要花费整整8秒钟的时间。

现在,当到达终点时,如何使LED反转?可能是另一个 for循环?

void loop(){

for(led=0; led《8; led++){

LED(led, HIGH); // turn LED on

delay(delayTime);

LED(led, LOW); // turn LED off

}

for(led=6; led》0; led--){

LED(led, HIGH); // turn LED on

delay(delayTime);

LED(led, LOW); // turn LED off

}

}

注意我重新开始使用led#6,因为第一个for循环已经点亮了led#7。我也将第二个循环停在led#1处,因为另一个for循环也可以处理它。

如果我们想在灯光改变方向时添加一个可听见的线索怎么办?在这里,图书馆的美丽派上了用场。无需查找引脚号。只需调用 speaker()函数

void loop(){

for(led=0; led《8; led++){

LED(led, HIGH); // turn LED on

delay(delayTime);

LED(led, LOW); // turn LED off

}

speaker(440, 10); // short beep

for(led=6; led》0; led--){

LED(led, HIGH); // turn LED on

delay(delayTime);

LED(led, LOW); // turn LED off

}

speaker(880, 10); // short beep

}

最后一个技巧即可。我们如何根据微调电位器的值来改变LED的速度?小菜一碟!只需将 delayTime 变量更改为 trim()函数:

void loop(){

for(led=0; led《8; led++){

LED(led, HIGH); // turn LED on

delay(trim()); // read potentiometer to determine delay time.

LED(led, LOW); // turn LED off

}

speaker(440, 10); // short beep

for(led=6; led》0; led--){

LED(led, HIGH); // turn LED on

delay(trim());

LED(led, LOW); // turn LED off

}

speaker(880, 10); // short beep

}

责任编辑:wv 

打开APP阅读更多精彩内容
声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉

全部0条评论

快来发表一下你的评论吧 !

×
20
完善资料,
赚取积分