Starra fæla

Starrar.

Byrjuðu sumarið á að gera sér hreiður í grillinu, hafa síðan vanið komur sínar á svalirnar í haust.

Svo eitthvað þarf til að fæla þá í burtu, því þetta eru friðaðir fuglar.

Skynjari með vælu sem fer í gang þegar þeir koma.

Efni til að búa þetta til, infrauður skynjari,væla,on/off rofi,9volta battery tengi,Atmega 168 og svo gott box utan um allt saman.

           

 

IMG 20141012 214023  IMG 20141012 214034   IMG 20141012 214248  IMG 20141012 214310

Starrinn kom og þetta fældi hann um leið. Spurning hvort hann eigi eftir að venjast þessu ?

Kóðin fengin héðan og þaðan.

 

int ledPin = 13;                // Pinni 13 fyrir LED 
int inputPin = 2;               // Ir sensorinn
int pirState = LOW;             // byrja a engri hreyfingu
int val = 0;                    // til ad lesa stodu ir
int pinSpeaker = 10;           //vælan

void setup() {
  pinMode(ledPin, OUTPUT);      // stilla led sem output
  pinMode(inputPin, INPUT);     // stilla ir sem input
  pinMode(pinSpeaker, OUTPUT);
  Serial.begin(9600);
}

void loop(){
  val = digitalRead(inputPin);  // lesa gildi á input
  if (val == HIGH) {            // athuga hvort input sé 1
    digitalWrite(ledPin, HIGH);  // kveikja á led
    playTone(300, 160);
    delay(150);

    
    if (pirState == LOW) {
      // vælan fer gang
      Serial.println("hreyfing!");
      // sendum stoduna í serial
      pirState = HIGH;
    }
  } else {
      digitalWrite(ledPin, LOW); // slokkva á led
      playTone(0, 0);
      delay(300);    
      if (pirState == HIGH){
      // slökka á vælu
      Serial.println("engin hreyfing!");
      // sendum stoduna á serial
      pirState = LOW;
    }
  }
}
// tími vælu í mSecs, tíðni í hertz
void playTone(long duration, int freq) {
    duration *= 1000;
    int period = (1.0 / freq) * 1000000;
    long elapsed_time = 0;
    while (elapsed_time < duration) {
        digitalWrite(pinSpeaker,HIGH);
        delayMicroseconds(period / 2);
        digitalWrite(pinSpeaker, LOW);
        delayMicroseconds(period / 2);
        elapsed_time += (period);
    }
}