时光倒流很棒!它们帮助我们审视这个缓慢移动的世界,而我们可能会忘记欣赏它的美丽。让我们来调味吧!
在本教程中,我将向您展示我是如何制作一个可以为您的游戏中时光倒流添加动作的设备。让我们开始吧!
我希望相机在两个方向上移动,即水平(X)和垂直(Y)轴。为此,我将需要两个电机。
我们应该能够为两个轴选择开始和停止位置。
电机的运动是这样的,即在每张照片之后轴应该转动 1 度。
为了获得如此精确的控制,我将使用伺服电机。
此外,我们应该能够设置时间间隔。
我希望它是便携式的,所以我决定用锂聚合物电池运行它,这意味着需要充电和升压电路。
最后,控制这一切的大脑将是 Arduino。ATMega328p 将用作独立的微控制器。
我选择了 GoPro 相机,因为它很小,用它制作延时摄影很容易。您可以使用任何其他小型相机或手机。
1x ATmega328p(带有 Arduino 引导加载程序)
2x MG995 伺服电机
1x MT3608 升压转换器
1x TP4056 锂聚合物电池充电模块
1x SPDT 开关
1x 16 MHz 晶体
2x 22pF 电容
2x 10k 电阻
1x 电位器(任何值)
1x 按钮(常开)
选修的:
3D打印机
为了使电路尽可能小,我使用了印刷电路板。您可以自己在家蚀刻电路板,也可以让专业人员为您完成艰苦的工作,这就是我所做的。
当面包板上的一切正常时,我们就可以开始 PCB 设计过程了。我选择 EasyEDA 进行设计,因为它可以让像我这样的初学者轻松进行设计。
检查,检查再检查!确保您没有遗漏任何内容。完全确定后,单击“生成制造文件”以下载 Gerber 文件,或者您可以使用下面给出的选项以 2 美元的价格直接从JLCPCB订购。
收到/制作 PCB 后,就可以填充它了。准备好电路图并按照丝印标记开始焊接元件。
焊接后用异丙醇清洁 PCB 以去除助焊剂残留物。
您将不需要花哨的 3D 打印机。使用适当的工具可以很容易地构建这些零件。我最近买了一台 3D 打印机,很想在我的项目中使用它。我从Thingiverse找到了一些零件。
GoPro 支架:https ://www.thingiverse.com/thing:53680
伺服喇叭:https ://www.thingiverse.com/thing:2794688
将电线焊接到带有母头的电源开关、电位器和按钮,并将它们连接到 PCB 上的公头。
在 Arduino IDE 中下载并打开附件,并将代码上传到您的 Arduino。上传代码后,从 Arduino 板上取下 IC 并将其插入 PCB。
/*
Author : IndoorGeek
YouTube : www.youtube.com/IndoorGeek
Thank you for downloading. Hope you like the project.
*/
#include
Servo xServo;
Servo yServo;
int potPin = A0;
int val,xStart,xStop,yStart,yStop;
int button = 2;
unsigned long timeInterval;
void setup() {
pinMode(button, INPUT);
xServo.attach(3);
yServo.attach(4);
}
void loop() {
xAxis();
delay(1000);
xStart = val;
yAxis();
delay(1000);
yStart = val;
xAxis();
delay(1000);
xStop = val;
yAxis();
delay(1000);
yStop = val;
setTimeInterval();
delay(1000);
timelapseStart();
}
void xAxis(){
while(digitalRead(button) != HIGH){
val = analogRead(A0);
val = map(val, 0, 1023, 0, 180);
xServo.write(val);
}
}
void yAxis(){
while(digitalRead(button) != HIGH){
val = analogRead(A0);
val = map(val, 0, 1023, 0, 180);
yServo.write(val);
}
}
void setTimeInterval(){ //Change the time intervals according to your camera's timelapse settings
while(digitalRead(button) != HIGH){
val = analogRead(A0);
if(val>=0 && val<170){
timeInterval = 1000L;
}
if(val>=171 && val<341){
timeInterval = 2000L;
}
if(val>=342 && val<512){
timeInterval = 5000L;
}
if(val>=513 && val<683){
timeInterval = 10000L;
}
if(val>=684 && val<854){
timeInterval = 30000L;
}
if(val>=855 && val<1023){
timeInterval = 60000L;
}
}
}
void timelapseStart(){
unsigned long lastMillis = 0;
xServo.write(xStart);
yServo.write(yStart);
while(xStart != xStop || yStart != yStop ){
if(millis() - lastMillis > timeInterval ){
if(xStart < xStop){
xServo.write(xStart);
lastMillis = millis();
xStart++;
}
if(xStart > xStop){
xServo.write(xStart);
lastMillis = millis();
xStart--;
}
if(yStart < yStop){
yServo.write(yStart);
lastMillis = millis();
yStart++;
}
if(xStart > xStop){
yServo.write(yStart);
lastMillis = millis();
yStart--;
}
}
}
}
打开主开关。
X 轴将处于活动状态。将锅转到您想要开始游戏中时光倒流的位置。按选择按钮确认起始位置。之后,Y 轴将被激活。执行相同操作以选择 Y 轴起始位置。
对 X 轴和 Y 轴停止位置重复上述过程。
现在,使用罐子,选择每次拍摄之间的时间间隔。锅的旋转分为6个部分,间隔为1秒、2秒、5秒、10秒、30秒和60秒。您可以更改setTimeInterval()函数中的间隔,如图所示。按选择按钮确认。
舵机将到达其起始位置,并在时间间隔后移动 1 度。
顺序:
1) 目前,由于 1 shot/degree,我们可以获得的最多照片数量是 180,因为舵机可以从 0 度旋转到 180 度。添加齿轮将提高分辨率。因此,我们将有更多镜头,从而实现流畅的延时摄影。我对电子产品很满意,但对机械产品却不太满意。期待改进它。
2) 电位器可用旋转编码器代替。
3)无线控制,也许?!
有很多东西要学!
谢谢你坚持到最后。希望你们都喜欢这个项目并且今天学到了一些新东西。如果你自己做一个,请告诉我。订阅我的YouTube 频道以了解更多即将推出的项目。再一次谢谢你!
声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
全部0条评论
快来发表一下你的评论吧 !