Как запустить съёмку ArduCAM по внешнему сигналу датчика
У шилда ArduCAM 6 линий ввода-вывода общего назначения: их можно настроить как входы или выходы, и они заметно расширяют возможности платы Arduino с её ограниченным числом выводов. Линии ввода-вывода шилда ArduCAM устроены так же, как в микроконтроллере AVR: есть регистр направления (DDR), входной регистр (PIN) и выходной регистр (PORT). Ниже показано, как настроить GPIO шилда ArduCAM на вход и запускать съёмку по сигналу ПИК-датчика (PIR).
ПИК-датчик (PIR, пироэлектрический инфракрасный датчик) — датчик движения для охранной сигнализации, контроля присутствия посетителей, выключателей света и роботов. Он реагирует на движение и почти всегда служит для того, чтобы определить, вошёл ли человек в зону действия датчика или вышел из неё. Такие датчики маленькие, недорогие, экономичные, простые в использовании и не изнашиваются, поэтому их часто ставят в бытовые и офисные устройства. Их называют PIR-датчиками, пассивными инфракрасными, пироэлектрическими или ИК-датчиками движения. После подачи питания подождите 1–2 секунды, пока датчик «запомнит» неподвижную комнату. Если после этого что-то сдвинется, на выводе «alarm» установится высокий уровень. ПИК-датчиком можно запускать съёмку сцены шилдом ArduCAM.

Схема соединения ArduCAM и ПИК-датчика. В этом примере к модулю ПИК-датчика подключён вывод IO0.

Прошивка:
В функции setup() настройте GPIO на вход:
void setup()
{
myCAM.write_reg( ARDUCHIP_DDR, 0x00);
}
В функции loop() опрашивайте состояние GPIO и начинайте съёмку, когда сработал ПИК-датчик:
void loop()
{
...
while(1)
{
gpio_trig = myCAM.read_reg(ARDUCHIP_PIN); //Read external trigger from GPIO0~5
if (gpio_trig & 0x01) //if GPIO0 is high
{
k = k + 1;
itoa(k, str, 10);
strcat(str,".bmp"); //Generate file name
GrabImage(str);
}
}
...
}
Полный код для Arduino можно скачать здесь.


