kurz das übliche - ich bin Anfänger mit Arduino und Elektronik, seit Erwerb eines Uno-Einsteigerkastens aber schwer begeistert. Hab mich grad auf ein ganz "einzigartiges" Projekt eingeschossen LED-Strip mit Uhr und Bewegungsmelder für unters Bett Dabei will ich aber nicht nur stumpf was nach Anleitung aus dem Netz zusammenstecken und cut&paste betreiben, sondern selber was schreiben und bauen.
So komme ich nun zu meiner Frage - meine Sketch und Schaltung funktioniert soweit ganz gut und wie gewünscht. Nun habe ich einen passiven Buzzer dazugehängt - Pin 11 an Uno und Masse mit auf Breadboard. Funktioniert soweit auch - aber:
Selbst wenn über die Sketch keine Ausgabe am Buzzer erzeugt wird, habe ich einen Grundton-Dauerton (sehr leise) auf dem Buzzer. So lange, biss ich die Masse von Breadboard auf ne Masse am Uno umstecke. Dann ist Stille. Also vermute ich irgendwie nen Grundrauschen in meiner Schaltung - auch reagiert der Bewegungsmelder etwas unzuverlässig (kann da auch damit zusammenhängen?).
Was kann man gegen das Grundrauschen machen? Mit Abblockkondesatoren habe ich mich schon belesen - das scheint mir aber nicht das richtige zu sein / wo soll ich den hier hinstecken?
Tips sind willkommen. Herzlichen Dank für Hilfe bei meinem aktuellen Lieblingshobby
Gemeinsamer GND ist schonmal immer richtig, aber:
Ein simpler Piezo-Lautsprecher gibt "von sich aus" keinen Ton von sich. Auch wenn da irgend etwas frei floaten würde.
Zur Klarstellung evtl: Was ist ein "passiver Buzzer" ?
Aktuell verstehe ich das nicht... hier muss ich weiter raten
Vielleicht liest du das ganze nochmal durch und verstehst unsere Verwirrung, Victor ?
N'Abend zusammen und danke für die rege Anteilnahme! Habe mich wohl für das richtige Board entschieden.
Da ich vorhin Fritzing entdeckt habe un ich es eh mal ausprobieren wollte, habe ich mein Breadboard grad mal abgepaust (hier im Anhang). Exakt so sieht es im Moment aus. Es funktioniert auch alles.
RGB-LED zeigt Tag/Nacht Modus an
Grüne-LED zeigt Bewegung an
LED-Kette ist noch nicht eingearbeitet, muss mich noch mit Mosfets (?) beschäftigen
Ich habe aber eben einen leisen Dauerton auf dem Buzzer (Piezo?) - wenn ich den GND des Buzzer aber auf den Uno stecke (z.B. neben Pin13), ist Ruhe un es funktioniert trotzdem alles.
@michael_x - ja verstehe ich. Sorry. Jetzt besser? Und Buzzer heisst das Ding (Piezo?) aus meinem Starter-Kit (The most complete Starter-Kit, Elegoo)
Hi,
Wenn dein Schaltplan so ist wie deine tatsächliche Verdrahtung hast Du nen Fehler bei der I2C. da schaltest Du SDA vom UNO auf SCL des RTC-Modules und SCL vom UNO auf SDA des RTC. Bei I2C sind die Leitungen 1:1. also SDA auf SDA und SCL auf SCL zu verbinden.
Vielleicht werden die Störungen (das Rauschen) ja auch dadurch verursacht?
Weiteres ist nur im geheimen Sketch zu finden. Bin aber weder Detektiv, noch arbeite ich beim Geheimdienst. Und meine Glaskugel ist grad in Reparatur.
Oh, ja - ist aber "nur" auf dem Plan falsch. Habe ich falsche gezeichnet. War ja mein erster Versuch 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.
#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);
}