最近遇到一个头痛的项目,拍摄商品360度图片,大批的小商品加上每个商品都要拍36张图,手动拍摄实在是要命呀。赶快想办法!
突然想起这个应该可以搞定我的苦难吧! 话不多准备材料: Arduino NANO X 1 航拍用相机红外遥控模块 X 1 红外遥控模块加遥控器 X 1 IC2 液晶显示屏 X 1 步进电机加控制板 X 1 连轴器 X 1 DVD盒 X1 DVD X1
配件准备好开工吧!
现在DVD盒的上盖开口;
如图将步进电机装入DVD盒;
在dvd碟片背面装一块圆的背板,用于连接联轴器,(之间用双面胶粘起,哈哈);
按照图中连接方法把个模块连接起来;
连接电脑上载程序(程序自己乱写的,高手勿喷);
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 display
int 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盒里(当让然我还是用上万能的双面胶);
用联轴器吧步进电机和dvd碟片连接起来,这样就大功告成了。
来看看效果 旋转测试
拍照
|