2016-04-01 3 views
0

Мне нужна помощь по устранению неполадок на этом, и я благодарю всех заблаговременно. Это небольшой эскиз Arduino, который должен послать ИК-импульс на мою камеру Sony через ИК-светодиод, чтобы запустить затвор и сделать снимок. В конечном итоге я планирую подключить его с помощью радиопередатчика, чтобы я мог снимать с дикой природы фотографии. Дело в том, что этот код работал красиво в прошлом, с датчиком движения и временным применением, как описано в http://multifunctionremote.blogspot.com/. Я не могу заставить его работать. Код и схема RF отлично работают в том смысле, что я получаю один Arduino, чтобы заказать еще один Arduino, чтобы мигать светодиодом, и поэтому вам не нужно беспокоиться об этом. Я просто не могу заставить ИК-светодиод активировать камеру. Код, который я использую, находится в конце этого. Схема чрезвычайно проста: ИК-светодиод подключается к контакту 8 и заземляется через резистор 220 Ом. Для любви к Богу это не работает, и я не могу понять, почему. Это устранение неполадок, которые я выполнил:Arduino IR Led не работает

-Проверьте камеру: она отлично работает с нативным, фирменным ИК-пультом, так что это не проблема -У меня переключили 3 разных ИК-светодиода, чтобы я не имел дело с дефект один. Я максимизировал выход с помощью резистора более низкого ома, 100 Ом. Я все равно проверяю светодиод, так как вы не можете видеть их мигающими, но я полагаю, что не могу получить 3 дефектных светодиода! -Схема работает, поскольку, когда я использую красный светодиод вместо ИК-светодиода, он мигает. Он мигает на правильной частоте? Не могу сказать. -Это Arduino неисправен? Я проверил все контакты, и они работают, и протестировали схему на двух разных контроллерах безрезультатно. Единственное, что изменилось с тех пор, как два года назад, когда все работало нормально, я использую версию IDE Arduino. Изменилось ли это в любом случае прошивка на контроллере, чтобы этот код больше не работал?

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 браслет (2400); delayMicroseconds (600); браслет (1200); delayMicroseconds (600); браслет (600); delayMicroseconds (600); браслет (1200); delayMicroseconds (600); браслет (1200); delayMicroseconds (600); браслет (600); delayMicroseconds (600); браслет (1200); delayMicroseconds (600); браслет (600); delayMicroseconds (600); браслет (600); delayMicroseconds (600); браслет (1200); delayMicroseconds (600); браслет (600); delayMicroseconds (600); браслет (1200); delayMicroseconds (600); браслет (1200); delayMicroseconds (600); браслет (1200); delayMicroseconds (600); браслет (600); delayMicroseconds (600); браслет (600); delayMicroseconds (600); браслет (600); delayMicroseconds (600); браслет (1200); delayMicroseconds (600); браслет (1200); delayMicroseconds (600); браслет (1200); delayMicroseconds (600); браслет (1200); delayMicroseconds (11000); браслет (2400); delayMicroseconds (600); браслет (1200); delayMicroseconds (600); браслет (600); delayMicroseconds (600); браслет (1200); delayMicroseconds (600); браслет (1200); delayMicroseconds (600); браслет (600); delayMicroseconds (600); браслет (1200); delayMicroseconds (600); браслет (600); delayMicroseconds (600); браслет (600); delayMicroseconds (600); браслет (1200); delayMicroseconds (600); браслет (600); delayMicroseconds (600); браслет (1200); delayMicroseconds (600); браслет (1200); delayMicroseconds (600); браслет (1200); delayMicroseconds (600); браслет (600); delayMicroseconds (600); браслет (600); delayMicroseconds (600); браслет (600); delayMicroseconds (600); браслет (1200); delayMicroseconds (600); браслет (1200); delayMicroseconds (600); браслет (1200); delayMicroseconds (600); браслет (1200); delayMicroseconds (11000);

+1

Это много чтения, слишком много ИМО. Обрежьте его и сформируйте абзацы ... –

ответ

0

} Я хотел бы проверить, чтобы убедиться, что delaymicroseconds() (все еще) Правильно работает с перебивает выключен.Кроме этого, я не вижу ничего, что могло бы существенно измениться.

Чтобы получить визуальную обратную связь относительно инфракрасного светодиода, вы можете поместить второй светодиод в ряд с ним и уменьшить значение резистора. Чтобы проверить ИК-светодиод, предположим, вы можете указать его на ИК-фототранзистор последовательно со светодиодом и резистором.

Чтобы проверить частоту, замените светодиод красным (или поместите его последовательно, как указано выше) и определите, как долго длится импульс pulseIR (1000000).

Теперь я ничего не могу придумать, если у вас нет доступа к осциллографу.

+0

Благодарю вас, я исследую проблему прерывания. –