“延时摄影”的版本间的差异

来自Microduino Wikipedia
跳转至: 导航搜索
(Created page with "{{Language| 延时摄影}} {| style="width: 800px;" |- | ==目的== 利用按键设置延时时间,设置完后延时一段时间控制SONY相机拍照。 ==原理== 通过...")
 
第4行: 第4行:
 
|
 
|
 
==目的==
 
==目的==
利用按键设置延时时间,设置完后延时一段时间控制SONY相机拍照。
+
使用红外发射传感器延时发送红外信号,控制SONY相机拍照。达到延时摄影目的。
  
==原理==
+
==实验一:系统延时发送==
通过检测按键次数设置延时时间,利用红外发射传感器发射红外信号控制SONY相机拍照。
+
===设备===
 +
{|class="wikitable"
 +
|-
 +
|模块||数量||功能
 +
|-
 +
|[[mCookie-CoreUSB/zh]]||1||核心板
 +
|-
 +
|[[mCookie-Hub/zh]]||1||传感器转接板
 +
|-
 +
| [[Microduino-IR transmitter/zh]]||1||红外发送传感器
 +
|}
 +
===准备===
 +
*Setup 1:将IR transmitter传感器接口和Hub的数字口(D6)接起来,不可更改,只能用这个口。
 +
[[file:mCookie-IR transmitter-sensor.JPG|600px|center]]
 +
*Setup 2:将CoreUSB,Hub,IR transmitter连接在一起。通过USB数据线将接入电脑。
 +
[[file:mCookie-IR transmitter-pc.JPG|600px|center]]
 +
===调试===
 +
*打开Arduino IDE,将下列代码复制到IDE中。
 +
<source lang="cpp">
 +
#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);
 +
}
 +
</source>
 +
*选择正确的板卡和COM端口,编译通过后直接下载。
 +
[[file:upload.JPG|400px|center]]
 +
*打开相机,将模式设置成遥控器模式
 +
[[file:sony-photo.JPG|400px|center]]
 +
*将红外发送传感器对准相机,每隔5S会发送红外信号,红外传感器上的led指示灯亮,同时可以听到相机咔的一声。
 +
*将延时拍照的图片做成gif图效果很棒。
 +
[[file:gif-photo.gif|400px|center]]
 +
 +
===程序调试===
 +
*采用了“IRremote”红外库来支持红外的发送和接收。
 +
*“#define PHOTO 0xB4B8F”定义了sony相机的红外信号值。
 +
*更改延时时间”delay(5000)”表示5S。
 +
 +
==实验二:按键控制拍照==
 
==设备==
 
==设备==
 
{|class="wikitable"
 
{|class="wikitable"
第14行: 第66行:
 
|模块||数量||功能
 
|模块||数量||功能
 
|-
 
|-
|[[Microduino-CoreUSB/zh]]||1||核心板
+
|[[mCookie-CoreUSB/zh]]||1||核心板
 
|-
 
|-
|[[Microduino-Sensorhub/zh]]||1||传感器转接板
+
|[[mCookie-Hub/zh]]||1||传感器转接板
 
|-
 
|-
 
| [[Microduino-IR transmitter/zh]]||1||红外发送传感器  
 
| [[Microduino-IR transmitter/zh]]||1||红外发送传感器  
第22行: 第74行:
 
| [[Microduino-Crash/zh]]||1||碰撞传感器
 
| [[Microduino-Crash/zh]]||1||碰撞传感器
 
|}
 
|}
 +
 
  [[File:IR_Crash.jpg|600px|center|thumb]]
 
  [[File:IR_Crash.jpg|600px|center|thumb]]
 
  
 
==搭建硬件==
 
==搭建硬件==
*Setup 1:将CoreUSB与Sensorhub叠堆。
+
*Setup 1:将红外发射传感器接到Hub的D6引脚上,碰撞传感器接到Hub的D8引脚上。
[[File:CoreUSB_Sensorhub.jpg|600px|center|thumb]]
+
[[file:mCookie-IR transmitter-pc.JPG|600px|center]]
*Setup 2:将红外发射传感器接到Sensorhub的D8引脚上,碰撞传感器接到Sensorhub的D2引脚上。
+
*Setup 2:将CoreUSB,Hub,IR transmitter,Crash连接在一起。通过USB数据线接入电脑。
[[file:Microduino-sensorhub_rule.JPG|thumb|800px|center]]
+
[[file:mCookie-IR transmitter-crash-pc.JPG|600px|center]]
[[File:ir_transmitter.jpg|600px|center|thumb]]
 
  
 
