延时摄影

来自Microduino Wikipedia
跳转至: 导航搜索
Language English

目的

使用红外发射传感器延时发送红外信号,控制SONY相机拍照。达到延时摄影目的。

实验一:系统延时发送

设备

模块 数量 功能
mCookie-CoreUSB/zh 1 核心板
mCookie-Hub/zh 1 传感器转接板
Microduino-IR Emitter/zh 1 红外发送传感器
  • 其他设备
    • USB数据线*1
    • 传感器连接线*1

准备

  • Setup 1:将IR transmitter传感器接口和Hub的数字口(D6)接起来,不可更改,只能用这个口。
  • Setup 2:将CoreUSB,Hub,IR transmitter连接在一起。通过USB数据线将接入电脑。

调试

  • 打开Arduino IDE,将下列代码复制到IDE中。
#include <IRremote.h>

#define PHOTO 0xB4B8F

IRsend irsend;


void setup() {
  Serial.begin(115200);
  pinMode(6, OUTPUT);
}

void loop() {
  for (int i = 0; i < 3; i++)
  {
    irsend.sendSony(PHOTO, 20); // Sony code
    delay(12);
  }
  delay(5000);
}
  • 选择正确的板卡和COM端口,编译通过后直接下载。
Upload.JPG
  • 打开相机,将模式设置成遥控器模式
  • 将红外发送传感器对准相机,每隔5S会发送红外信号,红外传感器上的led指示灯亮,同时可以听到相机咔的一声。
  • 将延时拍照的图片做成gif图效果很棒。

程序调试

  • 采用了“IRremote”红外库来支持红外的发送和接收。
  • “#define PHOTO 0xB4B8F”定义了sony相机的红外信号值。
  • 更改延时时间”delay(5000)”表示5S。

实验二:按键控制拍照

设备

模块 数量 功能
mCookie-CoreUSB/zh 1 核心板
mCookie-Hub/zh 1 传感器转接板
Microduino-IR Emitter/zh 1 红外发送传感器
Microduino-Crash/zh 1 碰撞传感器
  • 其他设备
    • USB数据线*1
    • 传感器连接线*1

搭建硬件

  • Setup 1:将红外发射传感器接到Hub的D6引脚上,碰撞传感器接到Hub的D8引脚上。
  • Setup 2:将CoreUSB,Hub,IR transmitter,Crash连接在一起。通过USB数据线接入电脑。

软件调试

  • 打开Arduino IDE,将下列代码复制到IDE中。
#include <IRremote.h>

#define PHOTO 0xB4B8F

IRsend irsend;

#define pushButton  8

int buttonState, num;

void setup() {
  Serial.begin(115200);
  pinMode(6, OUTPUT);
  pinMode(pushButton, INPUT);
}

void loop() {
  buttonState = digitalRead(pushButton);
  if (num != buttonState)
  {
    num = buttonState;
    if (num == 0)
    {
      take();
      Serial.println("take");
    }
  }
}

void take()
{
  for (int i = 0; i < 3; i++)
  {
    irsend.sendSony(PHOTO, 20); // Sony code
    delay(12);
  }
}
  • 结果:将红外发射传感器对准SONY相机的红外接收头,在设置SONY相机为遥控模式,按下按键, SONY相机拍照一次。

程序说明

  • 按下的时候是从“1”变到“0”,松开的时候是从“0”变到“1”,采用数据有变化的时候进行判断,然后检测当前值就可判断是按下还是松开,按下就拍照。
buttonState = digitalRead(pushButton);
  if (num != buttonState)
  {
    num = buttonState;
    if (num == 0)
    {
      take();
      Serial.println("take");
    }
  }
  • “!=”表示不等于,当按下值有变化时候才执行。

视频