INFO: Dieses Forum nutzt Cookies...
Cookies sind für den Betrieb des Forums unverzichtbar. Mit der Nutzung des Forums erklärst Du dich damit einverstanden, dass wir Cookies verwenden.

Es wird in jedem Fall ein Cookie gesetzt um diesen Hinweis nicht mehr zu erhalten. Desweiteren setzen wir Google Adsense und Google Analytics ein.

Antwort schreiben 
 
Themabewertung:
  • 0 Bewertungen - 0 im Durchschnitt
  • 1
  • 2
  • 3
  • 4
  • 5
im Sketch was hinzufügen
07.01.2019, 23:14 (Dieser Beitrag wurde zuletzt bearbeitet: 07.01.2019 23:34 von tauti1991.)
Beitrag #1
im Sketch was hinzufügen
Guten Tag,
ich habe einen Sketch umgearbeitet das er zu meiner RC-Anlage passt.
Bis jetzt kann ich:
-verschiedene wav-daten zu bestimmten Steuerknüppelstellung abspielen
- start Sound beim einschalten des Empfängers
-end Sound beim auschalten des Empfängers
Bis jetzt funktioniert es ganz gut.

ABER
Würde gerne noch einen Kanal einlesen.
Es soll eine Hupe werden

-int rc_pin = 2 // schon vorhanden, Steuerknüppel GAS
-int rc_pin = 3 //soll jetzt dazu kommen, Hupe

Hupe soll nur:
HIGH Sound 1
LOW Sound 2
Neutral nix.

Wie kann ich das umschreiben?

Kenne mich leider bis jetzt nicht richtig mit Musikabspielen bei Arduino aus, nur Licht ö. Töne

Also wenn einer einen ansatz hier schreiben könnte o. sogar umschreiben könnte, wäre ich sehr froh.
Arbeite schon paar Tage u. mit verschiede ansätze, geht einfach net mit zwei Schalter.

Sketch
Code:
#include <SD.h>                      // need to include the SD library
#define SD_ChipSelectPin 4  //using digital pin 4 on arduino nano 328, can use other pins
#include <TMRpcm.h>           //  also need to include this library...
#include <SPI.h>

TMRpcm tmrpcm;   // create an object for use in this sketch

unsigned long time = 0;
int numLoop = 0;
int throttle = 0;
int prevThrottle = 0;
int currThrottle = 0;
int playingSound = 0;

//RC scale
int rc_pin = 2;
unsigned long duration;
unsigned long prevDuration;


void setup() {
  tmrpcm.speakerPin = 9; //5,6,11 or 46 on Mega, 9 on Uno, Nano, etc
  Serial.begin(9600);
  if (!SD.begin(SD_ChipSelectPin)) {  // see if the card is present and can be initialized:
    Serial.println("SD fail");
    return;   // don't do anything more if not
  }
  else {
    Serial.println("SD ok");
  }
  //PLay init file to tell sound version
  Serial.println("anlass.wav");
  tmrpcm.play("anlass.wav");
  while (tmrpcm.isPlaying()) {
    delay(2000);
  };
  Serial.println("setup end");
}

