V-Plotter: Unterschied zwischen den Versionen
K (→script interface: Klassen Definition (Ruby): updated rdoc link) |
Keine Bearbeitungszusammenfassung |
||
Zeile 4: | Zeile 4: | ||
* eine Halterung für ein Zeichengerät, die an den Fäden der Rollen hängt und | * eine Halterung für ein Zeichengerät, die an den Fäden der Rollen hängt und | ||
* eine Steuerung von den Motoren (mit Stromversorgung). | * eine Steuerung von den Motoren (mit Stromversorgung). | ||
== roadmap == | |||
* SVG support | |||
** internes Zwischenfomrat für Puntwolke (json) | |||
*** Skalierungsfaktor (Bild zu Zeichenfläche), Linienart/Pfad, Linienbreite, defaults, Liste von Punkten (ein Pfad = 1 Objekt)(Absolute Werte) | |||
* Servosteuerung (Stifthebeautomatik) | |||
* TCP Interface | |||
** GUI-Interface | |||
* Autokalibrierung | |||
** 2 Taster, beide Schnüre einzelen aufwickeln, Anschlagspunkt = Schnurlänge | |||
* OSM-Karten parser :D | |||
== plotbert == | == plotbert == |
Version vom 22. November 2015, 18:26 Uhr
Ein V-Plotter, auch hanging wall plotter genannt, ist
- eine Wand zum Befestigen von Papier,
- zwei Rollen mit ansteuerbaren Motor,
- eine Halterung für ein Zeichengerät, die an den Fäden der Rollen hängt und
- eine Steuerung von den Motoren (mit Stromversorgung).
roadmap
- SVG support
- internes Zwischenfomrat für Puntwolke (json)
- Skalierungsfaktor (Bild zu Zeichenfläche), Linienart/Pfad, Linienbreite, defaults, Liste von Punkten (ein Pfad = 1 Objekt)(Absolute Werte)
- internes Zwischenfomrat für Puntwolke (json)
- Servosteuerung (Stifthebeautomatik)
- TCP Interface
- GUI-Interface
- Autokalibrierung
- 2 Taster, beide Schnüre einzelen aufwickeln, Anschlagspunkt = Schnurlänge
- OSM-Karten parser :D
plotbert
Zur Codeweek EU#2015, wurde in einem Workshop für Kinder und Jugendliche begonnen ein V-Plotter, gesteuert von einem entsprechenden Raspberry Pi zu bauen.
#plotbert steht dem HQ für allerlei Spielereien zur Verfügung.
Grundsätzlich ist #plotbert als Stiftplotter angedacht.
Aufbau
Ein Raspberry Pi 2 steuert über 8 Pins 2 Steppermotoren 28BYJ-48 (5V DC) via 2 passender H-Brücken. Und ein
- Pinbelegung
-
- MOTOR_LEFT
- _pins[0] = 11
- _pins[1] = 10
- _pins[2] = 13
- _pins[3] = 12
- MOTOR_RIGHT
- _pins[0] = 5
- _pins[1] = 4
- _pins[2] = 9
- _pins[3] = 8
Verwendung
Verbinden mit plotbert
ssh pi@172.22.99.103
raspberry
Starten des C++ Kommandointerpreters
vplotter
- l <length> // direct control, left motor
- r <length> // direct control, right motor
- m <dx> <dy> // move relative to current position
- g <x> <y> // move to absolute coordinate
- c // calibrate printer position
- u // move pen up
- d // move pin down
- w
- s <level> // set servo to this pwm level
- h // move to calibration point
Parameter der Zeichenfläche und des Plotters sind in der main.cpp hard gecodet: (Koordinatenursprung ist 0:0)
- Position des Kalibrierungspunktes
- Entfernung der Motoren vom Kalibrierungspunkt aus
- Größe der Zeichenfläche
- Quellen sind unter
/home/pi/V-Plotter
- Oder bei Github
script interface: Klassen Definition (Ruby)
Um besser damit spielen zu können, haben wir eine Ruby-Schnittstelle gebaut (RDoc):
Beispiel für die Verwendung
# config laden
plotter = VPlotter.new :plotbert
# in den Zeichenmodus wechseln
plotter.draw do |d|
d.goto 50, 50 # Punkt anfahren
d.penDown # Stift aufsetzen
d.move 100, 0 # Relativbewegung
d.penUp # Stift absetzen
d.home # zurück zum Startpunkt
end
- Laden der richtigen Konfiguration (config) für unseren Plotter
entweder im Konstruktor:
plotter = VPlotter.new :plotbert
oder auch nachher:
plotter.use_config :plotbert
- Aufsetzen vom Stift
plotter.penDown
- Absetzen vom Stift
plotter.penUp
- Rotieren lassen vom (linken oder rechten) Motor
Warnung: Die Benutzung dieser Funktionen kann im Moment dazu führen, dass der Plotter seine Kalibrierungsdaten verliert!
- Wert>0 = abrollen
- Wert<0 = aufrollen
plotter.rotateLeftMotor(int Entfernung in mm)
plotter.rotateRightMotor(int Entfernung in mm)
- absolute Bewegung vom Koordinatenursprung aus
plotter.goto x, y
- relative Bewegung von aktueller Position
plotter.move x, y
- Fahren zum Kalibrierungspunkt
plotter.home
- Schreiben des Wortes Test an der aktuellen Position (noch nicht implementiert)
plotter.test
servo motor position für definierte Stiftposition
plotter.setPen(int 0-100)
- Neues Kalibieren der Stiftspitze
-
- Fahren zum Kalibrierungspunkt und Ausführen von
calibrate
- Fahren zum Kalibrierungspunkt und Ausführen von
plotter.calibrate
- unter Angabe der Rahmenparameter ist es auch möglich andere Plotter damit zu steuern
plotter.use_config(
pos_left: [x, y],
pos_right: [x, y],
pos_cali: [x, y],
height: height,
width: width
)
- Ändern der Geschwindigkeit vom Zeichen
- (noch nicht implementiert)
- default=10
- langsam=1
- Werte über 10 sind möglich aber können zu übersprungenen Steps führen, die die Zeichnung zerstören
VPlotter.printSpeed(int [1-10-∞])