ESP8266 -->Buzzer hört nicht auf zu Buzzern

Hi zusammen,

ich habe einen Low-Level_Trigger-Buzzer (YL-44) gekauft und diesen folgendermaßen angeschlossen:

VCC --> 3V
I/O --> D4
GND --> GND

Folgenden Sketch habe ich hochgeladen:

int frequency=1000; 
int buzzPin=2; 
int timeOn=1000; 
int timeOff=1000; 

void setup() {
  pinMode(buzzPin, OUTPUT); 
  tone(buzzPin, frequency);
  delay(timeOn);
  noTone(buzzPin);
  delay(timeOff);
}

void loop() {
  delay(500);
}

Ergebnis:
Der Buzzer gibt einen tiefen Ton von sich, danach einen hohen und hört dann nicht mehr auf.
D.h. das Kommando "NoTone" scheint ihn nicht wirklich zu jucken.

Ich habe als I/O auch schon D3 probiert, gleiches Ergebnis.
Hat jemand eine Idee, wie ich das Ertönen des Buzzers unterbrechen kann?

Beste Grüße
Daniel

Dann zeige doch mal einen Link des Buzzers, den du gekauft hast.

https://www.amazon.de/gp/product/B07D3NYCDV/ref=ppx_yo_dt_b_search_asin_title?ie=UTF8&psc=1

Da steht nur eine Chinesische Beschriftung drauf, aber im Prinzip ist es ja der Buzzer aus diesem Tutorial:

Zumindest sieht der genauso aus.

Den Code hier hab ich grad auch probiert mit genau dem selben Ergebnis:


int buzzPin=0; 


void setup() {
  pinMode(buzzPin, OUTPUT);
  playTone(1000, 1000);
}

void loop() {
  delay(500);
}

void playTone(long duration, int freq) {
    duration *= 1000;
    int period = (1.0 / freq) * 1000000;
    long elapsed_time = 0;
    while (elapsed_time < duration) {
        digitalWrite(buzzPin,HIGH);
        delayMicroseconds(period / 2);
        digitalWrite(buzzPin, LOW);
        delayMicroseconds(period / 2);
        elapsed_time += (period);
    }
}

Wie wir in Franken sagen würden:
Der Gribbl hört ned auf zum Piepen.

Es ist auch kein passiver Buzzer.

INTERNE OSZILLIERENDE QUELLE. Es wird solange Alarm geben, wie es aktiviert ist.

Der wird nicht so funktionieren.

Ja, den Satz hab ich auch gelesen...aber ich dachte halt, dass damit gemeint ist, dass der solange Piepst, bis man ihn "softwaremäßig" deaktiviert (also z.B. eben mit noTone()).

D.h. es gibt keine Möglichkeit, das Ding zum Schweigen zu bringen außer deepSleep?

Nee, da der selbst aktiv ist.
Und manches mal sollte man schon glauben, was da steht.

Aber du kannst es versuchen, indem du den Pin auf "LOW" schaltest.

Hast du einen Tipp für einen richtig lauten Buzzer, den ich softwaremäßig ein und ausschalten kann? Ich hab mit auch diese hier mal bestellt

Aber die sind so leise, da würde ich nicht mal aus einem Mittagsnickerchen aufwachen;-)

Die kannst Du auch nicht direkt an einem ESP8266 GPIO betreiben. Die brauchen 5V und mehr Strom als ein GPIO liefern kann. Da musst Du eine Treiberstufe (Transistor) dazwischenschalten.

Also richtig laute gibt es nur als "aktive". Die brauche auch eine meist höhere Spannung und auch mehr Strom, als die ein Pin liefern kann. Und die erzeugen eine feste Tonfrequenz.

Den solltest Du mit dem GPIO ein- und ausschalten können. Aber nicht mit tone(), sondern einfach mit digitalWrite().

Wie gessagt: Das hier hab ich bereits getestet:

Hat auch nicht funktioniert.
D.h. es ist anscheined echt so, dass man das Ding nur mit einem deepSleep zum Schweigen bringt, was ich auch seltsam finde. Denn Einschalten kann ich den ja auch per digitalWrite().
Es muss doch dann auch möglich sein, den Saft abzudrehen, so dass das Ding genau wie vor dem Einschalten still ist.

Wie schon gesagt, du sollst keine "Frequenzen" generieren.
Weder mit tone() noch mit einer eigenen Erfindung!


const byte buzzPin = 0;

void setup()
{
  pinMode(buzzPin, OUTPUT);
}


void loop()
{
  digitalWrite(buzzPin, HIGH);
  delay(1000);
  digitalWrite(buzzPin, LOW);
  delay(1000);
}

Zumindest solltest du es so mal probieren, wenn du denn den inneren Aufbau deines Buzzer Boards nicht ganz ignorieren möchtest.

Funktioniert, saucool! Danke.

Naja, so würd ichs jetzt auch nicht sagen.
Der Buzzer hier sieht halt meinem schon verblüffend ähnlich:

Mein Fehler war, dass ich das mit dem Passiv überlesen hatte.
Und als unerfahrener User stürzt man sich dann natürlich erstmal da drauf.

Aber so funktionierts ja jetzt super.
Also danke nochmal für deine Geduld und einen schönes Wochenende euch allen.

Allerdings sollte man auch alles lesen, wenn man hier schon fragt.

Schön, dass es funktioniert!

Dazu kann ich dir Tipps geben:

  1. Keine Irrtümer rechtfertigen, Einsicht und Besserung ist voll ausreichend.
  2. Vorsicht: Wenn es aussieht wie eine Ente, und quakt wie ein Ente, dann könnte es auch ein Donald Trump sein.

This topic was automatically closed 120 days after the last reply. New replies are no longer allowed.