void loop() {

  //Read throttel value
  ++numLoop;
  if (numLoop == 30000) {
    noInterrupts();
    duration = pulseIn(rc_pin, HIGH);
    interrupts();

    numLoop = 0;
    Serial.println(currThrottle);
    //Set new throttle value

    if (duration <= 990) {
      currThrottle = 0;
    };
    if ((duration > 990) && (duration <= 1050)) {
      currThrottle = 1;
    };
    if ((duration > 1050) && (duration <= 1167)) {
      currThrottle = 2;
    };
    if ((duration > 1167) && (duration <= 1332)) {
      currThrottle = 3;
    };
    if ((duration > 1332) && (duration <= 1498)) {
      currThrottle = 4;
    };
    if ((duration > 1498) && (duration <= 1664)) {
      currThrottle = 5;
    };
    if ((duration > 1664) && (duration <= 1830)) {
      currThrottle = 6;
    };
    if (duration > 1830) {
      currThrottle = 7;
    };

    //If currThrottle != prevThrottle set start playing new file
    if (currThrottle != prevThrottle) {

      if ((currThrottle == 0) && (prevThrottle > 0)) {
        tmrpcm.play("abstell.wav");
        Serial.println("abstell.wav)");
        while (tmrpcm.isPlaying()) {}
        prevThrottle = currThrottle;
      }
      if (currThrottle == 1) {
        if (currThrottle > prevThrottle) {
          tmrpcm.play("anlass.wav");
          Serial.println("anlass.wav");
          while (tmrpcm.isPlaying()) {}
        }
        playingSound = 1;
        prevThrottle = currThrottle;
      }
      if (currThrottle == 2) {
        tmrpcm.play("1.wav");
        Serial.println("1.wav");
        prevThrottle = currThrottle;
        playingSound = 1;
      }
      if (currThrottle == 3) {
        tmrpcm.play("2.wav");
        Serial.println("2.wav");
        prevThrottle = currThrottle;
        playingSound = 2;
      }
      if (currThrottle == 4) {
        tmrpcm.play("3.wav");
        Serial.println("3.wav");
        prevThrottle = currThrottle;
        playingSound = 3;
      }
      if (currThrottle == 5) {
        tmrpcm.play("4.wav");
        Serial.println("4.wav");
        prevThrottle = currThrottle;
        playingSound = 4;
      }
      if (currThrottle == 6) {
        tmrpcm.play("5.wav");
        Serial.println("5.wav");
        prevThrottle = currThrottle;
        playingSound = 5;
      }
      if (currThrottle == 7) {
        tmrpcm.play("6.wav");
        Serial.println("6.wav");
        prevThrottle = currThrottle;
        playingSound = 6;
      }
    }
    // Serial.println(tmrpcm.isPlaying());
    if ((currThrottle = prevThrottle) && (tmrpcm.isPlaying() == 0)) {

      if (playingSound == 1) {
        tmrpcm.play("1.wav");
        Serial.println("again 1.wav");
        prevThrottle = currThrottle;
      }
      if (playingSound == 2) {
        tmrpcm.play("2.wav");
        Serial.println("again 2.wav");
        prevThrottle = currThrottle;
      }
      if (playingSound == 3) {
        tmrpcm.play("3.wav");
        Serial.println("again 3.wav");
        prevThrottle = currThrottle;
      }
      if (playingSound == 4) {
        tmrpcm.play("4.wav");
        Serial.println("again 4.wav");
        prevThrottle = currThrottle;
      }
      if (playingSound == 5) {
        tmrpcm.play("5.wav");
        Serial.println("again 5.wav");
        prevThrottle = currThrottle;
      }
      if (playingSound == 6) {
        tmrpcm.play("6.wav");
        Serial.println("again 6.wav");
        prevThrottle = currThrottle;
      }
    }
  }
}

Weiß das man es wieder mit pulseIn einlesen muss.

Geht das hiermit:
https://funduino.de/25-der-interrupt-bef...hinterrupt
O.
https://funduino.de/nr-08-toene-erzeugen
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren
08.01.2019, 10:24
Beitrag #2
RE: im Sketch was hinzufügen
Hier:
Zitat:Hupe soll nur:
HIGH Sound 1
LOW Sound 2
Neutral nix.
weiß ich leider nicht wie du es meinst.

Bei der Hupe musst du dich entscheiden, ob du den Tone mit einen aktiven Buzzer (Lautgeber) oder mit einem passiven Buzzer erzeugen möchtest. Weiterhin kann auch der Arduino einen Tone mit der Tone-Funktion erzeugen.

Eine entsprechende Erklärung wäre schon wünschenswert.

Gruß Dieter

