Probleme beim zusammenfügen 2er Codes



  • @Sense88
    Sorry, wie sollen wir dir helfen?

    Erstens hast du einen recht großen unleserlichen Code vorgesetzt, zweitens sagt du "komm einfach nicht weiter". Mit was? Stehst du im Stau?

    Du musst in der Informatik lernen dich klar auszudrücken und zweitens das Divide & Conquer Prinzip verstehen. Teile und Herrsche.

    • Was geht nicht?
    • Welches ist das erwartete Verhalten, welche das aktuelle Verhalten?
    • Was hast du bereits ausprobiert?
    • Kannst du deinen Code soweit reduzieren s.d. das Problem anhand weniger Codezeilen sichtbar ist?


  • @Sense88 sagte in Probleme beim zusammenfügen 2er Codes:

    kopiere die beiden Zusammen, wird das VoiceModul ignoriert.
    ...
    Ich habe Zeile 11 hinzugefügt und ca ab Zeile 845 reinkopiert.

    Nur weil du ab Zeile 845 eine neue Funktion voice() (bzw. auch commands()) hinzufügst, wird diese nicht automatisch aufgerufen (d.h. benutzt).
    Die für Arduino-Programmierung wichtigen Funktionen sind setup() (bei dir ab Zeile 747) und loop() (ab Zeile 775).
    Diese beide Funktionen müssten auch bei deinem Voice-Programm existieren, so daß du dort schauen mußt, wie die voice() und commands()-Funktionen dort aufgerufen werden.
    Und diese Aufrufe mußt du dann in die bestehenden setup() bzw. loop()-Funktionen integrieren (d.h. an passender Stelle hinzufügen).

    Die Initialisierung der Schnittstelle (d.h. Serial.begin(115200);) sollte jedoch nur einmalig in setup() vorgenommen werden.



  • Guten Morgen,
    danke für´s Antworten.
    Hoffe ich kanns soweit gut erklären, das man es versteht.

    • Was geht nicht?
      ab Zeile 843 klappt es nicht.

    • Welches ist das erwartete Verhalten, welche das aktuelle Verhalten?
      Es soll bei Aktivierung des DFRobot 2301Q Voice Regonition modul und Z.B Zeile 933 .-> open Mask wenn man dies sagt, mit dem Wake Word der Helm sich öffnen.
      hierbei werden die Servos (MG90S) angesprochen und die Verbauten LED´s ausgeschaltet.

      Das aktuelle Verhalten ist, das es leider nichts macht, weder die Servos ansteuert, noch die LED schaltet.
      Dieser CodeTeil war eigentlich eine einzelne .ino Datei die auch klappt!
      Ich gehe davon aus, das die Libaries drin sind, da kein fehler kommt.
      Wenn ich eine rausnehme sagt der das Sie fehlt.

    • Was hast du bereits ausprobiert?

      • Die Einzelnen Ursprungs Codes klappen beide wenn ich Sie als jeweils einzelne sketch lade.
      • Den DFRobot mini player rausgenommen, da beiden einen Serial von 115200 nutzen
      • andere Befehle für ansteuerung genommen z.B. Zeile 941 Servo1.write hab ich servo1_PIN genommen etc.
      • Habe die Libaries an anderen stellen eingebunden
    • zusätzlich neue #define gesetzt

    • geschaut obs adress konflikte gibt df2301q ist bei 0x64 der miniplayer im 0x2X beireich im standard

    • versucht fehler mit AI raus zubekommen

      -Kannst du deinen Code soweit reduzieren s.d. das Problem anhand weniger Codezeilen sichtbar ist?
      Würde ich gerne für die Übersicht, aber da ich keinen explizieten Fehler habe dachte ich das drumherum interessiert auch. Ab wo würde der Codeteil benötigt werden ? ab der Voice integration?

    Danke schon mal



  • @Th69

    Danke für den hinweis, werde ich nachermal testen.



  • @Sense88 sagte in Probleme beim zusammenfügen 2er Codes:

    ab Zeile 843 klappt es nicht.

    Sorry, das ist keine Fehlermeldung. Was klappt da nicht?

    Du gehst ja nicht zum Arzt und sagt "Aua" und bekommst darauf eine Diagnose. Werde genauer in deiner Aussage!


    Es soll bei Aktivierung des DFRobot 2301Q Voice Regonition modul und Z.B Zeile 933 .-> open Mask wenn man dies sagt, mit dem Wake Word der Helm sich öffnen.
    hierbei werden die Servos (MG90S) angesprochen und die Verbauten LED´s ausgeschaltet.

    Sorry, dieser Satz kein Deutsch.

    Bekommst du bei deiner commands() Funktion evt. keine CmdID 5 rein?

    Oder möchtest du sobald eine CmdID 5 reinkommt, den Helm öffnen?

    Ich bin verwirrt.



  • @Quiche-Lorraine

    Ich möchte, bei:
    CmdID 5 -> sich der Helm öffnet, LED aus
    CmdID 6 -> sich der Helm schließt, LED an
    CmdID 7 -> sich die LED einschalten.
    CmdID 8 -> sich die LED ausschalten.
    usw...

    Das VoiceModul wir angelernt unabhängig vom Rest und dem Codeund ; ist gemacht in dem Das Modul mit Spannung versorgt wird und man den einlernprozess startet.
    Im Standad ist das Hi Robot - dies aktiviert das VoiceModul.
    dann habe ich dem Modul beigebracht "Open Mask" dies ist der Erste Slot und ist ID5 , nächster Befehl "Close Mask" wäre ID 6 usw. dies habe ich aus dem Datenblatt vom Gerät
    Klappt soweit auch auch alles, denn wenn ich nur den Sketch hole wo es sich um das reine VoiceModul handelt klappt es.

    Ich glaube ich Probier mal den Ansatz von @Th69, ich kann mich daran erinnern das im Original Code ein
    setup() und loop()
    drin war.

    Im Sketch1 Code (der mit einem Schalter betätigt wird) waren diese schon vorhanden, da die Fehlermeldung kam habe ich diese umbenannt void voice() und void commands().

    Ich Probiere mal die Void Voice in die Bestehende Void Setup zu integrieren wo auch schon der Serial.begin(115200) aufgerufen wird, dieser wäre sonst auch doppelt im Code.



  • @Sense88 sagte in Probleme beim zusammenfügen 2er Codes:

    CmdID 5 -> sich der Helm öffnet, LED aus

    Erkläre mir mal bitte was der folgende Code macht:

    case 5: // open mask
          Servo1.write(170);
          Servo2.write(20);
          digitalWrite(RIGHT_EYE_PIN, LOW);
          delay(500);
          break;
    


  • @Quiche-Lorraine

    Also, Das Voice Modul hat von mir den Sprachbefehl "open mask" beigebracht bekommen und gibt diesen mit dem Wert 5 (wird vom Modul vergben) aus.

    Wenn also das Modul die 5 Ausgibt,
    werden
    A: die 2 verbauten Servos angesteuert auf die Positionen 170 und 20, weil der eine um 180 gedreht ist. Deswegen laufen diese auf anderen Werten und nicht gleich. Diese müssen aber noch final eingestellt werden.
    B: Zeitgleich werden die LEDs die an Pin 3 hängen ausgeschaltet.
    C: delay soll eine Wartezeit dastellen
    D : der Break beendet die ausgabe von Wert 5



  • @Sense88 sagte in Probleme beim zusammenfügen 2er Codes:

    Also, Das Voice Modul hat von mir den Sprachbefehl "open mask" beigebracht bekommen und gibt diesen mit dem Wert 5 (wird vom Modul vergben) aus.

    Funktioniert das Ganze auch? Heißt, manche doch mal für die DEBUG Variante eine serielle Ausgabe, sofern möglich. Wenn du z.B. dann "open mask" sagst, wird dann "Open Mask" seriell ausgegeben.



  • @Quiche-Lorraine

    hi, hab gestern noch ein wenig probiert und der frust hat gewonnen 😕

    Es scheint als ob das Voice Modul nicht initialisiert wird, da in der seriellen ausgabe nix kommt. Sonder nur serial.print(F("Initializing Iron Man Servo version: ")); Serial.println(VERSION); vom ersten Code
    Hatte mich an @Th69 vorschlag gemacht;
    die Codestellen von Void Voice und Void commands rüber kopiert ins Setup und Loop da ich diese genau so auch rauskopiert hatte.
    Irgendwan war die die Ausgabe dann soweit das serial.print(F("Initializing Iron Man Servo version: ")); Serial.println(VERSION)
    Communication with device failed, please check connection
    erschien aber der Button keine funktion mehr hatte und Voice immern noch nicht klappte, da es schon spät war, der Tag eh gelaufe und der Frust da war hab ich was anderes Probiert aber nun bekomm ich`s nicht wieder in den
    Communication with device failed, please check connection zustand.... sitz gefühlt jede freie minute dran.

    Muss jetzt erst mal schauen, wie ich das wieder hinbekomme



  • Welchen Wert hat denn MP3_TYPE: DFPLAYER oder JQ6500?

    Und was passiert, wenn du zuerst das Voice-Modul initialisiert?

    Evtl. kommen sich aber beide Module in die Quere, was die interne Kommunikation betrifft.

    PS: In der Funktion init_player() in Zeile 217 sowie 272 wird ja serialObj.begin(9600) aufgerufen. Ist dies die selbe serielle Schnittstelle wie bei Serial.begin(115200)?


Anmelden zum Antworten