增强的3D MC3 Master v1.1和Ear Automation

有关3D打印机MC3 Master v1.1第一篇文章中我描述了从现成的套件组装3D打印机的第一次经验。从那时起,很多时间过去了,我困扰了很多塑料棒,学习了3D打印的复杂性。我已经积累了一些个人经验,我想使用一个特定的例子来讨论提高打印精度的方法。在本文的第二部分中,我将讨论在这里这里提到的我印刷,组装和改进的自动耳塞产品



由于对标准立方体的打印很感兴趣,因此决定打印更大,功能更多的东西。在操作过程中,出现了以下问题:层以小梳子放置,有时由于沿X和Y轴的快速移动,工作台移至侧面,有两种解决方法:
  • 将桌子牢固地固定在底座上。由于玻璃非常光滑,并且塑料不能牢固地固定桌子,因此最容易用热熔胶将玻璃胶粘到腿上,然后可以轻松将其除去,也可以使用胶带。因此,我们摆脱了桌子的移动。
  • Z. . . .


该部分本身如下:



由于进行了此类改进,因此可以打印这些详细信息:



在这里,您可以继续进行改进的第二部分。我一直很喜欢动耳朵,并且阅读了一些有关它们是如何创建和如何改进的材料。但是每次他似乎偶然发现某事。最后,我意识到我个人在这个项目中缺乏的东西,以及让我思考的东西:需要人类采取行动来激活运动。解决方案很简单:您需要自动执行电子动画工作。最简单的方法是编写一个循环,在该循环中将随机开始一个或另一个搅动耳朵的过程,但这不是我们的方法!
解决方案很快就来了:一切都与声音有关。在masterkit.ru网站的垃圾箱中找到以下模块



它的魅力在于它是一个完整的解决方案,这意味着您可以避免使用烙铁,而只需将其连接到Arduino连接器即可。该特定模块的缺点是它具有两个逻辑位置:开和关。也就是说,它不会给出信号的大小。因此,将不可能附加到扬声器的音量,而只能附加到声音的存在。
这个想法如下:
1.没有声音-耳朵旋转一会儿,然后折成一个“梦”;
2.出现声音-耳朵颤抖并上升;
3.声音继续-耳朵交替旋转和折叠;
4.声音消失-参见要点1.

修订的可能性:
1.如果您从麦克风中拿取麦克风,而不是两个位置的离散信号,而是模拟位置的麦克风,则当音量不同时,您可以添加多种效果:响亮的声音-耳朵会惊呆。
2.添加第二个麦克风并将其放在侧面-您可以将耳朵转向扬声器。
3.有了两个麦克风,每个耳朵都可以“过自己的生活”。

同时,回到博客,该博客讨论了没有电缆回路的电源,并添加了一个现有的麦克风而不是蓝牙适配器。接下来,我们修改现有的代码,并教导耳朵如何通过声音工作。这个故事中最长的是通过电阻器来调节音量,在该电阻器中,麦克风单元将向微控制器发出信号-此处仅凭经验进行设置。

带麦克风的耳码
#include <Servo.h>

Servo LeftVer;
Servo LeftAng;

Servo RightVer;
Servo RightAng;

const byte LeftVerPin = 2;
const byte LeftAngPin = 3;
const byte RightVerPin = 4;
const byte RightAngPin = 5;
const int SensorPin = 9; //
int ledPin = 13; //

const byte Button_1 = 6;
const byte Button_2 = 7;
const byte Button_3 = 8;
const byte Button_4 = 11;
const byte Button_5 = 10;

int i=0;
int pos = 0;
int SensorState = 0;
boolean BowFlag = 0;
boolean RearBowFlag = 0;

void setup()
{
pinMode(ledPin, OUTPUT); // initialize the Sensor pin as an input:
pinMode(SensorPin, INPUT); // ,

LeftVer.attach(LeftVerPin);
LeftAng.attach(LeftAngPin);

RightVer.attach(RightVerPin);
RightAng.attach(RightAngPin);

pinMode(Button_1, INPUT);
pinMode(Button_2, INPUT);
pinMode(Button_3, INPUT);
pinMode(Button_4, INPUT);
pinMode(Button_5, INPUT);

digitalWrite(Button_1, HIGH);
digitalWrite(Button_2, HIGH);
digitalWrite(Button_3, HIGH);
digitalWrite(Button_4, HIGH);
digitalWrite(Button_5, HIGH);

InitState();
delay(1000);
}