I2C = weniger ist mehr: weniger Kabel, mehr Probleme. Cool
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren
08.01.2019, 12:20
Beitrag #3
RE: im Sketch was hinzufügen
Hallo,
Eigentlich wollte ich nicht nur einen Ton als Hupe nehmen sondern einen Sound.
Der Sound wollte ich auch über PIN 9 abspielen wo der Lautsprecher angeschlossen ist.

Der Schalter wo die Hupe angeschlossen werden soll hatt nur 3 Stellungen ein, aus, ein.


Weiß nicht ob man 2 Befehle auf ein PIN9/Lautsprecher, abspielen kann, also gleichzeitig
o.

Muss da mit einen Befehl immer ein Befehl unterbrochen werden?
(meine es so:
befehl Sound Stand unterbrechen, dann Sound Hupe ausgeben, danach Sound Stand wieder laufen lassen, wenn ich denn Schalter der Hupe betätige)

Oder
kann ich an einen Lautsprecher auch zwei Signalleitungen anbringen, z. B
PIN 9 für Fahrsound [wie jetzt schon]
PIN 10 für Hupe


Wenn es garnicht anders geht muss ich noch einen Lautsprecher O. Ein BUZZER einbauen
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren
08.01.2019, 16:24
Beitrag #4
RE: im Sketch was hinzufügen
(08.01.2019 12:20)tauti1991 schrieb:  Eigentlich wollte ich nicht nur einen Ton als Hupe nehmen sondern einen Sound.

Ich verstehe das so, daß Du WAV-Dateien abspielen möchtest?

Zufällig bin ich vorhin über ein Projekt gestolpert, das genau das macht ... mit Hilfe dieser Zusatz-Hardware:

https://www.adafruit.com/product/94

Allerdings kann dieses WAV-Shield wohl immer nur eine WAV-Datei zur Zeit abspielen - je nach Anwendungsgebiet mag das reichen oder nicht ...

