bounding box plot

This commit is contained in:
Martin Fuchs
2026-09-06 22:51:29 +02:00
parent 8be02bc530
commit c129222b78
7 changed files with 301 additions and 105 deletions
+36 -15
View File
@@ -91,7 +91,7 @@ p5-wallplotter/
Dann öffne darin *sketch.js*. Den Rest (HTML, Buttons, Verbinden) kannst du lassen. Ändere die Inhalte in der Funktion *drawPlot*: dort steht, was gezeichnet wird.
Chrome, gleicher Server: [http://localhost:8080/sketches/mein-sketch/](http://localhost:8080/sketches/mein-sketch/) (Ordnername in der URL anpassen). Nach dem Speichern die Seite neu laden (*F5*). Der Python-Server muss nicht neu starten.
Chrome, gleicher Server: [http://localhost:8080/sketches/mein-sketch/](http://localhost:8080/sketches/mein-sketch/) (Ordnername in der URL anpassen). Wie du die Vorschau startest und nach Änderungen neu lädst: Abschnitt 3.
### Was *sketch.js* macht
@@ -102,7 +102,7 @@ Chrome, gleicher Server: [http://localhost:8080/sketches/mein-sketch/](http://lo
- *new WallPlotter({ … })* — Verbindung zum Plotter. *penUpGcode* / *penDownGcode* sind die Servo-Winkel für Stift hoch und runter
- *setSpeed(3000, 1500)* — Tempo in mm/min: zuerst leer fahren (Travel), dann zeichnen (Draw)
- *enableKeyInputs* — Tastatur: C, H, Pfeile, …
- *enablePlotButtons* — Buttons Connect, Plot, Test, Abort
- *enablePlotButtons* — Buttons Connect, Test, Plot, Bounding box, Abort
*plot* und *test* rufen dieselbe Zeichnung auf. *false* = G-code an den Plotter, *true* = nur Vorschau im Browser.
@@ -145,7 +145,24 @@ async function drawPlot(testOnly) {
Mehr Befehle: [lib/doc.md](https://git.collectivemedia.space/martin/p5-wallplotter/src/branch/main/lib/doc.md).
## 3.1 Plotter anschliessen
## 3. Testen
Der Plotter bleibt aus. **Test** zeigt die Zeichnung nur im Browser — kein G-code, keine Motoren.
1. Sketch in Chrome öffnen, z. B. [http://localhost:8080/sketches/mein-sketch/](http://localhost:8080/sketches/mein-sketch/) (oder *examples/zickzack/*).
2. Button **Test** oder Taste **T**. Die Gondel-Linie läuft als Vorschau über den Bildschirm.
3. Nochmals **Test** oder **T** zeichnet die Vorschau neu (kein Abort während des Tests).
Nach jeder Änderung in *sketch.js*: in VS Code speichern, dann in Chrome **neu laden**, sonst siehst du die alte Version (Cache).
- Hart neu laden: *Ctrl+Shift+R* (Windows/Linux) bzw. *Cmd+Shift+R* (macOS).
- Oder die Entwicklertools öffnen (*F12* bzw. *Cmd+Option+I*), oben **Netzwerk**, Häkchen **Cache deaktivieren**. Die Tools müssen **offen bleiben**. Dann reicht ein normales Neuladen (*F5* / *Cmd+R*).
Danach wieder **Test** oder **T** — jetzt gilt der geänderte Sketch.
## 4. Plotten
## 4.1 Plotter anschliessen
### Hardware-Reihenfolge
@@ -156,7 +173,7 @@ Mehr Befehle: [lib/doc.md](https://git.collectivemedia.space/martin/p5-wallplott
5. **Connect** klicken oder Taste **C**.
6. Im Dialog den Serial-Port der Steuerung wählen.
## 3.2 Home setzen (wichtig)
## 4.2 Home setzen (wichtig)
Marlin kennt nach dem Einschalten **keine** absolute Wand-Position. Du sagst ihm, wo „jetzt“ der Ursprung (Blattmitte = Koordinate 0/0) ist. Die Pfeiltasten funktionieren erst nach dem ersten Home:
@@ -171,7 +188,7 @@ Ohne Home bleibt Plot gesperrt.
Diese Firmware hat keinen *EMERGENCY_PARSER*. Ein Stopp im Browser bricht nur das *weitere Senden* ab; die bereits laufende *G1*-Fahrt läuft weiter. Für einen harten Stopp: **Strom trennen**.
## 3.3 Bedienung
## 4.3 Bedienung
### Tasten, Buttons, HUD
@@ -179,18 +196,21 @@ Shortcuts:
- **C** — Verbinden / trennen (Port-Dialog)
- **H** — Hier ist Home (*G92 X0 Y0*): zuerst an der Gondel, nach dem Joggen nochmals in der Blattmitte
- **T** — Test (Vorschau)
- **A** — Abort: Test auf Start zurück
- **T** — Test (Vorschau). Nochmals **T** zeichnet neu
- **B** — Bounding box: Gondel fährt Stift oben um die Ausdehnung der Zeichnung
- **A** — Abort: während eines Plots (laufendes *G1* fährt zu Ende), oder nach einem Reload den gespeicherten Plot verwerfen
- **P** — Stift umschalten
- **0** — Nach (0, 0) fahren (Stift oben)
- **← → ↑ ↓** — Joggen, Stift oben
- **Shift + Pfeile** — Joggen, Stift unten
- **+** / **−** — Schrittweite 1–100 mm
- **S** — Plot stoppen / pausieren
- **S** — Plot pausieren / fortsetzen
Nach **Test** erscheint **Bounding box**. **Plot** nur wenn verbunden. **Plot** schickt genau diese Vorschau an den Plotter — die Zeichnung wird nicht neu gewürfelt. **Bounding box** fährt Stift oben um das Rechteck der Zeichnung, damit du siehst, ob alles aufs Blatt passt. Während eines Plots wird **Plot** zu **Pause** / **Resume**, und **Abort** erscheint. Nach einem Reload mit gespeichertem Plot bleibt **Abort** sichtbar, falls du einen anderen Sketch geladen hast und den alten Pfad nicht fortsetzen willst. **Test** bleibt während des Tests **Test** (nochmals drücken = neu zeichnen).
Das HUD (unten und als Overlay) zeigt Verbindung, Home, Position, Stift, Serial-Log.
## 4. Polargraph und Marlin
## 5. Polargraph und Marlin
### Der Plotter und seine Teile
@@ -250,7 +270,7 @@ Befehlsliste: [gcode.md](https://git.collectivemedia.space/martin/p5-wallplotter
Marlin ist keine Zeichen-App. Es weiss nichts von p5 oder deinem Sketch. Es bekommt nur Koordinaten und Servo-Winkel. Pfadplanung, Stiftlogik und die Vorschau liegen in *WallPlotter.js*. Die Firmware ist der Bewegungscontroller: parsen, in Riemenlängen umrechnen, Schritte erzeugen, *ok* sagen.
## 5. Fehlerbehebung
## 6. Fehlerbehebung
- **Kein Port-Dialog, oder „Serial not supported“** — **Chrome**, nicht Firefox oder Safari. Seite über *http://localhost:…* öffnen, nicht als Datei.
- **Port erscheint nicht** — Strom der Steuerung an? Daten-USB-Kabel? Linux: Gruppe *dialout* oder *uucp*, neu einloggen; im Terminal nach *ttyACM* oder *ttyUSB* schauen. Windows: Geräte-Manager → COM-Port. macOS: Tab schliessen und neu öffnen (Port oft blockiert).
@@ -266,15 +286,16 @@ Marlin ist keine Zeichen-App. Es weiss nichts von p5 oder deinem Sketch. Es beko
Serial-Log im HUD lesen: Marlin-Fehler stehen dort als Text, nicht als Browser-Alert.
## 6. Mini-Ablauf zum Merken
## 7. Mini-Ablauf zum Merken
1. ZIP herunterladen, in VS Code den Ordner *p5-wallplotter* öffnen.
2. Terminal in VS Code öffnen, *python3 -m http.server 8080* (Windows: *py -m http.server 8080*).
3. Chrome: [http://localhost:8080/examples/zickzack/](http://localhost:8080/examples/zickzack/).
4. Eigenen Ordner unter *sketches/* anlegen, *drawPlot* anpassen.
5. Plotter mit Strom und USB verbinden.
6. **C** → Port wählen.
7. **H** (aktuelle Position), zur Blattmitte joggen, nochmals **H**.
8. **Test**, dann **Plot**.
5. **Test** oder **T**. Nach Änderungen speichern, hart neu laden (*Ctrl+Shift+R*), nochmals **T**.
6. Plotter mit Strom und USB verbinden.
7. **C** → Port wählen.
8. **H** (aktuelle Position), zur Blattmitte joggen, nochmals **H**.
9. **Plot**.
API-Referenz: [lib/doc.md](https://git.collectivemedia.space/martin/p5-wallplotter/src/branch/main/lib/doc.md). G-code: [gcode.md](https://git.collectivemedia.space/martin/p5-wallplotter/src/branch/main/gcode.md).