Raspberry verbunden mit Arduino (Marlin)

Heute ist Stammtischzeit:
Jeden Donnerstag 20:30 Uhr hier im Chat.
Wer Lust hat, kann sich gerne beteiligen. ;)
  • Hallo Gemeinde,

    ich erbitte heut nochmal Eure Hilfe bei einem Problem.

    Ich habe an meinen 3D-Drucker (Eigenbau, Software: Marlin, Hardware: Arduino Mega 2560 und RAMPS1.4) einen Raspberry Pi über USB angeschlossen. Nun habe ich ein C++ Programm, dass später einige Aufgaben übernehmen soll. Daher muss ich die Programmierung, um sie später in das Programm implementieren zu können, in C++ hin bekommen.

    Wenn ich in der Konsole (über Putty) folgenden Befehl eingebe, dann funktioniert die Kommunikation:

    Code
    screen /dev/ttyACM0 115200

    und anschließend:

    Code
    echo "M300 S300 P1000\r\n" > /dev/ttyACM0

    dann funktioniert der Code -> M300 steht bei Marlin für den Piezopeeper, S300 für 300Hz und P1000 für eine Sekunde.
    Es wird also für eine Sekunde ein Ton ausgegeben.

    Nun habe ich zum Test ein C++ Programm geschrieben der die Tonhöhe immer um 300Hz erhöht:

    Auch dieses Programm funktioniert. Also dachte ich mir - juhu - Problem gelöst.
    Startet man nun den Raspberry neu, so ist die Verbindung wieder getrennt. Lässt man nun den screen-Befehl weg, dann gehen weder der echo-Befehl noch die C++ Datei. Mein Ziel ist aber ja nun mit dem C++ Programm alleine die Verbindung aufzubauen. Was muss ich in meinen C++-Code einfügen, um die Verbindung am Anfang aufzubauen und zu halten?

    Vielen Dank für hilfreiche Ideen, Gruß Max

  • Hallo Max ... so trifft man sich wieder :)

    schau vielleicht mal -> hier <- rein, da gibts einen Punkt -> RS232 Kommunikation Arduino Pro Mini < - > Raspberry Pi <-

    Schau da mal rein ... wenn's nicht hilft, hätte ich z.B. noch die serielle Kommunikation mit einer -> Söhnle Waage <- auf Lager (da musst Du dann halt ein bisschen blättern - ist in einem Anhang) ...

    cu,
    -ds-

  • Hallo dreamshader,

    danke für die schnelle Antwort.
    Leider sind meine c++ Kenntnisse nicht so gut wie ich es gerne hätte ;)

    Hab mir beide Quellen angsehen aber verstehe sie leider nicht. Ich wüsste nicht welche Zeilen ich dabei für mein Problem anwenden müsste.

    Ich hatte mich schon so gefreut gehabt, als endlich alles funktionierte. Umso erstaunter war ich dann, als ich am nächsten Tag den Pi hochgefahren hab und das Programm plötzlich nicht mehr lief...

    Ich bräuchte eigentlich nur den Teil in c++ der eine Verbindung zu /dev/ttyACM0 aufbaut und hält.
    Mit

    Code
    std::ofstream out("/dev/ttyACM0");
    
    
    {
    out << "M300 S300 P1000" << std::endl;
    }

    funktioniert das Senden von Befehlen dann auch wunderbar. Nur die Verbindung aufbauen schaffe ich leider nicht.
    Ich habe auch versucht das Problem unter c++ mit der Zeile

    Code
    system("screen /dev/ttyACM0 115200");


    zu lösen - jedoch passiert dann einfach gar nichts (keine Fehlermeldung, das Programm läuft durch, der Pi ist in der Konsole wieder bereit - nur kommt kein einziger Ton aus dem Piezo).

    Wäre super wenn jemand eine Idee hätte - möglichst auch tauglich für c++ Neulinge :)


    Hallo Max ... so trifft man sich wieder :)

    schau vielleicht mal -> hier <- rein, da gibts einen Punkt -> RS232 Kommunikation Arduino Pro Mini < - > Raspberry Pi <-

    Schau da mal rein ... wenn's nicht hilft, hätte ich z.B. noch die serielle Kommunikation mit einer -> Söhnle Waage <- auf Lager (da musst Du dann halt ein bisschen blättern - ist in einem Anhang) ...

    cu,
    -ds-

  • Hi Max,
    also mit C++ kann ich so ad hoc nicht dienen ... aber ich hab' mal einC-Modul ausgegraben, das das komplette Handling einer rs232 enthält.
    Das könntetst Du Dir etwas anpassen/zerpflücken.
    Wenn Du da Schwierigkeiten hast, dann sag einfach piep :) ...

    und hier noch der header dazu:


    da sind die C++-Macros schon drin ... sollte sich also übersetzen lassen ...

    cheers,
    -ds-

  • Hallo dreamshader,

    danke für deine Mühen. Ich werde mich damit erstmal auseinandersetzten müssen und meine grauen Zellen anstrengen.
    Melde mich dann wieder wenn es geklappt hat oder ich noch ein kleines bisschen Hilfe bräuchte.

    Bis dahin, ein schönes Wochenende.

    Gruß, Max

Jetzt mitmachen!

Du hast noch kein Benutzerkonto auf unserer Seite? Registriere dich kostenlos und nimm an unserer Community teil!