当前位置:网站首页>磁悬浮3D灯
磁悬浮3D灯
2022-06-30 09:36:00 【acktomas】
磁悬浮灯
简介:磁悬浮灯
关于:我是一名设计师,名为 TomoDesigns。我是一名设计师,喜欢制作有趣且有趣的 3dprintable 对象。查看我的社交网站了解更多内容和设计 更多关于 TomoDesigns »
神奇的 Arduino 驱动的磁悬浮灯。适合初学者的完全 3DPrintalble 项目。
物品
材料:
3D模型:Cults3D
LED (WS2812 60led/m):
磁铁直径:12.7 毫米高度:5 毫米 x2
小磁铁:(磁铁钕5mm x 3mm)
磁性开关(或簧片开关):https /wiki.seeedstudio.com/Grove-Magnetic_Switch/
Arduino Nano 一个
5v 插头
5V 禁止插头
硅线
第 1 步:3D 打印所有零件
对于这盏灯,您需要打印 7/8 个零件。你可以在这里找到这些部分。
常规打印设置:
- 填充 20-100%
- 没有支持
LED灯座设置:
- 填充 100%
为什么是100%?因为你想很好地漫射灯光!
添加提示问问题评论下载
第 2 步:制作 LED 扩散灯座
您将需要 3 根电线从 LED 连接到灯的底座。这一点是整个构建中最难的。
准备/材料:
- 剪下 3 根长度为 130 毫米的电线(您有一定的试错空间)
- 剪下一块适合扩散体的 LED 灯带。
- 拿到你的烙铁
- 得到扩散体,扩散顶部和LED 夹。
脚步:
- 首先将所有电线**焊接到 LED 灯条上。**我用于欣喜若狂的样子只有白线。确保在末端标记电线,这样当您将它们连接到 Arduino 时,您就不会感到困惑。
- 将电线一直拉过扩散体上的小孔。
- 在 LED 灯条的内侧粘上一些胶水,然后将其(用镊子)放在扩散体内部。如果您的 LED 不想停留在扩散体内部的小块上,请将 LED夹连接在 LED 中间。
- 编织电线以获得美观的外观。
- 将磁铁放入扩散顶部。
添加提示问问题评论下载
第 3 步:准备电源输入
您也可以选择使用电池、移动电源或其他东西来执行此操作。这是我发现对我最好的。
准备/材料:
- 热胶/强力胶
- 母电源插孔连接器
- 灯底面
- 红色和黑色电缆
脚步:
- 将电源插孔连接器粘到灯底面的开口上。
- 我们需要在 Arduino 焊接步骤中使用的电缆。
添加提示问问题评论下载
第4步:制作磁性开关
这是可选的。这是当您将其连接到灯座时它会关闭的功能。您也可以选择只拔掉它,只在底座上放一块磁铁。取决于零件的可用性;)
准备/材料:
- 磁性开关
- 小磁铁
- 3 线
- 磁铁/开关底座
- 烙铁
- 钳
脚步:
- 用钳子从磁性开关上取下白色部分。
- 在 SIG、VCC 和 GND 上焊接 3 根电线。
- 在磁铁/开关底座的圆形一侧用强力胶粘上磁铁,然后将开关滑入到位。请注意,我们需要测试开关是否没有被小磁铁触发。因为如果它被触发,系统将无法工作!我们将在编程步骤中对此进行测试。
- 将磁铁/开关底座放在灯底面的所需位置,当放置在灯座上时,您希望将灯关闭。通过将您已经制作好的 LED 片与磁铁放在灯座的另一侧进行测试。
第5步:在Arduino上焊接
准备/材料:
- 烙铁(及配件)
- 前面步骤中的部分
- 阿杜诺
脚步:
- 将 2 根电缆从电源插孔连接到 VIN 和 GND。
- 将 Ledstrip 线焊接到 GND、V5 和数字端口 (D1-D12)。
- 将磁性开关线焊接到 GND、V5 和数字端口。
添加提示问问题评论下载
第 6 步:对 Arduino 进行编程
这一步很简单。你使用的组件和我一样吗?
准备/材料:
- 计算机
- 阿杜诺
- 微型 USB 线
脚步:
- 下载 arduino IDE
- 安装 FastLed 库(取决于您使用的 LED)(Fastled)
- 磁性开关代码概述
- 将 Fastled 代码与磁性开关代码相结合
- 看看你的磁性开关是否被触发。通过向后或向前滑动来相应地调整他。
示例代码
#include "FastLED.h"
#define DATA_PIN 3
#define LED_TYPE WS2812B
#define COLOR_ORDER GRB
#define NUM_LEDS 4
#define BRIGHTNESS 255
#define BRIGHTLOW 3
#define BRIGHTHIGH 255
#define INTERFADE 100
#define MAGNECTIC_SWITCH 5
volatile byte state = 0;
// byte state = LOW;
CRGB leds[NUM_LEDS];
void setup() {
delay(1500); // initial delay of a few seconds is recommended
pinMode(DATA_PIN, OUTPUT);
pinMode(LED_BUILTIN, OUTPUT);
pinMode(MAGNECTIC_SWITCH, INPUT);
FastLED.addLeds<LED_TYPE, DATA_PIN, COLOR_ORDER>(leds, NUM_LEDS).setCorrection(TypicalLEDStrip); // initializes LED strip
FastLED.setBrightness(BRIGHTNESS);// global brightness
showProgramCleanUp(2500); // clean up
// digitalWrite(LED_BUILTIN, HIGH);
}
/*If the magnetic switch is near the magnet, it will return true, */
/*otherwise it will return false */
boolean isNearMagnet()
{
int sensorValue = digitalRead(MAGNECTIC_SWITCH);
if (sensorValue == HIGH) //if the sensor value is HIGH?
{
digitalWrite(LED_BUILTIN, HIGH);
CleanUp();
return true;//yes,return true
}
else
{
digitalWrite(LED_BUILTIN, LOW);
return false;//no,return false
}
}
// switches off all LEDs for "delaytime" time
void showProgramCleanUp(long delayTime) {
for (int i = 0; i < NUM_LEDS; ++i) {
leds[i] = CRGB::Black;
}
FastLED.show();
delay(delayTime);
}
// switches off all LEDs for reset
void CleanUp() {
for (int i = 0; i < NUM_LEDS; ++i) {
leds[i] = CRGB::Black;
}
FastLED.show();
}
void showProgramAllWhite(long delayTime) {
for (int i = 0; i < NUM_LEDS; ++i) {
// leds[i] = CRGB::White;
// CRGB newPixel = CHSV(120, 120, 120);
leds[i].setRGB(125, 255, 255);
}
FastLED.show();
delay(delayTime);
}
void showProgramAllRed(long delayTime) {
for (int i = 0; i < NUM_LEDS; ++i) {
// leds[i] = CRGB::White;
// CRGB newPixel = CHSV(120, 120, 120);
leds[i].setRGB(255, 0, 0);
}
FastLED.show();
delay(delayTime);
}
void showProgramAllBlue(long delayTime) {
for (int i = 0; i < NUM_LEDS; ++i) {
// leds[i] = CRGB::White;
// CRGB newPixel = CHSV(120, 120, 120);
leds[i].setRGB(0, 0, 255);
}
FastLED.show();
delay(delayTime);
}
// main program
void loop() {
// Départ blanc - fadeout
for (int i = BRIGHTHIGH; i > BRIGHTLOW; i = --i) {
if (!isNearMagnet()) {
if (i == BRIGHTHIGH) {
showProgramAllWhite(500);
}
else {
showProgramAllWhite(3);
}
FastLED.setBrightness(i);
delay(INTERFADE);
} else {
return;
}
}
// fadein vers le Bleue
for (int i = BRIGHTLOW; i < BRIGHTHIGH; i = ++i) {
if (!isNearMagnet()) {
showProgramAllBlue(3);
FastLED.setBrightness(i);
delay(INTERFADE);
}
else {
return;
}
}
// Fadeout du bleue
for (int i = BRIGHTHIGH; i > BRIGHTLOW; i = --i) {
if (!isNearMagnet()) {
if (i == BRIGHTHIGH) {
showProgramAllBlue(500);
}
else {
showProgramAllBlue(3);
}
FastLED.setBrightness(i);
delay(INTERFADE);
} else {
return;
}
}
// FadeIN vers le blanc
for (int i = BRIGHTLOW; i < BRIGHTHIGH; i = ++i) {
if (!isNearMagnet()) {
showProgramAllWhite(3);
FastLED.setBrightness(i);
delay(INTERFADE);
} else {
return;
}
}
// Fadeout du blanc
for (int i = BRIGHTHIGH; i > BRIGHTLOW; i = --i) {
if (!isNearMagnet()) {
if (i == BRIGHTHIGH) {
showProgramAllWhite(500);
}
else {
showProgramAllWhite(3);
}
FastLED.setBrightness(i);
delay(INTERFADE);
} else {
return;
}
}
// FadeIN vers le Rouge
for (int i = BRIGHTLOW; i < BRIGHTHIGH; i = ++i) {
if (!isNearMagnet()) {
showProgramAllRed(3);
FastLED.setBrightness(i);
delay(INTERFADE);
} else {
return;
}
}
// Fadeout du rouge
for (int i = BRIGHTHIGH; i > BRIGHTLOW; i = --i) {
if (!isNearMagnet()) {
if (i == BRIGHTHIGH) {
showProgramAllRed(500);
}
else {
showProgramAllRed(3);
}
FastLED.setBrightness(i);
delay(INTERFADE);
} else {
return;
}
}
// fadein vers le Blanc
for (int i = BRIGHTLOW; i < BRIGHTHIGH; i = ++i) {
if (!isNearMagnet()) {
showProgramAllWhite(3);
FastLED.setBrightness(i);
delay(INTERFADE);
} else {
return;
}
}
}
边栏推荐
- 正则表达式基础
- Critical applications and hyper converged infrastructure: the time has come
- 基于Svelte3.x桌面端UI组件库Svelte UI
- 【Ubuntu-redis安装】
- Flutter 中的 ValueNotifier 和 ValueListenableBuilder
- 【ARK UI】HarmonyOS ETS的启动页的实现
- Design of mfc+mysql document data management system based on VS2010
- 11.自定义hooks
- 【AGC】构建服务3-认证服务示例
- 小程序开发踩坑之旅
猜你喜欢
How to build a private cloud and create a hybrid cloud ecosystem?
[Ubuntu redis installation]
How to reduce the delay in live broadcast in the development of live broadcast source code with goods?
Good partner for cloud skill improvement, senior brother cloud of Amazon officially opened today
力扣 428. 序列化和反序列化 N 叉树 DFS
Shell script multi loop experiment
JVM tuning tool commands (notes)
MySQL优化
JUL简介
Read the difference and connection between hyperfusion and private cloud
随机推荐
log4j
JWT expiration processing - single token scheme
目标检测yolov5开源项目调试
How to reduce the delay in live broadcast in the development of live broadcast source code with goods?
JVM tuning tool commands (notes)
ABAP time function
Follow the wechat oauth2.0 access scheme
Golang magic code
【JVM】CMS简述
Abstract classes and interfaces
Appium自动化测试基础 — 12.APPium自动化测试框架介绍
NER – Named Entity Recognition Summary
NFS shared services
Machine learning note 9: prediction model optimization (to prevent under fitting and over fitting problems)
【新书推荐】Cleaning Data for Effective Data Science
MySQL index and data storage structure foundation
Enterprise data center "cloud" transformation solution
Self service terminal handwritten Chinese character recognition input method library tjfink introduction
Small program development journey
Shell script functions