c3d2-wiki/V-Plotter.mw

145 lines
4.7 KiB
Plaintext
Raw Normal View History

2015-11-08 22:08:56 +01:00
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).
2015-11-08 22:08:56 +01:00
== plotbert ==
2015-11-08 22:08:56 +01:00
Zur [[Codeweek EU#2015]], wurde in einem Workshop für Kinder und Jugendliche begonnen ein V-Plotter, gesteuert von einem [https://www.raspberrypi.org/blog/hanging-wall-plotter/ entsprechenden] [[Raspberry Pi]] zu bauen.
[[#plotbert]] steht dem [[HQ]] für allerlei Spielereien zur Verfügung.
2015-11-08 18:56:30 +01:00
[[Bild:V-Plotter1_2.jpg|100px]]
[[Bild:V-Plotter2_2.jpg|100px]]
[[Bild:V-Plotter3.JPG|100px]]
2015-11-08 22:08:56 +01:00
Grundsätzlich ist [[#plotbert]] als [[wikipedia:de:Stiftplotter|Stiftplotter]] angedacht.
2015-11-08 22:08:56 +01:00
=== Aufbau ===
2015-11-09 22:00:05 +01:00
Ein [[Raspberry Pi 2]] steuert über 8 Pins 2 [[wikipedia:de:Schrittmotor|Steppermotor]]en 28BYJ-48 (5V DC) via 2 passender [[wikipedia:de:Vierquadrantensteller|H-Brücken]]. Und ein
2015-11-09 22:00:05 +01:00
; Pinbelegung:
2015-11-08 22:08:56 +01:00
:; 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
2015-11-08 22:08:56 +01:00
=== Verwendung ===
2015-11-08 21:40:15 +01:00
Verbinden mit [[plotbert]]
: <source lang="bash">ssh pi@172.22.99.103</source>
<tt>raspberry</tt>
2015-11-08 21:40:15 +01:00
Starten des [[C++]] Kommandointerpreters
: <source lang="bash">vplotter</source>
2015-11-08 21:40:15 +01:00
* 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 <time> // wait for a given time (in ms)
* s <level> // set servo to this pwm level
* h // move to calibration point
2015-11-08 18:56:30 +01:00
2015-11-08 21:40:15 +01:00
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
2015-11-08 18:56:30 +01:00
2015-11-08 21:40:15 +01:00
; Quellen sind unter
* <code>/home/pi/V-Plotter</code>
2015-11-08 18:56:30 +01:00
2015-11-08 21:40:15 +01:00
; Oder bei Github:
* [https://github.com/schwarzchristian/v-plotter V-Plotter C++ Repo]
2015-11-08 18:56:30 +01:00
2015-11-08 22:08:56 +01:00
=== script interface: Klassen Definition (Ruby) ===
2015-11-08 18:56:30 +01:00
Um besser damit spielen zu können, haben wir eine Ruby-Schnittstelle gebaut ([http://schwarz-chr.de/V-Plotter-Ruby/doc/ RDoc]):
== 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>
2015-11-08 18:56:30 +01:00
2015-11-08 21:40:15 +01:00
; Laden der richtigen Konfiguration (config) für unseren Plotter
entweder im Konstruktor:
: <source lang="ruby">plotter = VPlotter.new :plotbert</source>
oder auch nachher:
: <source lang="ruby">plotter.use_config :plotbert</source>
2015-11-08 18:56:30 +01:00
2015-11-08 21:40:15 +01:00
; Aufsetzen vom Stift
: <source lang="ruby">plotter.penDown</source>
2015-11-08 21:40:15 +01:00
; Absetzen vom Stift
: <source lang="ruby">plotter.penUp</source>
2015-11-08 21:40:15 +01:00
; Rotieren lassen vom (linken oder rechten) Motor:
Warnung: Die Benutzung dieser Funktionen kann im Moment dazu führen, dass der Plotter seine Kalibrierungsdaten verliert!
2015-11-08 21:40:15 +01:00
:: Wert>0 = abrollen
;: Wert<0 = aufrollen
: <source lang="ruby">plotter.rotateLeftMotor(int Entfernung in mm)</source>
: <source lang="ruby">plotter.rotateRightMotor(int Entfernung in mm)</source>
2015-11-08 21:40:15 +01:00
; absolute Bewegung vom Koordinatenursprung aus
: <source lang="ruby">plotter.goto x, y</source>
2015-11-08 18:56:30 +01:00
2015-11-08 21:40:15 +01:00
; relative Bewegung von aktueller Position
: <source lang="ruby">plotter.move x, y</source>
2015-11-08 21:40:15 +01:00
; Fahren zum Kalibrierungspunkt
: <source lang="ruby">plotter.home</source>
2015-11-08 21:40:15 +01:00
; Schreiben des Wortes ''Test'' an der aktuellen Position (noch nicht implementiert)
: <source lang="ruby">plotter.test</source>
2015-11-08 18:56:30 +01:00
2015-11-08 21:40:15 +01:00
servo motor position für definierte Stiftposition
: <source lang="ruby">plotter.setPen(int 0-100)</source>
2015-11-08 18:56:30 +01:00
2015-11-08 21:40:15 +01:00
; Neues Kalibieren der Stiftspitze:
:: Fahren zum Kalibrierungspunkt und Ausführen von <code>calibrate</code>
: <source lang="ruby">plotter.calibrate</source>
2015-11-08 21:40:15 +01:00
; unter Angabe der Rahmenparameter ist es auch möglich andere Plotter damit zu steuern
<source lang="ruby">
plotter.use_config(
pos_left: [x, y],
pos_right: [x, y],
pos_cali: [x, y],
height: height,
width: width
)
</source>
2015-11-08 21:40:15 +01:00
; Ändern der Geschwindigkeit vom Zeichen: (noch nicht implementiert)
2015-11-08 21:40:15 +01:00
:: default=10
:: langsam=1
:: Werte über 10 sind möglich aber können zu übersprungenen Steps führen, die die Zeichnung zerstören
2015-11-08 21:40:15 +01:00
: <source lang="ruby">VPlotter.printSpeed(int [1-10-∞])</source>
[[Kategorie:C++]]
2015-11-08 22:08:56 +01:00
[[Kategorie:Ruby]]
[[Kategorie:Raspberry Pi]]
2015-11-08 21:40:15 +01:00
[[Kategorie:Projekt]]