==软件调试==
 
==软件调试==
*红外遥控编码定义,此处采用SONY编码格式
+
*打开Arduino IDE,将下列代码复制到IDE中。
 
<source lang="cpp">
 
<source lang="cpp">
 +
#include <IRremote.h>
  
#define PHOTO 0xB4B8F     //SONY相机拍照编码
+
#define PHOTO 0xB4B8F
#define KEY 2            //按键接口
 
  
boolean keyFlag = false;  //按键标志位
+
IRsend irsend;
unsigned long timeFlag = 0;  //时间标志
 
int delayTime = 0;
 
  
IRsend irsend;
+
#define pushButton  8
</source>
+
 
[[File:Microduino_photo_ir.png||300px|center|thumb]]
+
int buttonState, num;
*判断按键的次数,在最后一次按键后1s内没检测到下次按键,就认为按键结束。然后根据按键的次数在延时相应的时间后,发送拍照编码,控制相机拍照。
+
 
<source lang="cpp">
+
void setup() {
   if((millis()> timeFlag+1000)&&delayTime>0)     //判断按键超时,1s内没检测到按键说明按键结束
+
  Serial.begin(115200);
 +
  pinMode(6, OUTPUT);
 +
  pinMode(pushButton, INPUT);
 +
}
 +
 
 +
void loop() {
 +
  buttonState = digitalRead(pushButton);
 +
   if (num != buttonState)
 
   {
 
   {
     delay(delayTime*1000);                     //根据按键次数设置延时
+
     num = buttonState;
     for (int i = 0; i < 3; i++)  
+
     if (num == 0)
 
     {
 
     {
       irsend.sendSony(PHOTO, 20);               //发送拍照指令
+
       take();
       delay(10);
+
       Serial.println("take");
 
     }
 
     }
    Serial.println("take photo");
 
    delayTime = 0;
 
 
   }
 
   }
 
+
}
   if(keyFlag==false && digitalRead(KEY)==LOW)   //判断按键按下
+
 
 +
void take()
 +
{
 +
   for (int i = 0; i < 3; i++)
 
   {
 
   {
     keyFlag = true;
+
     irsend.sendSony(PHOTO, 20); // Sony code
 +
    delay(12);
 
   }
 
   }
  else if(keyFlag==true && digitalRead(KEY)==HIGH)   //判断按键松开,此时判断成一次按键
+
}
 +
</source>
 +
 
 +
*结果:将红外发射传感器对准SONY相机的红外接收头,在设置SONY相机为遥控模式,按下按键, SONY相机拍照一次。
 +
===程序说明==
 +
*按下的时候是从“1”变到“0”,松开的时候是从“0”变到“1”,采用数据有变化的时候进行判断,然后检测当前值就可判断是按下还是松开,按下就拍照。
 +
<source lang="cpp">
 +
buttonState = digitalRead(pushButton);
 +
  if (num != buttonState)
 
   {
 
   {
     delayTime++;                           //按键计数+1
+
     num = buttonState;
     timeFlag = millis();
+
     if (num == 0)
     keyFlag=false;
+
    {
 +
      take();
 +
      Serial.println("take");
 +
     }
 
   }
 
   }
  delay(100);
 
 
</source>
 
</source>
 
+
*“!=”表示不等于,当按下值有变化时候才执行。
==程序==
 
[[https://github.com/Microduino/Microduino_Tutorials/tree/master/MCookie_Tutorial/MicroduinoDelayPhoto MicroduinoDelayPhoto]]
 
 
 
==结果==
 
将红外发射传感器对准SONY相机的红外接收头,在设置SONY相机为遥控模式,连续按n次按键,然后等待n秒钟后,SONY相机拍一次照。
 
 
 
 
==视频==
 
==视频==
  
 
|}
 
|}

2015年10月28日 (三) 05:18的版本

Language English

目的

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

实验一:系统延时发送

设备

模块 数量 功能
mCookie-CoreUSB/zh 1 核心板
mCookie-Hub/zh 1 传感器转接板
Microduino-IR transmitter/zh 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 transmitter/zh 1 红外发送传感器
Microduino-Crash/zh 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");
    }
  }
  • “!=”表示不等于,当按下值有变化时候才执行。

视频