• Witaj na Forum Arduino Polska! Zapraszamy do rejestracji!
  • Znajdziesz tutaj wiele informacji na temat hardware / software.
Witaj! Logowanie Rejestracja


Ocena wątku:
  • 0 głosów - średnia: 0
  • 1
  • 2
  • 3
  • 4
  • 5
Fotopułapka do lustrzanki oparta na sensorach activ IR i arduino cz.2
#4
Spróbuj tego kodu:


Kod:
/*
* Fotopułapka DSLR AIR (active infrared) - 28/11/2019
*
*  Fotopułapka DSLR oparta na aktywnych czujnikach IR (infrared)(komplet: nadajnik/odbiornik) i adafruit pro trinket
* odbiornik active IR po wykryciu ruchu przechodzi w stan niski (LOW)
*
*/

// **** INCLUDES *****
#include "LowPower.h"  //dodaje biliotekę obsługującą zaawansowane tryby oszczędzenia energii

/*-----( Declare Constants )-----*/
#define IRsensor 3    // przewód sygnałowy z odbiornika AIR (active IR)wchodzi na pin 3 (jest to równoczesnie pin interrupt #1(INT1))
#define shutter  4    // wyjscie cyfrowe 4 poprzez transoptor 4n26 do wyzwolenia migawki
#define focus    8    // wyjscie cyfrowe 8 poprzez transoptor 4n26 do ustawienia ostrości

/*-----( Declare Variables )-----*/
int  detector_state;  // zmienna utrzymuje ostatni stan przełącznika
int trigger = 2;      // Ilość wykonanych zdjęć
int odliczanie = 5;  //zmienna odpowiedzialna za odliczanie czasu do uśpienia ATMegi

void setup()   /*----( SETUP: RUNS ONCE )----*/
{
  pinMode(LED_BUILTIN, OUTPUT);       //określa cyfrowy pin LED_BUILTIN jako wyjście
  digitalWrite(LED_BUILTIN, LOW);    // wyłącza diodę LED poprzez odcięcie napięcia (LOW)
  detector_state = 0;             
  pinMode (IRsensor, INPUT );
  pinMode (shutter, OUTPUT );
  pinMode (focus, OUTPUT );


  CLKPR = 0x80;
  CLKPR = 0x04;  // przetaktowanie z 16Mhz do 1Mhz Ważne: przetaktowanie nie ma wpływu na opisany problem - na standardowej prędkości 16Mhz jest dokładnie to samo

  Serial.begin(9600);
  delay(312); // aby zrekompensować underclocking z 16Mhz do 1Mhz należy podzielić rządany czas przez 16 - w tym przypadku 5000:16=312 (5sekund)
}
/*--(end setup)---*/

void  loop ()  /*----( LOOP: RUNS CONSTANTLY )----*/
{
  attachInterrupt(1, Budzenie, LOW);

  LowPower.powerDown(SLEEP_FOREVER, ADC_OFF, BOD_OFF);

  detachInterrupt(1);

   // tu robimy 2 zdjęcia
    for (int x = 0; x < 2; x++)  // ilość wykonanych zdjęć (w tym przypadku 2: zdjęcie 0 i zdjęcie 1)
    {
    digitalWrite (focus, HIGH );
    delay (7);                // czas opożnienia w tym wypadku 5x16 = 80ms
    digitalWrite (shutter, HIGH );
    delay (7);
    digitalWrite (focus, LOW );
    digitalWrite (shutter, LOW);
    delay (62);              // czas opożnienia 1 sek.
    }
 
  delay (7); // czekamy po 2 zdjęciach i idziemy spać jak nie ma na pinie 3 LOW
}

void Budzenie() 
{
   // tu nic nie robimy
}
 
Odpowiedź
  


Wiadomości w tym wątku
RE: Fotopułapka do lustrzanki oparta na sensorach activ IR i arduino cz.2 - przez Agregacik - 02-12-2019, 14:15

Skocz do:


Przeglądający: 1 gości