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?
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?
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.
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.