Bird Proof Squirrel Feeder & Solar Powered Camera (8 / 9 steg)
Steg 8: Programmera Arduino UNO
Innehållet i "SquirrelFeedCam.ino" att programmera Arduino UNO.
BÖRJA KOPIERA NEDAN HÄR
/**
Ekorre Feeder skript
Gör en strömbrytare att driva på en kamera och ta bilden, sedan vänta
att växla staten ta mer bilder och makt sedan ändra till
av en kamera.
Eftersom kameran inte kan ta bilder medan den laddas,
vi satt dessutom kameran att ladda / inte ut
När inte tar / ta foton respektive.
Denna exempelkod är offentlig.
*/
Ställ in ständiga hänvisningar till arduino pins som används
/ ** Används för att hantera kameran laddning
*/
CONST int GROUND_PIN = 6; Negitive makt från kamera
CONST int CHARGE_PIN = 7. Positiv kraft från kamera
/ ** Används för att ta itu med Bypass kamera Buttona
*/
CONST int POWER_PIN = 8; Kamera Power knappen Bypass
CONST int TRIGGER_PIN = 9; Trigger knappen Bypass
/ ** Används för att ta itu med lock Switch
*/
CONST int SWITCH_PIN = 10; Feeder lock Switch
/ ** Byta normalt öppen eller normalt sluten för locket Switch
*/
CONST int OFF = 0;
CONST int å = 1;
int lastSwitchState = OFF;
int currentSwitchState = OFF;
/ ** Installationen rutinen körs en gång när du trycker på reset:
*/
void setup() {
Serial.BEGIN(9600);
initiera digital PIN-koden som en utgång. LastState
pinMode (GROUND_PIN, OUTPUT);
pinMode (CHARGE_PIN, OUTPUT);
pinMode (POWER_PIN, OUTPUT);
pinMode (TRIGGER_PIN, OUTPUT);
pinMode (SWITCH_PIN, indata);
digitalWrite (SWITCH_PIN, hög); Ansluta interna pull-up
digitalWrite (GROUND_PIN, låg); Detta stift används som marken, så att det alltid ska vara inställd på låg.
chargeCamera(true); Ställa in kameran att ladda batteriet på första starten.
}
/ ** Rutinen loop kör om och om igen för alltid:
*/
void loop() {
currentSwitchState = digitalRead(SWITCH_PIN); Sparandets förlopp till nuvarande tillstånd
Serial.println(currentSwitchState);
om (lastSwitchState! = currentSwitchState) {/ / jämföra nuvarande tillstånd till sist stat
lastSwitchState = digitalRead(SWITCH_PIN); Sparandets förlopp till sist stat
Serial.println(lastSwitchState);
om (currentSwitchState == ON) {
chargeCamera(false); Sluta ladda kameran så bilder kan tas
pressPowerButton();
takePicture();
takePicture();
takePicture();
} annat {
takePicture();
takePicture();
takePicture();
pressPowerButton();
chargeCamera(true); Ställ in kameran att ladda batteriet nu när gjort tar bilder
}
}
}
/**
Denna metod hanterar utlösa knappen kamera power att cykla det på/av
*/
int pressPowerButton() {
Serial.println ("trycka på knappen POWER...");
digitalWrite (POWER_PIN, hög); Att trycka på knappen power (HIGH är spänningsnivån)
Delay(3000); Vänta i 3 sekunder för att låta kameran tillräckligt med tid att sätta på
digitalWrite (POWER_PIN, låg); Släpper strömbrytaren (HIGH är spänningsnivån)
Delay(2000); Vänta 2 sekunder efter att ha släppt power-knappen innan du fortsätter
Serial.println ("tryckt på POWER knappen!");
}
/**
Denna metod hanterar utlösa kameran för att ta en bild och spara den
*/
int takePicture() {
Serial.println ("ta en bild...");
digitalWrite (TRIGGER_PIN, hög); Tryck på knappen utlösare (HIGH är spänningsnivån)
Delay(1500); 1,5 sekunder att låta kameran att bearbeta tar bilden
digitalWrite (TRIGGER_PIN, låg); Släpp knappen utlösare (HIGH är spänningsnivån)
Delay(1500); 1,5 sekunder att låta kameran att spara bilden
Serial.println ("tog en bild!");
}
/**
Denna metod hanterar laddning eller inte laddar kameran
*/
void chargeCamera(boolean setToCharge) {
om (setToCharge) {
digitalWrite (CHARGE_PIN, hög);
Serial.println ("START laddning...");
} annat {
digitalWrite (CHARGE_PIN, låg);
Serial.println ("STOP laddning...");
}
Delay(3000); Vänta 2 sekunder innan du fortsätter
}
STOPPA COPING ÖVER HÄR