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
Programm übersichtlich gestalten
29.01.2015, 20:10
Beitrag #9
RE: Programm übersichtlich gestalten
Hi,
wahrscheinlich muss man den String doch explizit in ein Char-Array umwandeln. Etwa so:
Code:
void playKeyPress()
{
   char filename[10];  // oder länger, falls nötig

    for(byte i = 0; i < 12; i++) {
        if (sensor[i] > threshold) {
             String(i+1).concat(".wav").toCharArray(filename,10);
             tmrpcm.play(filename);
             break;
        }
    }
}
Gruß,
Thorsten

Falls ich mit einer Antwort helfen konnte, wuerde ich mich freuen, ein paar Fotos oder auch ein kleines Filmchen des zugehoerigen Projekts zu sehen.
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren
31.01.2015, 09:39 (Dieser Beitrag wurde zuletzt bearbeitet: 31.01.2015 09:40 von gsborn.)
Beitrag #10
RE: Programm übersichtlich gestalten
Hallo,
es funktioniert nicht dieser code macht einen error :

Code:
void playKeyPress()
{
   char filename[10];  // oder länger, falls nötig

    for(byte i = 0; i < 12; i++) {
        if (sensor[i] > threshold) {
             String(i+1).concat(".wav").toCharArray(filename,10);
             tmrpcm.play(filename);
             break;
        }
    }
}

--ERROR ----
playKeyPress.ino: In function ‘void playKeyPress()’:
playKeyPress.ino:47:41: error: request for member ‘toCharArray’ in ‘String((((int)i) + 1), 10u).String::concat(((const char*)".wav"))’, which is of non-class type ‘unsigned char’


Aber nach lesen und üben und versuchen ist es gelungen, weiss nicht wie, aber der code macht das was Thorsten vorgeschlagen hat.

Gruss Gregor

Code:
void playKeyPress()
{
  String wavstr = ".wav";

  char filename[12];  // oder länger, falls nötig

  for(byte i = 0; i < 12; i++) {
    if (sensor[i] > threshold) {
      String((i+1) + wavstr).toCharArray(filename,12);
      tmrpcm.play(filename);
      Serial.print(filename); // debug

      break;
    }
  }

}
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren
31.01.2015, 09:55
Beitrag #11
RE: Programm übersichtlich gestalten
[quote='gsborn' pid='11537' dateline='1422693574']
Code:
String(i+1).concat(".wav").toCharArray(filename,10);
Ah, da hatte ich nicht aufgepasst. concat liefert keinen String zurück, sondern hängt an den String selbst was dran.
Ich glaube, so geht's noch kürzer und Speicherplatz-sparender:
Code:
void playKeyPress()
{
   for(byte i = 0; i < 12; i++) {
     if (sensor[i] > threshold) {
       tmrpcm.play((String(i+1) + ".wav").c_str());
       break;
     }
   }
}
Gruß,
Thorsten

Falls ich mit einer Antwort helfen konnte, wuerde ich mich freuen, ein paar Fotos oder auch ein kleines Filmchen des zugehoerigen Projekts zu sehen.
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren
03.02.2015, 09:04
Beitrag #12
RE: Programm übersichtlich gestalten
Hallo, da gibt das programm ein error aus. Denke das das die Libary ist.
Vielen Dank für die Hilfe und Vorschläge, habe sehr vieles dazu gelernt wie man ein programm übersichtlich gestalten kann.

Gruss Gregor

Code:
playKeyPress.ino: In function ‘void playKeyPress()’:
playKeyPress.ino:58:49: error: invalid conversion from ‘const char*’ to ‘char*’ [-fpermissive]
In file included from CapacitiveSensor_Array_1.ino:23:0:
/home/gregor/sketchbook/libraries/TMRpcm/TMRpcm.h:31:7: error:   initializing argument 1 of ‘void TMRpcm::play(char*)’ [-fpermissive]
  void play(char* filename);
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren
03.02.2015, 09:19
Beitrag #13
RE: Programm übersichtlich gestalten
Hi,
da ist ggf. die Library tatsächlich ein bisschen ungeschickt programmiert. Wahrscheinlich erwartet Play tatsächlich einen "char*". "c_str" liefert wahrscheinlich "const char*". Da funktioniert ein cast nicht einfach so, da der Compiler annimmt, dass "play" das Ziel des Pointers ändern könnte, was aber nicht geht, da "const". So meine Theorie...
Vielleicht geht sowas:
Code:
tmrpcm.play((char*)((String(i+1) + ".wav").c_str()));
...oder halt doch mit toCharArray, obwohl es hässlich ist, die Daten im Speicher rumzukopieren.
Gruß,
Thorsten

Falls ich mit einer Antwort helfen konnte, wuerde ich mich freuen, ein paar Fotos oder auch ein kleines Filmchen des zugehoerigen Projekts zu sehen.
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren
03.02.2015, 10:05
Beitrag #14
RE: Programm übersichtlich gestalten
Hallo, das passt jetzt. Danke

gruss Gregor




(03.02.2015 09:19)Thorsten Pferdekämper schrieb:  Hi,
da ist ggf. die Library tatsächlich ein bisschen ungeschickt programmiert. Wahrscheinlich erwartet Play tatsächlich einen "char*". "c_str" liefert wahrscheinlich "const char*". Da funktioniert ein cast nicht einfach so, da der Compiler annimmt, dass "play" das Ziel des Pointers ändern könnte, was aber nicht geht, da "const". So meine Theorie...
Vielleicht geht sowas:
Code:
tmrpcm.play((char*)((String(i+1) + ".wav").c_str()));
...oder halt doch mit toCharArray, obwohl es hässlich ist, die Daten im Speicher rumzukopieren.
Gruß,
Thorsten
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren
Antwort schreiben 


Möglicherweise verwandte Themen...
Thema: Verfasser Antworten: Ansichten: Letzter Beitrag
  Fehler in meinem Programm Franz54 7 139 01.12.2016 23:58
Letzter Beitrag: hotsystems
  Selbstfahrender Roboter Programm änderung hilfe ? arekklone 11 536 06.07.2016 14:59
Letzter Beitrag: Binatone
  Werte an anderes Programm weiterleiten Typ 2 432 12.03.2016 23:28
Letzter Beitrag: Typ
  Programm Code Erweitern hugolost 8 658 01.01.2016 20:02
Letzter Beitrag: Bitklopfer
  Eingänge im Programm integrieren Phil94 21 1.842 06.12.2015 10:52
Letzter Beitrag: hotsystems
  Webserver abfragen mit einem Programm arduinofan 2 728 28.11.2015 15:54
Letzter Beitrag: arduinofan
  aus Arduino IDE Programm beim Upload starten PingPong 3 621 13.11.2015 15:38
Letzter Beitrag: PingPong
Brick Programm für Touchfeld als vereinfachtes Model mit Widerständen aufgebaut Jeff 1 418 08.11.2015 16:52
Letzter Beitrag: Jeff
  Graph-Programm arduinofan 3 540 31.10.2015 13:45
Letzter Beitrag: hotsystems
  Programm zum Beobachten von Messwerten Marduino_UNO 13 2.072 22.10.2015 12:29
Letzter Beitrag: Scherheinz

Gehe zu:


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