Как решить проблему программно или аппаратно есть короткий импульс от 1 до 3 вольт. Скорость порядка 1/400с. как уловить этот импульс стандартно как кнопку максимально срабатывает на скорости 0,8с. В данный момент хочу попробовать на аналоговый вход подать. Посмотреть что получиться...
1/400 секунды -- это очень много. При тактовой частоте в 16МГц можно позволить себе достаточно редко опрашивать цифровой вход, чтобы поймать такой импульс. С цифровым входом скорее проблема с уровнем напряжения, но тут транзистор вам в помощь, его, думаю, 1/400 секунды тоже не смутит.
А подробней можно насчет транзистора? В смысле схему... У меня импульс поступает с горячего башмака зеркалки не спалю? Как то стремно экспериментировать... Я замерял с аналогово входа выдает 930 в режиме покоя при импульсе примерно 1000 не успевал рассмотреть точно вприцепе срабатывает но не совсем стабильно... Минусовой контакт притянул к земле на плюс с разьема синхронизатора РС подал 5 вольт.
Если напряжение в пике импульса не превышает 5 В, то 1. Соедините землю (минус питания) устройства с землей (минусом) Ардуино 2. Подайте импульсный сигнал на ногу Digital pin 2 3. Напишите код Код (Text): void setup() { pinMode(13, OUTPUT); attachInterrupt(0, blink, CHANGE); } void blink() { digitalWrite(13, HIGHT); digitalWrite(13, LOW); } Если в импульсе напряжение больше или равно 3В, светодиод L на Ардуине будет вспыхивать одновременно с импульсом. Открываем datasheet на МК ATMega 2560. Смотрим Table 31.1 DC Characteristics: для условий VCC = 2.4V - 5.5V параметр Min. Input High Voltage = 0.6 Vcc Затем читаем сноску (2): ""Min" means the lowest value where the pin is guaranteed to be read as high" Соответственно, 5В х 0.6 = 3 В Вспышки будут очень короткие, так как мы последовательно включаем/выключаем светодиод без задержки. В светлом помещении можете и не увидеть Тогда воспользуйтесь примером из первоисточника: http://arduino.cc/en/Reference/AttachInterrupt P.S. Не рекомендую вставлять задержку в функцию blink.
P.S. Не рекомендую вставлять задержку в функцию blink.[/quote] Проблема в том что у меня готовый код в нем используется задержка, а переписывать длинный код не хочется я над ним три месяца коптел я еще только изучаю язык програмирования.. На данный момент у меня выглядит так: Код (Text): int sensPin = 0; #define sunhr 940 void setup() { analogReference(DEFAULT); Serial.begin(9600); } void loop() { if (analogRead(sensPin) > sunhr) { Serial.println("Start Start Start Start"); delay(5); } Serial.println(analogRead(sensPin)); delay(5); }
Вы хотели посмотреть, что получится. Попробуйте стандартный пример attachInterrupt. Хотя бы для того, чтобы понять взаимодействие вашего устройства с Ардуиной через сигнал прерывания.
Подавайте на аналоговый, не мучайтесь с уровнями. Кстати: а надо ли Вам ловить весь импульс? Может, будет достаточно засечь его фронт и сразу начать реагировать? В чем суть проекта, если не секрет?
Да устройством управляет фотоаппарат через синхроконтакт Я поставил чтение от нуля в условие если больше 0 то... Просто до меня не сразу дошло что можно в аналог засунуть и глянуть через порт что будет