我需要有关此问题的主要故障排除帮助,我提前感谢任何人。这是一个小的Arduino草图,应该通过IR LED向我的Sony相机发送IR脉冲,以触发快门并拍照。我最终计划将其与射频发射器连接,以便我可以从远处拍摄野生动物的照片。 问题在于,这段代码过去运行得很漂亮,运动传感器和时间推移应用程序如http://multifunctionremote.blogspot.com/所述。 我不能让它继续工作。 RF代码和电路工作正常,我得到一个Arduino订购另一个Arduino闪烁LED,所以你不需要为此烦恼。我再也无法让红外LED激活相机了。我正在使用的代码就是这样。电路非常简单:红外LED连接到引脚8,接地通过220欧姆电阻。对于上帝的爱,它不起作用,我无法弄清楚为什么。这是我做的故障排除:
- 检查相机:它与原生的品牌红外遥控器完美配合,所以这不是问题 - 我已经切换了3个不同的红外LED,以确保我没有处理有缺陷的红外LED。我通过使用较低的欧姆电阻(100欧姆)来最大化输出。我还很难检查LED,因为你看不到它们闪烁,但我想我不能得到3个有缺陷的LED! - 电路工作正常,因为当我使用红色LED而不是红外LED时,它会闪烁。它以正确的频率闪烁吗?我不能说。 - Arduino有缺陷吗?我检查了所有引脚,他们工作并在两个不同的控制器上测试电路无济于事。 自从两年前一切正常以来,唯一改变的是我正在使用的Arduino IDE版本。无论如何,这已经改变了控制器上的固件,因此这段代码不再起作用了吗?
int IRledPin = 8;
void setup() {
pinMode(IRledPin,OUTPUT);
}
void loop() {
SendChannelUpCode();
delay(3000);
}
void pulseIR(long microsecs) {
// This is the function dealing with the impulse frequency: we'll count down from the number of microseconds we are told to wait
cli(); // this turns off any background interrupts
while (microsecs > 0) {
// 38 kHz is about 13 microseconds high and 13 microseconds low
digitalWrite(IRledPin, HIGH); // this takes about 3 microseconds to happen
delayMicroseconds(9); // hang out for 10 microseconds
digitalWrite(IRledPin, LOW); // this also takes about 3 microseconds
delayMicroseconds(9); // hang out for 10 microseconds
// so 26 microseconds altogether
microsecs -= 26;
}
sei(); // this turns them back on
}
void SendChannelUpCode() {
//这是SONY NEX-7快门释放的代码 pulseIR(2400); delayMicroseconds(600); pulseIR(1200); delayMicroseconds(600); pulseIR(600); delayMicroseconds(600); pulseIR(1200); delayMicroseconds(600); pulseIR(1200); delayMicroseconds(600); pulseIR(600); delayMicroseconds(600); pulseIR(1200); delayMicroseconds(600); pulseIR(600); delayMicroseconds(600); pulseIR(600); delayMicroseconds(600); pulseIR(1200); delayMicroseconds(600); pulseIR(600); delayMicroseconds(600); pulseIR(1200); delayMicroseconds(600); pulseIR(1200); delayMicroseconds(600); pulseIR(1200); delayMicroseconds(600); pulseIR(600); delayMicroseconds(600); pulseIR(600); delayMicroseconds(600); pulseIR(600); delayMicroseconds(600); pulseIR(1200); delayMicroseconds(600); pulseIR(1200); delayMicroseconds(600); pulseIR(1200); delayMicroseconds(600); pulseIR(1200); delayMicroseconds(11000); pulseIR(2400); delayMicroseconds(600); pulseIR(1200); delayMicroseconds(600); pulseIR(600); delayMicroseconds(600); pulseIR(1200); delayMicroseconds(600); pulseIR(1200); delayMicroseconds(600); pulseIR(600); delayMicroseconds(600); pulseIR(1200); delayMicroseconds(600); pulseIR(600); delayMicroseconds(600); pulseIR(600); delayMicroseconds(600); pulseIR(1200); delayMicroseconds(600); pulseIR(600); delayMicroseconds(600); pulseIR(1200); delayMicroseconds(600); pulseIR(1200); delayMicroseconds(600); pulseIR(1200); delayMicroseconds(600); pulseIR(600); delayMicroseconds(600); pulseIR(600); delayMicroseconds(600); pulseIR(600); delayMicroseconds(600); pulseIR(1200); delayMicroseconds(600); pulseIR(1200); delayMicroseconds(600); pulseIR(1200); delayMicroseconds(600); pulseIR(1200); delayMicroseconds(11000); }
答案 0 :(得分:0)
我会检查以确保delaymicroseconds()(仍然)在关闭中断时正常工作。除此之外,我无法看到任何可能发生重大变化的事情。
要获得有关红外LED的视觉反馈,您可以将第二个LED与其串联,并降低电阻值。为了实际检查红外LED,我想你可以把它指向一个与LED和电阻串联的红外光电晶体管。
要检查频率,请将LED更换为红色(或如上所述将其与LED串联)并测量脉冲IR(1000000)脉冲的持续时间。
除非您可以使用示波器,否则我现在无法想到其他任何事情。