Zwei verschiedene Frequenzen abwechselnd erzeugen

habe leider noch nichtmal grundkentnisse was c++ angeht, bin grade erst im einstieg und versuch mich stück für stück anhand von projekten da rein zu kommen :smiley:

Du fragst hier immer nach Beispielen, scheinst aber die mitgelieferten aus der IDE zu ignorieren. Da findest Du ALLES, was Du für Dein Projekt brauchst. Heißt halt nur nicht "zwei verschiedene frequenzen abwechselnd erzeugen".

Ja, das sagtest du schon!

Siehe:

Tipp:

  1. Das merken wir auch ohne, dass du es sagst oder gar wiederholst.
  2. Nur du kannst das ändern. Wir nicht.

Aber das geht doch nicht, indem wir deine Arbeit machen, oder?

Und nein:
Eine Computersprache lernt man nicht dadurch, dass man sich das anschaut, was andere da für einen Mist bauen. Sondern z.B. dadurch, dass man ein Buch liest!
Sich die Grundlagen erarbeitet.
Dann, ja, dann erst, kann man irgendwelche Beispiele verstehen.

ist gut, nicht gleich anfangen zu weinen :smiley: danke für deine nicht hilfreiche Antwort

Hei hei hei ..... du bist ja drauf....
Viel Erfolg auf deinen Wegen, ich dir wünsche.

danke, dir auch

Was denkst Du warum Combie das "DokuVorLeseVerweigerer" mit drin hat. :slight_smile:

Du hast mal Deinen Minisketch mit der tone Funktion.
So, wenn Du jetzt mal in der IDE unter "Datei" > "Beispiele" reinschaust, findest Du Beispiele für digitalRead, (02.digital > DigitalInputPullup) und switch/case (05.control > switchCase). Wenn Du verstanden hast was diese Sketche machen, solltest Du fast schon auf die Lösung Deines Problems kommen.
Du darfst gerne fragen wenn etwas nicht funktioniert, bei Fehlermeldungen oder ähnlichem, aber normalerweise machen wir nicht die Programmierarbeit für die anderen.
Also einfach mal in der IDE die Beispiele testen und dann wird Dir ein Licht aufgehen!

Gruß, Jürgen

Wozu schreibe ich dir den Weg zu den Beispielen in der IDE, wenn du den Vorschlag nicht annimmst ?
Ich hatte auch geschrieben, dass switch/case für deine Anwendung besser ist.

ich hab mir die beiden versionen die du mir vorgeschlagen hattest angeschaut, bin aber momentan noch dabei, das überhaupt eine melodie ertönt wenn ich den taster drücke

habe jetzt mal an hand der ide diesen skeatch erstellt

const int buttonPin = 2;
const int Speaker = 8;

int buttonState = 0;
void setup() {

pinMode(Speaker, OUTPUT);

pinMode(buttonPin, INPUT);
}

void loop() {

buttonState = digitalRead(buttonPin);

if (buttonState == HIGH) {

tone(8, 750);
delay(200);
noTone(8); // An dieser Stelle geht der erste Ton aus.
tone(8, 2500); // Der zweite Ton mit der neuen Tonhöhe ertönt.
delay(200); //… und zwar für eine Sekunde...
noTone(8); // An dieser Stelle geht der zweite Ton aus und der Loop-Teil des Sketches beginnt von vorn.

digitalWrite(Speaker, HIGH);

} else {

digitalWrite(Speaker, LOW);

}
}

Bitte setze deine Code in Codetags, dann ist er besser zu lesen.

Am einfachsten auch in 3 Schritten:

  1. Formatiere deinen Code mit ctrl-T
  2. mit der rechten Maustaste in den Codebereich klicken, und aus dem Pop-Up Menu 'Für Forum kopieren' auswählen
  3. In deinen Post einfügen.

Und funktioniert dein Sketch wie Du dir das vorstellst? Oder was geht nicht?

Um Dir zu helfen, würde ich gerne Dein Programm in meinen UNO laden. Leider hast Du aber Dein Programm ohne code-Tags eingestellt, weshalb der Knopf zum Kopieren fehlt. Also bitte so:

```
Dein Programm
```

Hoffe das passt so ?
und zu der funkiton @MicroBahner ,leider funktioniert es so nicht, also ohne Taster bekomm ich es hin, das mein Speaker 2 verschiedene Frequenzen wiedergibt, aber irgendwie hängt es bei dem thema taster

const int buttonPin = 2;
const int Speaker = 8;

int buttonState = 0;
void setup() {

  pinMode(Speaker, OUTPUT);

  pinMode(buttonPin, INPUT);
}

void loop() {

  buttonState = digitalRead(buttonPin);

  if (buttonState == HIGH) {

    tone(8, 750);
    delay(200);
    noTone(8); // An dieser Stelle geht der erste Ton aus.
    tone(8, 2500); // Der zweite Ton mit der neuen Tonhöhe ertönt.
    delay(200); //… und zwar für eine Sekunde...
    noTone(8); // An dieser Stelle geht der zweite Ton aus und der Loop-Teil des Sketches beginnt von vorn.

    digitalWrite(Speaker, HIGH);
  } else {

    digitalWrite(Speaker, LOW);
  }
}

Ja.
Weil Dein Schaltbild

unvollständig ist, kann ich nur raten...
Will ich nicht.
Wie hast Du den Taster angeschlossen.
Und jetzt sag nicht an Pin 2.

perfekt :+1:t3: :sunglasses:

Kann eigentlich nur der Anschluss des Tasters sein. Wie schon gefragt wurde, zeig mal wie das verdrahtet ist.

Den schaltplan hatte ich am anfang entworfen, bevor ich den taster einbringen wollte. Aber Ja, den Taster habe ich an den pin D2 vom Arduino verdrahtet, mache gleich mal ein Bild.

hier noch einmal mein momentaner Skript und mein Layout, bin als am ausprobieren und nachlesen der IDE, jedoch steh ich Momentan noch auf dem Schlauch

const int buttonPin = 2;
const int Speaker = 8;

int buttonState = 0;
void setup() {

  pinMode(Speaker, OUTPUT);

  pinMode(buttonPin, INPUT);
}

void loop() {

  buttonState = digitalRead(buttonPin);

  if (buttonState == HIGH) {

    tone(8, 750);
    delay(200);
    noTone(8); // An dieser Stelle geht der erste Ton aus.
    tone(8, 2500); // Der zweite Ton mit der neuen Tonhöhe ertönt.
    delay(200); //… und zwar für eine Sekunde...
    noTone(8); // An dieser Stelle geht der zweite Ton aus und der Loop-Teil des Sketches beginnt von vorn.

    digitalWrite(Speaker, HIGH);
  } else {

    digitalWrite(Speaker, LOW);
  }
}

Wenn du den Taster gegen LOW schaltest, musst du auch auf LOW abfragen. Und einen Pullup-Widerstand verwenden.
Das geht intern mit:
pinMode (buttonPin, INPUT_PULLUP);

ja habe das problem gerade gelöst, habe einfach den taster mit einem 10k pul up auf 5v gelegt und bei der if abfrage den buttonstate auf == LOW umgeschrieben, jetzt funktioniert es :slight_smile:

Das kannst Du dir sparen, wenn Du , wie von hotsystems geschrieben, INPUT_PULLUP bei pinMode verwendest. der Arduino hat einen Pullup Widerstand eingebaut, den man so aktivieren kann.

werde mich nun mal an die switch case funktion wagen um versch. melodien auswählen zu können