延时摄影

来自Microduino Wikipedia
Hustshenyang@126.com讨论 | 贡献2015年7月19日 (日) 09:57的版本 (Created page with "{{Language| 延时摄影}} {| style="width: 800px;" |- | ==目的== 利用按键设置延时时间,设置完后延时一段时间控制SONY相机拍照。 ==原理== 通过...")
(差异) ←上一版本 | 最后版本 (差异) | 下一版本→ (差异)
跳转至: 导航搜索
Language English

目的

利用按键设置延时时间,设置完后延时一段时间控制SONY相机拍照。

原理

通过检测按键次数设置延时时间,利用红外发射传感器发射红外信号控制SONY相机拍照。

设备

模块 数量 功能
Microduino-CoreUSB/zh 1 核心板
Microduino-Sensorhub/zh 1 传感器转接板
Microduino-IR transmitter/zh 1 红外发送传感器
Microduino-Crash/zh 1 碰撞传感器


搭建硬件

  • Setup 1:将CoreUSB与Sensorhub叠堆。
  • Setup 2:将红外发射传感器接到Sensorhub的D8引脚上,碰撞传感器接到Sensorhub的D2引脚上。
Microduino-sensorhub rule.JPG

软件调试

  • 红外遥控编码定义,此处采用SONY编码格式
#define PHOTO 0xB4B8F     //SONY相机拍照编码
#define KEY 2             //按键接口

boolean keyFlag = false;  //按键标志位
unsigned long timeFlag = 0;   //时间标志
int delayTime = 0;

IRsend irsend;
  • 判断按键的次数,在最后一次按键后1s内没检测到下次按键,就认为按键结束。然后根据按键的次数在延时相应的时间后,发送拍照编码,控制相机拍照。
  if((millis()> timeFlag+1000)&&delayTime>0)     //判断按键超时,1s内没检测到按键说明按键结束
  {
    delay(delayTime*1000);                      //根据按键次数设置延时
    for (int i = 0; i < 3; i++) 
    {
      irsend.sendSony(PHOTO, 20);               //发送拍照指令
      delay(10);
    }
    Serial.println("take photo"); 
    delayTime = 0; 
  }
  
  if(keyFlag==false && digitalRead(KEY)==LOW)   //判断按键按下
  {
    keyFlag = true;
  }
  else if(keyFlag==true && digitalRead(KEY)==HIGH)    //判断按键松开,此时判断成一次按键
  {
    delayTime++;                            //按键计数+1
    timeFlag = millis();
    keyFlag=false;
  }
  delay(100);

程序

[MicroduinoDelayPhoto]

结果

将红外发射传感器对准SONY相机的红外接收头,在设置SONY相机为遥控模式,连续按n次按键,然后等待n秒钟后,SONY相机拍一次照。

视频