V-Plotter: Unterschied zwischen den Versionen
K (tippfehler beseitigt und RDoc für Ruby-Interface verlinkt) |
(Update für die Beschreibung des Ruby-Interfaces) |
||
Zeile 67: | Zeile 67: | ||
Um besser damit spielen zu können, haben wir eine Ruby-Schnittstelle gebaut ([http://schwarz-chr.de/V-Plotter-Ruby/doc/ RDoc]): | Um besser damit spielen zu können, haben wir eine Ruby-Schnittstelle gebaut ([http://schwarz-chr.de/V-Plotter-Ruby/doc/ RDoc]): | ||
<source lang="ruby"> | |||
== Beispiel für die Verwendung == | |||
<source lang="ruby"> | |||
# 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 | |||
</source> | |||
; Laden der richtigen Konfiguration (config) für unseren Plotter | ; Laden der richtigen Konfiguration (config) für unseren Plotter | ||
: <source lang="ruby">VPlotter. | entweder im Konstruktor: | ||
: <source lang="ruby">plotter = VPlotter.new :plotbert</source> | |||
oder auch nachher: | |||
: <source lang="ruby">plotter.use_config :plotbert</source> | |||
; Aufsetzen vom Stift | ; Aufsetzen vom Stift | ||
: <source lang="ruby"> | : <source lang="ruby">plotter.penDown</source> | ||
; Absetzen vom Stift | ; Absetzen vom Stift | ||
: <source lang="ruby"> | : <source lang="ruby">plotter.penUp</source> | ||
; Rotieren lassen vom (linken oder rechten) Motor: | ; 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 = abrollen | ||
;: Wert<0 = aufrollen | ;: Wert<0 = aufrollen | ||
: <source lang="ruby"> | : <source lang="ruby">plotter.rotateLeftMotor(int Entfernung in mm)</source> | ||
: <source lang="ruby"> | : <source lang="ruby">plotter.rotateRightMotor(int Entfernung in mm)</source> | ||
; absolute Bewegung vom Koordinatenursprung aus | ; absolute Bewegung vom Koordinatenursprung aus | ||
: <source lang="ruby"> | : <source lang="ruby">plotter.goto x, y</source> | ||
; relative Bewegung von aktueller Position | ; relative Bewegung von aktueller Position | ||
: <source lang="ruby"> | : <source lang="ruby">plotter.move x, y</source> | ||
; Fahren zum Kalibrierungspunkt | ; Fahren zum Kalibrierungspunkt | ||
: <source lang="ruby"> | : <source lang="ruby">plotter.home</source> | ||
; Schreiben des Wortes ''Test'' an der aktuellen Position | ; Schreiben des Wortes ''Test'' an der aktuellen Position (noch nicht implementiert) | ||
: <source lang="ruby"> | : <source lang="ruby">plotter.test</source> | ||
servo motor position für definierte Stiftposition | servo motor position für definierte Stiftposition | ||
: <source lang="ruby"> | : <source lang="ruby">plotter.setPen(int 0-100)</source> | ||
; Neues Kalibieren der Stiftspitze: | ; Neues Kalibieren der Stiftspitze: | ||
:: Fahren zum Kalibrierungspunkt und Ausführen von <code>calibrate | :: Fahren zum Kalibrierungspunkt und Ausführen von <code>calibrate</code> | ||
: <source lang="ruby"> | : <source lang="ruby">plotter.calibrate</source> | ||
; unter Angabe der Rahmenparameter ist es auch möglich andere Plotter damit zu steuern | ; unter Angabe der Rahmenparameter ist es auch möglich andere Plotter damit zu steuern | ||
<source lang="ruby"> | |||
plotter.customConfig( | |||
pos_left: [x, y], | |||
pos_right: [x, y], | |||
pos_cali: [x, y], | |||
height: height, | |||
width: width | |||
) | |||
</source> | |||
; Ändern der Geschwindigkeit vom Zeichen: | ; Ändern der Geschwindigkeit vom Zeichen: | ||
:: default=10 | :: default=10 | ||
:: langsam=1 | :: langsam=1 | ||
:: Werte über 10 sind möglich aber können zu übersprungenen Steps führen die die Zeichnung zerstören | :: Werte über 10 sind möglich aber können zu übersprungenen Steps führen, die die Zeichnung zerstören | ||
: <source lang="ruby">VPlotter.printSpeed(int [1-10-∞])</source> | : <source lang="ruby">VPlotter.printSpeed(int [1-10-∞])</source> | ||
Version vom 13. November 2015, 17:22 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).
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.customConfig(
pos_left: [x, y],
pos_right: [x, y],
pos_cali: [x, y],
height: height,
width: width
)
- Ändern der Geschwindigkeit vom Zeichen
-
- 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-∞])