“延时摄影”的版本间的差异
(Created page with "{{Language| 延时摄影}} {| style="width: 800px;" |- | ==目的== 利用按键设置延时时间,设置完后延时一段时间控制SONY相机拍照。 ==原理== 通过...") |
853387039@qq.com(讨论 | 贡献) |
||
第4行: | 第4行: | ||
| | | | ||
==目的== | ==目的== | ||
− | + | 使用红外发射传感器延时发送红外信号,控制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行: | ||
|模块||数量||功能 | |模块||数量||功能 | ||
|- | |- | ||
− | |[[ | + | |[[mCookie-CoreUSB/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 | + | *Setup 1:将红外发射传感器接到Hub的D6引脚上,碰撞传感器接到Hub的D8引脚上。 |
− | [[ | + | [[file:mCookie-IR transmitter-pc.JPG|600px|center]] |
− | *Setup | + | *Setup 2:将CoreUSB,Hub,IR transmitter,Crash连接在一起。通过USB数据线接入电脑。 |
− | [[file: | + | [[file:mCookie-IR transmitter-crash-pc.JPG|600px|center]] |
− | |||
==软件调试== | ==软件调试== | ||
− | * | + | *打开Arduino IDE,将下列代码复制到IDE中。 |
<source lang="cpp"> | <source lang="cpp"> | ||
+ | #include <IRremote.h> | ||
− | #define PHOTO 0xB4B8F | + | #define PHOTO 0xB4B8F |
− | |||
− | + | IRsend irsend; | |
− | |||
− | |||
− | + | #define pushButton 8 | |
− | + | ||
− | + | int buttonState, num; | |
− | + | ||
− | + | void setup() { | |
− | if( | + | 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); | ||
} | } | ||
− | + | } | |
+ | </source> | ||
+ | |||
+ | *结果:将红外发射传感器对准SONY相机的红外接收头,在设置SONY相机为遥控模式,按下按键, SONY相机拍照一次。 | ||
+ | ===程序说明== | ||
+ | *按下的时候是从“1”变到“0”,松开的时候是从“0”变到“1”,采用数据有变化的时候进行判断,然后检测当前值就可判断是按下还是松开,按下就拍照。 | ||
+ | <source lang="cpp"> | ||
+ | buttonState = digitalRead(pushButton); | ||
+ | if (num != buttonState) | ||
{ | { | ||
− | + | num = buttonState; | |
− | + | if (num == 0) | |
− | + | { | |
+ | take(); | ||
+ | Serial.println("take"); | ||
+ | } | ||
} | } | ||
− | |||
</source> | </source> | ||
− | + | *“!=”表示不等于,当按下值有变化时候才执行。 | |
− | = | ||
− | |||
− | |||
− | |||
− | |||
− | |||
==视频== | ==视频== | ||
|} | |} |
2015年10月28日 (三) 05:18的版本
Language | English |
---|
目的使用红外发射传感器延时发送红外信号,控制SONY相机拍照。达到延时摄影目的。 实验一:系统延时发送设备
准备
调试
#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);
}
程序调试
实验二:按键控制拍照设备
搭建硬件
软件调试
#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);
}
}
=程序说明
buttonState = digitalRead(pushButton);
if (num != buttonState)
{
num = buttonState;
if (num == 0)
{
take();
Serial.println("take");
}
}
视频 |