Sound stoppt nicht nach 1 Sekunde

Hallo zusammen,

warum bekomme ich keinen Ton ausgegeben?
Ich habe einen Lautsprecher an Pin 10 angeschlossen und der Serial monitor funktioniert auch gerade nicht.

#include <Adafruit_ADXL345_U.h> //einbinden der Adafriut Sensoren Bibliothek
#include <Adafruit_Sensor.h>    //einbinden der Adafruit ADXL 345 Bibliothek
Adafruit_ADXL345_Unified Sensor = Adafruit_ADXL345_Unified(); //Erstellen des Sensors mit dem Namen Sensor

//Definition für Sound an Port 10

#define sound 10
bool done = false;  // Variable zum merken ob die Sound ausgeführt wurde

void setup()
{
  Serial.begin(9600); //starten der seriellen Kommunikation mit 9600er Übetragung (Standard)
  pinMode(sound, OUTPUT); //Pin 10 als Ausgang definiert
  Sensor.begin();     //Starten des Sensors
}

// Sound zu einem bestimmten Wert

void loop()
{
  sensors_event_t sensor; //Messung der Werte
  Sensor.getEvent(&sensor); //Hinzufügen der Werte zum Sensor
  
  if ((sensor.acceleration.x > 2.98 && sensor.acceleration.x < 3.02) && done == false) //Wenn der Wert im Bereich dazwischen liegt
  {
    digitalWrite (sound,HIGH); // Lautsprecher an Pin10
    tone (sound,440);  //Pin 10 mit der Frequenz 440Hz ('a')
    delay(400); //Dauer des Tones 1 Sekunde
    done = true;  // ändern des Wertes der Variable 
  }
  else // ansonsten 
  {
    digitalWrite(sound, LOW);
  }

 Serial.println(sensor.acceleration.x);
}

Um das verlässlich festzustellen, gehört unter die Serial.begin() - Zeile eine weitere, in der was ausgegeben wird.
Zum Bspl:

Serial.println(F("Start..."));

Und häng mal den LS an einen anderen Pin.
PS: Das wird nichts:

Er knackt zumindest. Ich verschiebe mal die Zeile und ändere den PIN

Habe auch schon anstatt HIGH, die Frequenz 440 Hz eingesetzt

Las das ganze digital da weg.

Ich dachte das es immer so sein muss, damit der MC weiß was er mit dem PIN machen soll. Ich gucke mal die Instructables an.

Was ist das für ein Lautsprecher?
Ein 8 Ohm Modell?
Grüße Uwe

ja, ich habe einen 8 Ohm 2W Lautsprecher

Und wieviel Strom fließt durch einen 8 Ohm Widerstand, wenn Du 5V anschließt?

Das wird interessant. Ich habe mir Beispiele ohne Widerstand angesehen. Da wurde ein Ton ohne Widerstand ausgegeben. 625mA. Muss ich den Lautsprecher auf dem Arduino woanders anschließen?

Vieleicht waren das in den Beispielen Piezolautsprecher?

Ja an einem Audiverstärker oder mit 220 Ohm in Serie.

Grüße Uwe

Und der Pin lebt noch nach Deinem Experiment?

Der Pin ist in Ordnung

Ich probiere es mal aus.

Ich habe den Fehler gefunden. Habe eine Leitung vergessen und der Lautsprecher und Pin sind noch in Ordnung.
Ich habe allerdings den Fehler, das der Ton nicht abgeschaltet wird, ob wohl ich einen Sekunde eingestellt habe und das dieser zu einem bestimmten Wert zwischen 2,98 und 3,02 ausgegeben wird. Eine Fehlermeldung gibt es nicht.

#include <Adafruit_ADXL345_U.h> //einbinden der Adafriut Sensoren Bibliothek
#include <Adafruit_Sensor.h>    //einbinden der Adafruit ADXL 345 Bibliothek
Adafruit_ADXL345_Unified Sensor = Adafruit_ADXL345_Unified(); //Erstellen des Sensors mit dem Namen Sensor

//Definition für Sound an Port 10

#define sound 10
bool done = false;  // Variable zum merken ob die Sound ausgeführt wurde

void setup()
{
  Serial.begin(9600); //starten der seriellen Kommunikation mit 9600er Übetragung (Standard)
  pinMode(sound, OUTPUT); //Pin 10 als Ausgang definiert
  Sensor.begin();     //Starten des Sensors
}

// Sound zu einem bestimmten Wert

void loop()
{
  sensors_event_t sensor; //Messung der Werte
  Sensor.getEvent(&sensor); //Hinzufügen der Werte zum Sensor
  
  if ((sensor.acceleration.x > 2.98 && sensor.acceleration.x < 3.02) && done == false) //Wenn der Wert im Bereich dazwischen liegt
  {
    tone (sound,440);  //Pin 10 mit der Frequenz 440Hz ('a')
    delay(1000); //Dauer des Tones 1 Sekunde
    
    done = true;  // ändern des Wertes der Variable 
  }
 Serial.println(sensor.acceleration.x);
}

Das Problem habe ich gelöst, indem ich noTone eingefügt habe. Er hat es erst nicht erkannt, da ich noTone mit einem kleinen T geschrieben habe.

Wäre auch mein nächster Vorschlag gewesen.
Gut daß es jetzt funktioniert.
Grüße Uwe

Danke soweit. So langsam wird es doch.

Warum machst du es nicht so, wie in der Referenz seht und gibst die Dauer an tone()?

tone (sound, 440, 1000);

Stimmt, danke Dir. Habe ich jetzt auch in der Referenz gelesen. Das spart eine Zeile ein.