简介
传说同意独角兽角具有神奇的治愈和净化特性。独角兽很自然地做到这一点-角碰到池塘里的稀水或伤口溃烂后,角的魔力就开始发挥作用。自然有多酷?
对于角色扮演独角兽来说,调用号角的魔力并不那么直观。这种号角通过另一种魔术解决了这个问题:电容式触摸。
用美丽的铜线装饰号角,让净化过程从简单的触摸开始。喇叭一直在闪烁着变色的彩虹,当有人触摸铜脉时,彩虹会消失,喇叭的尖端会发出明亮的白色,净化附近的所有东西。像魔术一样!
所需的零件
1 x gemma m0
gemma m0微控制器
缺货
1 x neopixel环
12 neopixel环
添加到购物车
1 x 电池
lipoly 350mah电池
添加到购物车
1 x 电池充电器
usb充电器
添加到购物车
1 x jst连接器
电池充电器连接器
添加到购物车
1 x 白色led
漫射白色3mm led
添加到购物车
也需要
1 x51ω电阻器(或类似电阻)
铜箔胶带以您想要的宽度
热缩管
您还需要一个独角兽号角-您可以3d打印一个或用worbla,树脂或任何其他半透明材料制成自己的号角。 marlinspike auger贝壳也可以做成独角兽角。
本指南包括一个可打印的独角兽号角文件以及一个可打印的安装板,因此您可以卸下号角以打开/关闭它并给电池充电。
工具
3d打印机(可选)
烙铁及配件
美工刀
用于安装的针和线
接线图
该项目无法与“经典” gemma配合使用,因为我们使用了gemma m0内置的电容式触摸!/span》
接线
宝石3v新像素环5v
宝石a0新像素环in
宝石g新像素环gled g(阴极)
gemma a251欧姆电阻led +(阳极)
gemma a1铜带
电池充电器
要添加充电功能,请拼接第二个jst连接器与电池的电线成一直线,然后插入usb充电器。
为什么将neopixels焊接到3v焊盘而不是vout焊盘?
gemma m0的vout焊盘可以从电池直接给我们提供3.7v的电压,从usb提供5v的电压,而neopixels最亮在这些较高的电压下。 但是,我们已经设计了此项目以始终插上电池,即使在关闭gemma的情况下,连接到vout垫的任何东西也会慢慢耗尽电池。接线到3v将解决此问题!
由于我们只有12个像素,因此3v引脚将为我们提供足够的电源。如果您要为整个设备供电,请不要使用此技巧。 neopixels! gemma的3v稳压器不能很好地处理较大的子线。
软件
一个好主意是立即将所有软件都安装好并加载到板上,以使以后的连接测试更加容易。
要运行代码,您需要:
arduino ide(1.8或更高版本)
adafruit board对gemma m0的支持
arduino库:fastled,adafruit_freetouch,adafruit_neopixel
1。 arduino ide
如果您未使用最新版本的arduino ide(1.8.5或更高版本),那么这是升级的好时机。如果这是您第一次使用arduino,请转至本指南进行安装。它是免费的,而且设置起来非常简单。
2。开发板支持
您需要告诉arduino ide您正在使用哪个开发板。这只需要几分钟的设置,而您只需要做一次。
这里是设置gemma m0的分步教程
3。库
可以使用arduino库管理器安装所有三个库-使用sketch→include library→manage libraries…并搜索库的全部或部分名称,然后单击“安装”。
查找:
fastled
adafruit_freetouch
adafruit_neopixel
adafruit_neopixel对于此项目不是绝对必需的,但是如果您遇到fastled的问题,则可以方便地进行安装。使用adafruit_neopixel,对基础知识进行故障排除会变得容易一些。
上传代码
使用usb电缆将微控制器插入计算机。在arduino ide中,转到工具》板,然后选择板的名称。然后转到工具》端口,并在那里也选择板。 (如果未在此处显示,请确保您的微控制器已通过usb插入计算机)
下载:project zip 或 unicornhorn_capacitivetouch.ino | 在github上查看
复制代码
#include “adafruit_freetouch.h”
#include “fastled.h”
#define captouch_pin a1
#define neopixel_pin 1
#define led_pin 0
#define num_leds 12
#define led_type ws2812
#define color_order grb
crgb leds[num_leds];
int brightness=150;
int touch = 500; // change this variable to something between your capacitive touch serial readouts for on and off
long oldstate = 0;
int ghue=0;
adafruit_freetouch qt_1 = adafruit_freetouch(captouch_pin, oversample_4, resistor_50k, freq_mode_none);
//adafruit_freetouch qt_2 = adafruit_freetouch(a2, oversample_4, resistor_50k, freq_mode_none);
void setup() {
serial.begin(115200);
if (! qt_1.begin())
serial.println(“failed to begin qt on pin a1”);
pinmode(led_pin, output); //initialize the led pin
fastled.addleds(leds, num_leds); // set up neopixels with fastled
fastled.setbrightness(brightness);
fastled.setmaxpowerinvoltsandmilliamps(3,350); //constrain fastled‘s power usage
}
void loop() {
serial.print(qt_1.measure());
serial.write(’ ‘);
checkpress();
delay(20);
}
void checkpress() {
// get current button state.
long newstate = qt_1.measure();
serial.println(qt_1.measure());
if (newstate 》 touch && oldstate 《 touch) {
// short delay to debounce button.
delay(20);
// check if button is still low after debounce.
long newstate = qt_1.measure(); }
if (newstate 》 touch ) {
dark();
digitalwrite(led_pin, high);
delay(20);
}
else {
rainbow();
digitalwrite(led_pin, low);
delay(20);
}
// set the last button state to the old state.
oldstate = newstate;
// do some periodic updates
every_n_milliseconds( 20 ) { ghue++; } // slowly cycle the “base color” through the rainbow
}
void rainbow()
{
// fastled’s built-in rainbow generator
fill_rainbow( leds, num_leds, ghue, 7);
fastled.show();
delay(20);
}
void dark()
{
for(int i = 0; i 《 num_leds; i++) {
leds[i] = crgb::black;
fastled.show();
delay(20);
}
}
#include “adafruit_freetouch.h”
#include “fastled.h”
#define captouch_pin a1
#define neopixel_pin 1
#define led_pin 0
#define num_leds 12
#define led_type ws2812
#define color_order grb
crgb leds[num_leds];
int brightness=150;
int touch = 500; // change this variable to something between your capacitive touch serial readouts for on and off
long oldstate = 0;
int ghue=0;
adafruit_freetouch qt_1 = adafruit_freetouch(captouch_pin, oversample_4, resistor_50k, freq_mode_none);
//adafruit_freetouch qt_2 = adafruit_freetouch(a2, oversample_4, resistor_50k, freq_mode_none);
void setup() {
serial.begin(115200);
if (! qt_1.begin())
serial.println(“failed to begin qt on pin a1”);
pinmode(led_pin, output); //initialize the led pin
fastled.addleds(leds, num_leds); // set up neopixels with fastled
fastled.setbrightness(brightness);
fastled.setmaxpowerinvoltsandmilliamps(3,350); //constrain fastled‘s power usage
}
void loop() {
serial.print(qt_1.measure());
serial.write(’ ‘);
checkpress();
delay(20);
}
void checkpress() {
// get current button state.
long newstate = qt_1.measure();
serial.println(qt_1.measure());
if (newstate 》 touch && oldstate 《 touch) {
// short delay to debounce button.
delay(20);
// check if button is still low after debounce.
long newstate = qt_1.measure(); }
if (newstate 》 touch ) {
dark();
digitalwrite(led_pin, high);
delay(20);
}
else {
rainbow();
digitalwrite(led_pin, low);
delay(20);
}
// set the last button state to the old state.
oldstate = newstate;
// do some periodic updates
every_n_milliseconds( 20 ) { ghue++; } // slowly cycle the “base color” through the rainbow
}
void rainbow()
{
// fastled’s built-in rainbow generator
fill_rainbow( leds, num_leds, ghue, 7);
fastled.show();
delay(20);
}
void dark()
{
for(int i = 0; i 《 num_leds; i++) {
leds[i] = crgb::black;
fastled.show();
delay(20);
}
}
3d打印喇叭
我根据noe ruiz的精彩教程在fusion360中创建了此设计。我正在使用双挤出机sigma bcn3d进行打印:
修改
在视频之后,会创建一个喇叭,喇叭的尺寸太小而无法容纳新像素环。首先确定草图的宽度为42毫米,而不是38毫米,以确保它适合。
我还在usb充电器底座附近添加了一个4mm x 13mm的孔,并在底部添加了用于
由于开/关开关位于gemma上,而且可能难以触及,因此我创建了一个滑入式安装板,可以将其缝制到头饰或头巾。这样,可以轻松卸下喇叭,以进行充电或打开和关闭。
horn.stl
spiral.stl
platform.stl
对于非双挤出机打印机,这是一个角和螺旋线合并在一起的.stl文件。
horn_with_spiral.stl
此号角使用双挤出机印刷了两个色善良。我在黑暗中发光的abs中打印了号角,在紫色abs中将螺旋打印了,变热时变成了粉红色。魔术!
要打印独角兽号角,3d打印机必须能够打印至少150mm高的高度,并且号角的底部大约为42x48mm,这应该适合大多数床。
p》
切片器设置
下载并将以下.fff文件导入到simplify3d中。这些设置适用于具有3mm abs的双挤出机。喇叭将在左侧挤出机上打印,螺旋线在右侧打印。
角轮廓:dualextruder3mmabs.fff
平台轮廓:platform_settings.fff
horn打印设置
0%填充
不需要支撑
没有木筏
裙子/边缘很有帮助
平台打印设置
20%填充
使用短裙
用木筏
裙子/帽檐会有所帮助
电子组装
剪一条红色和黑色的线,比喇叭的长度稍长。
获取纽扣电池并测试您的led。确保您知道哪个是阳极腿(电源),哪个是阴极(地)。
99%的时间中,更长的腿是阳极,但偶尔会出现“ trickster” led两条相同大小的腿滑过。
将电阻器的一只脚缠绕到led的阳极引脚,并将其焊接到位。将红色导线焊接到另一个电阻器支脚,然后将黑色导线焊接到led的阴极支脚。
再次用纽扣电池测试以确保led是还在工作。如果一切看起来不错,请在连接上涂抹一些热收缩物以覆盖它们,并确保它们不会短路。
抓住您的neopixel戒指。将红色导线焊接至5v,将黑色导线焊接至g,将白色导线焊接至in。
注意:最简单的方法是将导线从neopixel一侧滑入,然后在焊点的背面进行焊接
将导线拉到环的内部,并修剪到大约2英寸。
将来自neopixel环的黑线与来自led和焊料的黑线绞在一起都插入到gemma m0的g引脚上。
将红色像素线从neopixel环焊接到gemma的3v引脚,然后将白线焊接到引脚d1。/p》
最后,焊接剩余的红色线从led到gemma上的d0引脚。
将电池插入gemma并成为确保已打开。如果您还没有这样做,请上传代码。测试以确保您的新像素点亮。
用手指触摸板a1。新像素应该熄灭,led应当点亮。是的!
如果触摸板过于敏感或似乎什么也没做,则可能需要校准码。我们将在下一部分中进行介绍。
电池充电器
一次切割和焊接一根电线!不要一次切穿两者。如果处理不当,lipoly电池会着火!
将jst连接器修剪到大约2英寸。小心地将将红色导线连接到lipoly电池上,将其热缩并从jst连接器上插入红色导线。
用黑色导线重复操作。现在您已将两个插头连接到电池:一个用于gemma,一个用于充电器。
最终大会
切一段比您需要更长的铜带。修剪使其成形并绕喇叭形缠绕。我发现将其缠绕在螺旋上方是最好的方法-这样,当我戴上喇叭时,不用看就可以用手指轻松找到它。
用钝器压紧并压平铜带的工具。它不想整齐地旋转,所以花一些时间使其看起来不错。在尖端使用一小滴强力胶,以确保它不会被卡住。
在磁带末端留一条长尾巴,以连接到您的gemma。
在喇叭的顶端滴一些强力胶,然后滑动led使其保持不动。
滑动电池,然后neopixel响到号角。将充电器放置在适当的位置,使jst连接器朝下,朝向喇叭的底部。
然后,将铜带粘贴到gemma的a1垫上。您可以通过以下方式进行操作:将胶带滑过孔并进行焊接,或者,如果太麻烦,则将一根短线焊接到焊盘和胶带上以进行连接。
用一点热胶固定充电器。
将gemma塞入喇叭的底部,注意使电容式触摸板尽可能远离任何其他电子设备。
在这一点上,我的号角已经乱成一团。电容式触摸要么太灵敏,要么不够灵敏。或者,gemma上的所有其他垫板都会将其关闭,但垫板a1却什么也没做。
我花了很多时间来校准软件,测试,屏蔽和重新配置铜带。此处的校准非常棘手。拔下usb电缆后,喇叭的反应完全不同-没有usb端口的接地,铜带的灵敏度就会变差。
别放弃!请查阅本指南中的校准页面以获取一些提示。
到制作一个头带,从额头到颈项测量一下头围,然后切一块硬质织物或乙烯基材料,使其大小大致与之相同。
缝一个漂亮的闪亮织物
将3d打印平台缝在头带的中心使用安装孔。
用珠宝,花朵,贝壳,珠子或其他任何喜欢的装饰装饰头带。
校准
组装完所有部件后,您可能会发现号角过于敏感:几英寸之内即可到达,并且led尖端亮起。否则可能不够灵敏,没有任何接触会使喇叭的尖端发光。幸运的是,这很容易在代码中进行调整。
将gemma插入计算机,并确保已在“工具”》“端口”》“ adafruit gemma m0”下选择了它。
打开串行监视器并移动您的双手远离gemma。您应该看到数字滚动。这是您的基准编号,请写下来。
现在触摸铜带。这是您的有效号码。也要写下来。
在代码中找到以下行:
下载:文件
复制代码
int touch = 500; // change this variable to something between your capacitive touch serial readouts for on and off int touch = 500; // change this variable to something between your capacitive touch serial readouts for on and off
“ touch”变量用于设置灵敏度。将数字更改为基线数和活动数之间的中点附近的值。再次上传代码,然后进行测试以查看其性能是否更好。
添加铜带会极大地更改活动编号。添加的胶带越多,变化越大,因此在喇叭完全组装好以达到最佳效果时重新校准。
灵敏度在不同情况下也会发生变化。如果将gemma插入计算机,则结果与未插入计算机时会有所不同。由于未插入gemma时无法获得读数,因此需要进行一些尝试和错误操作才能正确校准喇叭。
如果灵敏度在您的头上,而不是在头上,在头饰上或不在头饰上,灵敏度也会发生变化。或者,如果风在吹。可能有点令人沮丧!因此,请确保您要在喇叭的最终位置(在您的头上)进行测试。
如果其他所有方法都失败了,请接地。深呼吸三下,扭动脚趾,然后将脉轮连接到通用地面。电力贯穿我们所有人,沮丧会改变您的结果。
然后呼吸,像您一样神奇的闪闪发光的独角兽来腾跃。
西班牙电信携手赛灵思研究4G和5G无线网络中O-RAN技术的应用
弧光保护装置的工作原理是什么,它的作用有哪些
太阳能路灯能安装在高压线下吗
工信部将抓好这五点推动5G发展
新型无线SoC助力零售、商业和工业物联网市场数字化转型
电容式触摸独角兽号角的制作教程
2009年六款最佳智能手机:苹果iPhone 3GS
freebsd为什么比linux稳定
180~224kHz载频发生器
鹿客OJJ智能门锁高清图赏
工业树莓派能不能固定设备编号
如何用STM32配置一个EXTIx中断线的I/O口
从晶体管向数据转型,是英特尔50年来最大胆的一次跃迁
电池修复技术秘籍之均衡重点!
良心国货还是骗子:华为P9用不到半年卡、死机?号称“18个月不卡”的真实体验
2020年投融资事件机器人资金额超1385亿元
意法半导体与Soitec合作开发下一代CMOS影像传感器技术
德索12mm储能连接器的安装方式
选购二极管前需了解二极管的主要参数
六个有关RoHS的检测方法标准