新人报到:《360度vr自动拍摄云台》

本帖最后由 copyc4 于 2015-7-10 13:04 编辑

最近遇到一个头痛的项目,拍摄商品360度图片,大批的小商品加上每个商品都要拍36张图,手动拍摄实在是要命呀。赶快想办法!

内容01.jpg (37.85 KB, 下载次数: 4)

下载附件

保存到相册

2015-7-10 12:40 上传

突然想起这个应该可以搞定我的苦难吧!话不多准备材料:ARDUINO NANO X 1航拍用相机红外遥控模块 X 1红外遥控模块加遥控器 X 1IC2 液晶显示屏 X 1步进电机加控制板 X 1连轴器 X 1DVD盒 X1DVD X1

IMG_2030.jpg (129.76 KB, 下载次数: 4)

下载附件

保存到相册

2015-7-10 12:42 上传

配件准备好开工吧!

IMG_2033.jpg (233.54 KB, 下载次数: 4)

下载附件

保存到相册

2015-7-10 12:42 上传

现在DVD盒的上盖开口;

开口01.jpg (63.03 KB, 下载次数: 4)

下载附件

保存到相册

2015-7-10 12:42 上传

如图将步进电机装入DVD盒;

开口02.jpg (117.91 KB, 下载次数: 4)

下载附件

保存到相册

2015-7-10 12:42 上传

在dvd碟片背面装一块圆的背板,用于连接联轴器,(之间用双面胶粘起,哈哈);

DVD03.jpg (60.96 KB, 下载次数: 4)

下载附件

保存到相册

2015-7-10 12:42 上传

按照图中连接方法把个模块连接起来;

连接指导.jpg (218.99 KB, 下载次数: 4)

下载附件

保存到相册

2015-7-10 12:42 上传

连接电脑上载程序(程序自己乱写的,高手勿喷);

程序.jpg (72.77 KB, 下载次数: 4)

下载附件

保存到相册

2015-7-10 12:42 上传

int run ;
int si ;
int value;
int led;
int test;
//int pos = 0;
#include <Stepper.h>//步进电机库
#define STEPS 20//步数电机参数
#include <Servo.h>
Servo myservo;
Stepper stepper(STEPS, A0, A1, A2, A3);//分别接IN1、IN2、IN3、IN4,步进电机连接引线ABCD
#include <IRremote.h>
#include <Wire.h>
#include <LiquidCrystal_I2C.h>
LiquidCrystal_I2C lcd(0x27,16,2); // set the LCD address to 0x27 for a 16 chars and 2 line displayint RECV_PIN = 7;
IRrecv irrecv(RECV_PIN);
decode_results results;void setup()
{stepper.setSpeed(200);//设置步进电机每分钟转步数RPMs(Revolutions Per Minute)
pinMode( 8 , INPUT);
pinMode( 9 , INPUT);
myservo.attach(8);Serial.begin(9600);
irrecv.enableIRIn(); //初始化红外遥控
lcd.init(); // initialize the lcd
lcd.backlight(); //Open the backlight
lcd.print(" Welcome to "); // Print a message to the LCD.
lcd.setCursor(0,1); //newline
lcd.print(" Shooting ");// Print a message to the LCD
}void loop() {lcd.backlight(); //Open the backlight
lcd.print(" Welcome to "); // Print a message to the LCD.
lcd.setCursor(0,1); //newline
lcd.print(" Shooting ");// Print a message to the LCD
if (irrecv.decode(&results)) {
if(results.value==16754775) //确认接收到的第一排按键1的编码,此码是预先读出来的按键编码。
{
stepper.step(60);
for (si=0; si<35; si=si+1 )
{
test = (si+1)*10;
led=test;
lcd.init(); // initialize the lcd
lcd.backlight(); //Open the backlight
lcd.print( "VR 360 Count " ); // Print a message to the LCD.
lcd.setCursor(0,1); //newline
lcd.print( led );// Print a message to the LCD
run=0;
delay(2000);
run=run+60;
stepper.step(run);//移动步数,正数为正转,负数为反转,2048刚好转一圈
delay(800);
myservo.write(180);delay(50);
myservo.write(90);
delay(1500);
lcd.init(); // initialize the lcd}}
else if(results.value==16761405) //确认接收到的第一排按键2的编码
{
lcd.init(); // initialize the lcd
lcd.backlight(); //Open the backlight
lcd.print( "VR 360 test " ); // Print a message to the LCD.
lcd.setCursor(0,1); //newline
lcd.print( 360 );// Print a message to the LCD
stepper.step(4056);
lcd.init(); // initialize the lcd}
irrecv.resume(); // 接收下一个值
}
}

把个模块转入DVD盒里(当让然我还是用上万能的双面胶);

成品.jpg (95.1 KB, 下载次数: 4)

下载附件

保存到相册

2015-7-10 12:42 上传

用联轴器吧步进电机和dvd碟片连接起来,这样就大功告成了。

完工.jpg (78.98 KB, 下载次数: 4)

下载附件

保存到相册

2015-7-10 12:42 上传

遥控、.jpg (80.85 KB, 下载次数: 4)

下载附件

保存到相册

2015-7-10 12:42 上传

来看看效果旋转测试
拍照

未标题-1.gif (64.58 KB, 下载次数: 8)

下载附件

保存到相册

2015-7-10 12:54 上传

标签: Arduino教程