电子说
第1步:需要的部件
对于这个项目,我从一个旧的阴影盒购买二手商店。由于它的形状很好并且已经安装了一块玻璃,我不需要做任何进一步的工作。任何阴影盒或深框架都可以工作,它只需要足够大,可以将LED灯条固定在里面,并有前玻璃和后视镜的空间。
您需要的其他部件包括
Shadowbox
镜子窗膜
Arduino Uno(或类似的Arduino芯片组)
LED灯条(确保它是5V)
四个超声波传感器
母头(这可能是可选的)
一个电容器(大约100uF到220uF可以工作)
一个电阻器(任何200-600欧姆都可以工作)
电池组(我用18650制造自己的电池,但9V电池可以工作)
你还需要一个少量供应。
烙铁(可以只使用压接机)
热胶枪
玻璃切割器(如果需要镜子或玻璃)
连接线,我使用了一条旧的网络电缆(CAT5)
Dupont压接器(可选,但非常有用)
3D打印机(我的是Robo3D)
我的建议是提示根据你的供应量来确定。这些是我使用过的耗材。
第2步:在胶片上添加胶片
我做的第一步是在我的镜头上添加一个镜像胶片前玻璃。事实证明这是非常容易的。
无限远镜使用后视镜和前玻璃上的“双向”镜子的方式。然后光线会在后视镜和双向镜子之间反弹,最终逃离双向镜子。留下镜子无限深的效果。
我使用的是银色窗帘遮光膜,涂抹后留下非常镜面的效果。您也可以尝试不同的胶片效果以获得其他效果。
只需按照胶片附带的说明将其涂在前玻璃背面即可。对于我的胶片,你将肥皂水涂在玻璃上,将胶片切成精确的尺寸(或略小),涂抹并用刮刀将多余的水挤出。让它干一夜,你就完全了。
第3步:安装LED灯条
衡量你的阴影框的内部尺寸,并确定四个边中的每个边上应有多少个LED。如果每侧有奇数个LED,它将工作得最好。具有奇数将允许一个LED作为灯的中心。
一旦确定每侧需要多少个LED,请仔细切割LED灯条,确保只切割指定的LED您可以保持最终切割部件的正确极性。
切割LED后,将它们干燥安装到阴影箱中,并仔细测量需要多少连接线才能将它们重新连接到阴影箱中。角落。你可以避免切割一些角落,这一切都取决于你的影子箱的大小。对于我的,我只需要切割其中一个角落。
用短线焊接切割的LED条带,如果使用裸线,则应用热缩管。通过对齐箭头确保维持LED的正确极性。
在LED灯条的起始处,焊线会导致连接到Arduino。这些引线将通过后视镜进行捕捉。
在正确切割和焊接LED之后,将背胶粘贴并粘贴在框架上,将它们安装在阴影盒内部。不要相信粘合剂会粘住,因此在整个LED灯条的关键位置涂上热胶。在拐角处特别小心,因为它们将首先在那里松散。
步骤4:为超声波传感器构建软件
将超声波传感器连接到该项目的方法有很多种。我通过将电线引线连接到母头的4个引脚上,然后将头部热胶粘到框架的背面。这允许我插入我的超声波传感器并在必要时将其移除。
在每个标题上使用4根不同颜色的电线,并保持顺序与阴影盒周围的顺序完全相同。我们稍后将所有+ 5V和GND线连接在一起,每个ECHO,TRIGG线将连接到Ardiuno。保持颜色一致将使该过程更容易。
将电线焊接到接头后,我为每个接头添加了一小段收缩管。
或者,超声波传感器可以直接焊接到电线上并安装在阴影箱上。
步骤5:安装镜子和背面
超声波传感器接头粘合后,是时候将镜子粘到遮阳板背板上并安装背面。如果您的镜子太大,请使用玻璃切割器将其切割成正确的尺寸。请注意,正确的尺寸可能会比你的支持者小一点1/2英寸。
我的影子盒使用框架中的一个凹槽来固定背部,然后使用两个小金属钩来固定它地方,给我的支持者一个小角度。您的设计可能会有所不同。
使用热胶,在背面涂上一些大胶水,然后将镜子按到位。镜子粘合后,将电线绕在电线周围并将其连接到框架上。如有必要,在每个角落涂抹少量热胶。
在安装背面之前,最好先测试一下LED灯条,确保所有接线都正确无误。此外,确保在连接之前将LED线引线从背面拉出,因为我们将在下一步中需要这些引线。
步骤6:连接Arduino Uno和Ultra Sonic传感器
收集超声波传感器的所有GND线,并将尾纤线连接到束上,然后将它们全部焊接在一起。这将成为我们所有传感器的共同基础。尾纤线将插入Arduino UNO。
对所有超声波传感器的+ 5V线路重复此过程。你应该将所有的线束都焊接在一起,并将一根引线插入Arduino。
接下来,LED灯条的GND和+ 5V应该在其电源上获得一个100-200uF的电容。确保观察到正确的极性,电容的负极在GND线上。我使用与传感器公共电线相同的技术将我焊接在一起。
最后,在LED灯条的DATA线上,串联一个200-500欧姆的电阻器。这将确保我们的LED灯带不会产生电流涌入,导致我们的第一个LED烧坏。
在所有连接处添加热缩管。下一步显示电路图是否有用。
完成所有接线后,将每根导线连接到Arduino。 GND至GND,+ 5V至+ 5V,LED数据至PIN 10,传感器至PIN 2-9。
我用我的压接器将杜邦端部添加到每根电线上。如果您没有压接器,可以将连接线焊接到每根导线或将它们焊接到插头引脚。
步骤7:电路图
这是我设计的电路图。乍一看可能看起来很复杂,但它只有4个传感器,每个传感器有4根线和LED灯条。
步骤8:Arduino代码
我选择使用传感器周围的脉冲LED制作橙色中心点,以测量最近的物体。当然,由于你有传感器和基本代码,你可以做一些完全不同的事情。
注意:
这使用Adafruit NeoPixel库,确保你正确安装该库。
传感器的确切顺序及其PIN码。
调整阴影框使用的总像素数。
根据需要调整颜色。
告诉代码“角落”的位置,这些是盒子每一边的中心点。
#include
const int NUMPIXELS = 26;
Adafruit_NeoPixel pixels = Adafruit_NeoPixel(NUMPIXELS, 10);
const int NUMPIXELS = 26;
Adafruit_NeoPixel pixels = Adafruit_NeoPixel(NUMPIXELS, 10);
const int topTrigPin = 2;
const int topEchoPin = 3;
const int leftTrigPin = 4;
const int leftEchoPin = 5;
const int botTrigPin = 6;
const int botEchoPin = 7;
const int rightTrigPin = 8;
const int rightEchoPin = 9;
void setup() {
Serial.begin(9600);
pixels.begin();
}
int corners[4] = {16, 23, 3, 10};
int focusPoint = 20;
int focusMoveTo = 20;
int rainbow = 0;
uint32_t rainbowColor = Wheel(0);
unsigned long previousMillis = 0;
void loop() {
unsigned long currentMillis = millis();
if (currentMillis - previousMillis 》= 500) {
previousMillis = currentMillis;
long top = readSensor(topTrigPin, topEchoPin);
long left = readSensor(leftTrigPin, leftEchoPin);
long bot = readSensor(botTrigPin, botEchoPin);
long right = readSensor(rightTrigPin, rightEchoPin);
Serial.print(“t:”);
Serial.print(top);
Serial.print(“l:”);
Serial.print(left);
Serial.print(“b:”);
Serial.print(bot);
Serial.print(“r:”);
Serial.println(right);
rainbowColor = (Wheel((rainbow) & 255));
rainbow = (rainbow + 1) % 255;
if (top 《 left && top 《 bot && top 《 right ) {
// move to top
focusMoveTo = corners[0];
} else if (left 《 top && left 《 bot && left 《 right) {
// move to left
focusMoveTo = corners[1];
} else if (bot 《 top && bot 《 left && bot 《 right ) {
// move to bot
focusMoveTo = corners[2];
} else if ( right 《 top && right 《 left && right 《 bot ) {
// move to right
focusMoveTo = corners[3];
}
}
if (focusPoint != focusMoveTo) {
if (focusPoint 》 focusMoveTo) {
focusPoint--;
} else {
focusPoint++;
}
}
bounceAround(focusPoint);
delay(30);
}
int pos = 0;
long readSensor(int trigPin, int echoPin) {
pos++;
if (pos == 5) {
pos = 0;
}
return pos;
pinMode(trigPin, OUTPUT);
pinMode(echoPin, INPUT);
long duration, cm;
digitalWrite(trigPin, LOW);
delayMicroseconds(2);
digitalWrite(trigPin, HIGH);
delayMicroseconds(10);
digitalWrite(trigPin, LOW);
duration = pulseIn(echoPin, HIGH);
return microsecondsToCentimeters(duration);
}
long microsecondsToCentimeters(long microseconds)
{
return microseconds/29/2; // to convert time into distance
//The speed of sound is 340m/s or 29 microseconds per centimeter.
//the ping travels out and back so distance from the obstacle is half of the distance travelled
}
int bounceSize = 5;
int bounceSizeMax = 5;
int bounceDirection = 1;
void bounceAround(int point) {
setAll(rainbowColor);
if (bounceSize 《= 0) {
bounceDirection = 1;
} if (bounceSize 》= bounceSizeMax) {
bounceDirection = -1;
}
bounceSize += bounceDirection;
pixels.setPixelColor(point, pixels.Color(0,250,0));
for(int i = 1; i 《= bounceSize; i++ ){
pixels.setPixelColor(point - i, pixels.Color(40*i,40*i,40*i));
pixels.setPixelColor(point + i, pixels.Color(40*i,40*i,40*i));
}
showStrip();
}
void showStrip() {
pixels.show();
}
void setAll(uint32_t color) {
for(int i = 0; i 《 NUMPIXELS; i++ ) {
pixels.setPixelColor(i, color);
}
}
void setAll(byte red, byte green, byte blue) {
for(int i = 0; i 《 NUMPIXELS; i++ ) {
pixels.setPixelColor(i, red, green, blue);
}
}
// Input a value 0 to 255 to get a color value.
// The colours are a transition r - g - b - back to r.
uint32_t Wheel(byte WheelPos) {
WheelPos = 255 - WheelPos;
if(WheelPos 《 85) {
return pixels.Color(255 - WheelPos * 3, 0, WheelPos * 3);
}
if(WheelPos 《 170) {
WheelPos -= 85;
return pixels.Color(0, WheelPos * 3, 255 - WheelPos * 3);
}
WheelPos -= 170;
return pixels.Color(WheelPos * 3, 255 - WheelPos * 3, 0);
}
步骤9:3D打印支架
背面有Arduino和电池,它不适合贴合墙壁,所以我决定设计和3D打印一个简单的立场。经过4次修改,这是我提出的立场。它有足够的空间放置底部超声波传感器并紧紧握住我的影子盒。
你可能决定用你的影子箱做一些不同的事情。
第10步:总结
将Arduino和电池组粘贴到框架的背面,你就完成了!
全部0条评论
快来发表一下你的评论吧 !