"Rauschen" auf passivem Buzzer / Anfängerfrage ;)

@HotSystems

ja, bin ich ....

@Deltaflyer

Oh, ja - ist aber "nur" auf dem Plan falsch. Habe ich falsche gezeichnet. War ja mein erster Versuch :wink: Sketch ist natürlich nicht geheim - da ich absoluter Anfänger bin, habe ich dem zu diesem Problem nicht so viel Bedeutung zugemessen. Hier jetzt im Anhang, auch wenn da noch so gut wie nix passiert - Feedback und Tips erbeten - ist ja mein erster. :wink:

#include <math.h>
#include <Dusk2Dawn.h>
#include <RtcDS3231.h> 
#include <time.h> 
#include <Wire.h>


#define DS3231
#define MY_TIMEZONE 1
#define myWire TwoWire
#define I2C Wire
RtcDS3231<myWire> Rtc(I2C);

const int BLUE = 10;      // Pin für RGB-LED
const int GREEN = 5;      // Pin für RGB-LED
const int RED = 6;        // Pin für RGB-LED
const int PIR_PIN = 7;    // Pin Daten vom HC-S501 Bewegungs-Sensor
const int MOTION_LED = 9; // Pin für die Bewegungs-Kontroll-LED


int sr = 0;  // Sonnenaufgang in Minuten ab Mitternacht
int ss = 0;  // Sonnenuntergang in Minuten ab Mitternacht

Dusk2Dawn position(53.8666, 10.6848, 1);

void setup()
{
  Serial.begin(9600);

  Rtc.Begin();
  set_zone(MY_TIMEZONE);

  // ### PIN Modes
  pinMode(RED, OUTPUT);
  pinMode(GREEN, OUTPUT);
  pinMode(BLUE, OUTPUT);
  pinMode(MOTION_LED, OUTPUT);
  pinMode(PIR_PIN, INPUT);
  // ### LEDs aus
  analogWrite(RED, 0);
  analogWrite(GREEN, 0);
  analogWrite(BLUE, 0);
  analogWrite(MOTION_LED, 0);

  // Sonnenaufgang / Sonnenuntergang
  time_t start = Rtc.GetTime(); 
  struct tm *myTm;              
  myTm = localtime(&start);     
  sr = position.sunrise(myTm->tm_year, myTm->tm_mon + 1, myTm->tm_mday, myTm->tm_isdst);
  ss = position.sunset(myTm->tm_year, myTm->tm_mon + 1, myTm->tm_mday, myTm->tm_isdst);

  // Beep
  tone(11, 500, 200);
}

// main loop
void loop()
{
  // brechne Zeit seit Mitternacht lokal in Minuten
  time_t now = Rtc.GetTime();
  struct tm *myTm;
  myTm = localtime(&now);
  int todaysMins = ((myTm->tm_hour * 60) + myTm->tm_min);

  if ((todaysMins < sr) || (todaysMins > ss))
  {
    analogWrite(RED, 16);
    analogWrite(GREEN, 0);
    analogWrite(BLUE, 0);
  }
  else
  {
    analogWrite(RED, 128);
    analogWrite(GREEN, 32);
    analogWrite(BLUE, 0);
  }

  if (digitalRead(PIR_PIN) == 1)
  {
    analogWrite(MOTION_LED, 16);
  }
  else
  {
    analogWrite(MOTION_LED, 0);
  }
  delay(100);
}