(Das erwähnte Projekt findest Du unter http://www.akeric.com/blog/?p=2114 )
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren
08.01.2019, 17:07 (Dieser Beitrag wurde zuletzt bearbeitet: 08.01.2019 17:17 von tauti1991.)
Beitrag #5
RE: im Sketch was hinzufügen
Genau möchte die Hupe mit einer WAV.Datei erzeugen.

Möchte denn Sketch erweitern, heißt um einen Schalter mehr.

Der Soll:
-schalter oben - horn1.wav abspielen - 1870-2000
-schalter mitte - nichts abspielen - 1500
-schalter unten - hor2.wav abspielen - <990

aber wenn ich jetzt in denn Sketch pulseIn(rc_pin_horn) erweitere und die gleichen werde unten lassen will, gibt er nix mehr richtig aus o. geht fast nix mehr wenn ich es hoch lade.

Muss ja denn Schalter einlesen mit pulseIn und dann die werte danach brauche ich auch nur andere Sounds soll jetzt der neue Schalter abspielen

Code:
void loop() {

  //Read throttel value
  ++numLoop;
  if (numLoop == 30000) {
    noInterrupts();
    duration = pulseIn(rc_pin, HIGH);
    duration2 = pulseIN(rc_pin_horn, HIGH); // erweitert für Horn/Hupe
    interrupts();

    numLoop = 0;
    Serial.println(currThrottle);
    //Set new throttle value

    if (duration <= 990) {
      currThrottle = 0;
    };
    if (duration > 990) {
    currThrottle = 1;
  };
  if ((duration > 1050) && (duration <= 1167)) {
    currThrottle = 2;
  };
  if ((duration > 1167) && (duration <= 1332)) {
    currThrottle = 3;
  };
  if ((duration > 1332) && (duration <= 1498)) {
    currThrottle = 4;
  };
  if ((duration > 1498) && (duration <= 1664)) {
    currThrottle = 5;
  };
  if ((duration > 1664) && (duration <= 1830)) {
    currThrottle = 6;
  };
  if (duration > 1830) {
    currThrottle = 7;
  };

Auch Töne geht jetzt nicht einfach zu erweitern da ich ja trotzdem denn neuen schalter einlesen muss. (pulseIn und werte)

Komme einfach nicht weiter, um denn Sketch um einen Schalter mit WAV.daten zu erweitern.
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren
08.01.2019, 17:16 (Dieser Beitrag wurde zuletzt bearbeitet: 08.01.2019 17:22 von hotsystems.)
Beitrag #6
RE: im Sketch was hinzufügen
Sorry, aber so richtig verstehe ich deine Erklärung nicht.

Nur eins ist sicher, du kannst keine 2 Pins zusammenschalten.
Damit killst du den Arduino.
Du kannst auch nicht gleichzeitig 2 Töne erzeugen und die durch den Arduino ausgeben.
Nimm für die Sounderzeugung einen MP3-Player, z.B den DFPlayer mini, der ist klein und preiswert. Da kannst du beliebige Sounds als Hupe nehmen.




Edit:
Und warum schreibst du das nicht gleich ?

Ich nehme mal an, der Sketch schreibt eine Fehlermeldung beim Kompilieren.

Gruß Dieter

I2C = weniger ist mehr: weniger Kabel, mehr Probleme. Cool
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren
08.01.2019, 17:32
Beitrag #7
RE: im Sketch was hinzufügen
PulseIn blockiert, davon kannst Du immer nur eins nutzen.

Versuche mal, ob Du das mit der NewPing-Lib hin bekommst. Die soll nichtblockierend sein.

Gruß Tommy

"Wer den schnellen Erfolg sucht, sollte nicht programmieren, sondern Holz hacken." (Quelle unbekannt)
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren
08.01.2019, 17:51
Beitrag #8
RE: im Sketch was hinzufügen
aber irgendwie muss man 2 Sounds ausgeben können

Sie da:
https://www.youtube.com/watch?v=D-_IvxzKwkg

Denn Sketch kann man zwar runterladen in ein Polnischen Forum, aber kabiere nicht wo in denn Sketch die Sound sind.

aber wenn man nur einmal pulsIn eingeben darf kann man ja nie 2 RC-Kanäle auslesen.
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren
Antwort schreiben 


Möglicherweise verwandte Themen...
Thema: Verfasser Antworten: Ansichten: Letzter Beitrag
  Fehlermeldung beim Sketch hochladen heino_m 12 375 28.05.2020 18:25
Letzter Beitrag: Tommy56
Question Sketch compilieren und testen ohne hochladen? Triax16 18 870 02.05.2020 12:48
Letzter Beitrag: Bitklopfer
  Sketch für WS2812 klappt nicht ThorstenP 9 550 02.04.2020 14:50
Letzter Beitrag: ThorstenP
  Sketch anders aufbauen ThorstenP 10 589 25.03.2020 14:01
Letzter Beitrag: MicroBahner
  Sketch Beispiel für WS2812 ThorstenP 5 359 23.03.2020 14:22
Letzter Beitrag: Tommy56
  Brauche Hilfe, Was Stimmt an meinem Sketch nicht Andi-1090 12 779 20.03.2020 10:04
Letzter Beitrag: hotsystems
  sketch mit 2 anstatt einem joystick ardutobias 0 279 14.03.2020 23:54
Letzter Beitrag: ardutobias
  Board Zuordnung zum Sketch arduino2108 1 372 03.03.2020 09:52
Letzter Beitrag: Tommy56
  Wo kann ich hardware hinzufügen ( Ordner ) Nordlys 6 495 23.02.2020 21:46
Letzter Beitrag: amithlon
  Arduino Sketch LED luckylocke71 7 565 23.02.2020 15:00
Letzter Beitrag: senseman

Gehe zu:


Benutzer, die gerade dieses Thema anschauen: 1 Gast/Gäste