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
  Sketch, zwei inputs, zwei outputs Prospekteur 16 763 27.07.2019 14:32
Letzter Beitrag: hotsystems
  Routine hinzufügen Bully 11 830 23.06.2019 19:22
Letzter Beitrag: hotsystems
  Sketch wieder downloaden AnFi 11 1.079 20.06.2019 20:28
Letzter Beitrag: AnFi
  Kennt jemand einen Stepper Closed Loop Sketch? Holzwurm56 16 1.162 17.06.2019 22:37
Letzter Beitrag: georg01
  Sketch drucken Gerd42 1 471 08.05.2019 10:11
Letzter Beitrag: Tommy56
  Timer Sketch für OLED SSD1331 Talon 20 1.365 17.02.2019 10:48
Letzter Beitrag: Tommy56
  Sketch laden Arduino Pro Mini 5V ATmega 328P Herberto 6 568 13.01.2019 14:20
Letzter Beitrag: hotsystems
  Sketch Menü Alfaone79 9 1.139 05.11.2018 22:52
Letzter Beitrag: hotsystems
Rainbow Sketch lässt sich nicht editieren HKestermann 3 894 03.11.2018 11:23
Letzter Beitrag: Hilgi
  Anfänger bekommt den Sketch nicht zum Laufen Maschinenbauer 6 1.465 06.10.2018 21:01
Letzter Beitrag: Tommy56

Gehe zu:


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