//------------------------------------------------------
void loop()
{
SensorState = digitalRead(SensorPin); // check if the Sensor is close. // if it is, the SensorState is HIGH:
if (SensorState == HIGH)
{
digitalWrite(ledPin, HIGH);
i=i++;
}

if (i==6)
{
i=1;
}

if (i=1)
{
if (!BowFlag)
{
FrontBow();
BowFlag = 1;
}

else
{
InitState();
BowFlag = 0;
delay(200);
}
}

if (i=2)
{
LeftEarBow();
InitState();
}

if (i=3)
{
RightEarBow();
InitState();
}

if (i=4)
{
TwoEarsBow();
InitState();
}

if (i=5)
{
if (!RearBowFlag)
{
RearBow();
RearBowFlag = 1;
}

else
{
InitState();
RearBowFlag = 0;
}

delay(200);
}

}
//------------------------------------------------------
void FrontBow()
{
byte Max = 90;
byte Min = 70;
unsigned int MoveDelay = 5;
unsigned int PosDelay = 500;

for(byte i=0; i <= (Max — Min) + 15; i++)
{
LeftAng.write(Min + i);
RightAng.write(Max — i);
delay(MoveDelay);
}

// delay(PosDelay);

for(byte i=0; i <= 3*(Max — Min) + 17; i++)
{
LeftAng.write(Max — i);
RightAng.write(Min + i);
delay(3*MoveDelay);
}

delay(PosDelay);
}
//------------------------------------------------------
void InitState()
{
LeftVer.write(90);
LeftAng.write(90);
RightVer.write(90);
RightAng.write(90);
}
//------------------------------------------------------
void RearBow()
{
byte Max = 90;
byte Min = 70;
unsigned int MoveDelay = 5;
unsigned int PosDelay = 500;

/*
for(byte i=0; i <= (Max — Min) + 10; i++)
{
LeftAng.write(Max — i);
RightAng.write(Min + i);
delay(MoveDelay);
}

delay(PosDelay);
*/
for(byte i=0; i <= (Max — Min) + 15; i++)
{
LeftAng.write(Min + i);
RightAng.write(Max — i);
delay(MoveDelay);
}

for(byte i=0; i <= 10; i++)
{
LeftVer.write(Max + i);
RightVer.write(Max — i);
delay(1);
}

delay(PosDelay);
}
//------------------------------------------------------
void LeftEarBow()
{
byte Max = 90;
unsigned int MoveDelay = 7;
byte AnglePos = Max;

for(byte i=0; i <= 80; i++)
{
LeftVer.write(Max + i);
delay(1);
}

for(byte i=0; i <= 75; i++)
{
LeftAng.write(AnglePos);
AnglePos = Max — i;
delay(MoveDelay);
}

for(byte i=0; i <= 10; i++)
{
LeftAng.write(AnglePos);
AnglePos += i;
delay(MoveDelay);
}

for(byte j=0; j<5; j++)
{
for(byte i=0; i <= 10; i++)
{
LeftAng.write(AnglePos);
AnglePos -= i;
delay(MoveDelay);
}

for(byte i=0; i <= 10; i++)
{
LeftAng.write(AnglePos);
AnglePos += i;
delay(MoveDelay);
}
}
}
//------------------------------------------------------
void RightEarBow()
{
byte Max = 90;
unsigned int MoveDelay = 7;
byte AnglePos = Max;

for(byte i=0; i <= 80; i++)
{
RightVer.write(Max — i);
delay(1);
}

for(byte i=0; i <= 75; i++)
{
RightAng.write(AnglePos);
AnglePos = Max + i;
delay(MoveDelay);
}

for(byte i=0; i <= 10; i++)
{
RightAng.write(AnglePos);
AnglePos -= i;
delay(MoveDelay);
}

for(byte j=0; j<5; j++)
{
for(byte i=0; i <= 10; i++)
{
RightAng.write(AnglePos);
AnglePos += i;
delay(MoveDelay);
}

for(byte i=0; i <= 10; i++)
{
RightAng.write(AnglePos);
AnglePos -= i;
delay(MoveDelay);
}
}
}
//------------------------------------------------------
void TwoEarsBow()
{
byte Max = 90;
unsigned int MoveDelay = 7;
byte AnglePosLeft = Max;
byte AnglePosRight = Max;

for(byte i=0; i <= 80; i++)
{
LeftVer.write(Max + i);
RightVer.write(Max — i);
delay(1);
}

for(byte i=0; i <= 75; i++)
{
LeftAng.write(AnglePosLeft);
RightAng.write(AnglePosRight);
AnglePosLeft = Max — i;
AnglePosRight = Max + i;
delay(MoveDelay);
}

for(byte i=0; i <= 10; i++)
{
LeftAng.write(AnglePosLeft);
RightAng.write(AnglePosRight);
AnglePosLeft += i;
AnglePosRight -= i;
delay(MoveDelay);
}

for(byte j=0; j<5; j++)
{
for(byte i=0; i <= 10; i++)
{
LeftAng.write(AnglePosLeft);
RightAng.write(AnglePosRight);
AnglePosLeft -= i;
AnglePosRight += i;
delay(MoveDelay);
}

for(byte i=0; i <= 10; i++)
{
LeftAng.write(AnglePosLeft);
RightAng.write(AnglePosRight);
AnglePosLeft += i;
AnglePosRight -= i;
delay(MoveDelay);
}
}
}


这项工作的结果是没有电线的耳朵,它们可以自主工作并响应周围的声音。因此,我们采用了日语提出的原始版本:



好吧,我们有自己的方式,您可以制作熊服装,添加咆哮声或巴拉莱卡音乐。这结束了有关测试打印的故事,并进行了一个更严肃的项目-我们自己的基于Arduino的机器人真空吸尘器的组装,这将在以后编写。

Source: https://habr.com/ru/post/zh-CN380875/


All Articles