V-Plotter: Unterschied zwischen den Versionen

Aus C3D2
Zur Navigation springen Zur Suche springen
Keine Bearbeitungszusammenfassung
Keine Bearbeitungszusammenfassung
Zeile 1: Zeile 1:
= V-Plotter / Hanging Wall Plotter "Plotbert"=
== V-Plotter / Hanging Wall Plotter "Plotbert" ==


Zur Codeweek 2015, wurde in einem Workshop für Kinder und Jugendliche begonnen ein [https://www.raspberrypi.org/blog/hanging-wall-plotter/ V-Plotter, auch hanging wall plotter] zu bauen.
Zur [[Codeweek EU]] 2015, wurde in einem Workshop für Kinder und Jugendliche begonnen ein [https://www.raspberrypi.org/blog/hanging-wall-plotter/ V-Plotter, auch ''hanging wall plotter'' genannt,] zu bauen.


Dieser steht dem HQ für allerei Spielereien zur Verfügung.
Der [[V-Plotter]] steht dem [[HQ]] für allerlei Spielereien zur Verfügung.


[[Bild:V-Plotter1_2.jpg|100px]]
[[Bild:V-Plotter1_2.jpg|100px]]
Zeile 9: Zeile 9:
[[Bild:V-Plotter3.JPG|100px]]
[[Bild:V-Plotter3.JPG|100px]]


= Aufbau =
== Aufbau ==


Ein Raspberry2 steuert über 8 Pins 2 StepperMotoren 28BYJ-48 (5V DC) via 2 passender H-Brücken. Und ein
Ein Raspberry2 steuert über 8 Pins 2 StepperMotoren 28BYJ-48 (5V DC) via 2 passender H-Brücken. Und ein
Zeile 27: Zeile 27:




= Verwendung =
== Verwendung ==


$ ssh pi@172.22.99.103   (pw: raspberry)
Verbinden mit [[plotbert]]
: <source lang="bash">ssh pi@172.22.99.103</source>
<tt>raspberry</tt>


starten des c++ Kommandointerpreters
Starten des [[C++]] Kommandointerpreters
$ vplotter
: <source lang="bash">vplotter</source>


  * l <length>  // direct control, left motor
* l <length>  // direct control, left motor
  * r <length>  // direct control, right motor
* r <length>  // direct control, right motor
  * m <dx> <dy> // move relative to current position
* m <dx> <dy> // move relative to current position
  * g <x>  <y>  // move to absolute coordinate
* g <x>  <y>  // move to absolute coordinate
  * c          // calibrate printer position
* c          // calibrate printer position
  * u          // move pen up
* u          // move pen up
  * d          // move pin down
* d          // move pin down
  * w <time>    // wait for a given time (in ms)
* w <time>    // wait for a given time (in ms)
  * s <level>  // set servo to this pwm level
* s <level>  // set servo to this pwm level
  * h          // move to calibration point
* h          // move to calibration point
   
   
  Parameter der Zeichenfläche und des Plotters  
Parameter der Zeichenfläche und des Plotters sind in der main.cpp hard gecodet: (Koordinatenursprung ist 0:0)
  sind in der main.cpp hard gecodet:
* Position des Kalibrierungspunktes
  (Koordinatenursprung ist 0:0)
* Entfernung der Motoren vom Kalibrierungspunkt aus
  * Position des Kalibrierungspunkt
* Größe der Zeichenfläche
  * Entfernung der Motoren vom CalibrierungsPunkt aus
  * Größe der Zeichenfläche


; Quellen sind unter
* <code>/home/pi/V-Plotter</code>


Quellen sind unter:
; Oder bei Github:
/home/pi/V-Plotter
* [https://github.com/schwarzchristian/v-plotter V-Plotter C++ Repo]
 
Oder bei Github:
  [https://github.com/schwarzchristian/v-plotter V-Plotter C++ Repo]


== script interface: Klassen Definition (Ruby) ==
== script interface: Klassen Definition (Ruby) ==


Um bessere damit spielen zu können, haben wir eine Ruby Schnittstelle gebaut:
Um bessere damit spielen zu können, haben wir eine Ruby Schnittstelle gebaut:
<source lang="ruby">class VPlotter</source>
; Laden der richtigen Konfiguration (config) für unseren Plotter
: <source lang="ruby">VPlotter.selectPlotter("plotbert")</source>
; Aufsetzen vom Stift
: <source lang="ruby">VPlotter.penUp()</source>
; Absetzen vom Stift
: <source lang="ruby">VPlotter.penDown()</source>


'''class VPlotter'''
; Rotieren lassen vom (linken oder rechten) Motor:
:: Wert>0 = abrollen
;: Wert<0 = aufrollen
: <source lang="ruby">VPlotter.rotateLeftMotor( int Entfernung in 1/10 mm)</source>
: <source lang="ruby">VPlotter.rotateRightMotor( int Entfernung in 1/10 mm)</source>
 
; absolute Bewegung vom Koordinatenursprung aus
: <source lang="ruby">VPlotter.goto(x,y)</source>
 
; relative Bewegung von aktueller Position
: <source lang="ruby">VPlotter.move(x,y)</source>
 
; Fahren zum Kalibrierungspunkt
: <source lang="ruby">VPlotter.home()</source>
   
; Schreiben des Wortes ''Test'' an der aktuellen Position
: <source lang="ruby">VPlotter.test()</source>
   
   
'''VPlotter.selectPlotter("plotbert")'''
servo motor position für definierte Stiftposition
    lädt die richtig config für unseren Plotter
: <source lang="ruby">VPlotter.setPen(int 0-100)</source>
     
'''VPlotter.penUp()
'''VPlotter.penDown()
    Stift auf und absetzen
   
   
'''VPlotter.rotateLeftMotor( int Entfernung in 1/10 mm)
; Neues Kalibieren der Stiftspitze:
'''VPlotter.rotateRightMotor( int Entfernung in 1/10 mm)
:: Fahren zum Kalibrierungspunkt und Ausführen von <code>calibrate()</code>
    Wert<0 = aufrollen, Wert>0 = abrollen
: <source lang="ruby">VPlotter.calibrate()</source>
   
 
'''VPlotter.goto(x,y)  
; unter Angabe der Rahmenparameter ist es auch möglich andere Plotter damit zu steuern
    absolute Bewegung vom Koordinaten Ursprung aus
: <source lang="ruby">VPlotter.customConfig(posMotorRight(x,y), posMotorLeft(x,y), calibrationPoint(x,y), height, width)</source>
'''VPlotter.move(x,y)
    relative Bewegung von aktueller Position
'''VPlotter.home()
    zum Kalibrierungspunkt fahren


'''VPlotter.test()
; Ändern der Geschwindigkeit vom Zeichen:
    schreibt das Wort Test an die aktuelle Position
:: default=10
:: langsam=1
  '''VPlotter.setPen(int 0-100)
:: Werte über 10 sind möglich aber können zu übersprungenen Steps führen die die Zeichnung zerstören
    servo motor position für definierte Stiftposition
: <source lang="ruby">VPlotter.printSpeed(int [1-10-∞])</source>
'''VPlotter.calibrate()'''
    zum neu kalibieren des V-Plotters die Stiftspitze
    zum Kalibrierungspunkt bringen und calibrate() ausführen


'''VPlotter.customConfig(posMotorRight(x,y), posMotorLeft(x,y), calibrationPoint(x,y), height, width)'''
[[Kategorie:C++]]
    es ist unter Angabe der Rahmenparameter auch möglich andere Plotter damit zu steuern
[[Kategorie:Hardware]]
[[Kategorie:Projekt]]
'''VPlotter.printSpeed(int [1-10-∞])'''
    ändert die Zeichengeschwindigkeit, default=10, langsam=1,
    Werte über 10 sind möglich aber können zu übersprungenen
    Steps führen die die Zeichnung zerstören

Version vom 8. November 2015, 20:40 Uhr

V-Plotter / Hanging Wall Plotter "Plotbert"

Zur Codeweek EU 2015, wurde in einem Workshop für Kinder und Jugendliche begonnen ein V-Plotter, auch hanging wall plotter genannt, zu bauen.

Der V-Plotter steht dem HQ für allerlei Spielereien zur Verfügung.

Aufbau

Ein Raspberry2 steuert über 8 Pins 2 StepperMotoren 28BYJ-48 (5V DC) via 2 passender H-Brücken. Und ein Die Pinbelgung auf dem Raspberry:

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 bessere damit spielen zu können, haben wir eine Ruby Schnittstelle gebaut:

class VPlotter
Laden der richtigen Konfiguration (config) für unseren Plotter
VPlotter.selectPlotter("plotbert")
Aufsetzen vom Stift
VPlotter.penUp()
Absetzen vom Stift
VPlotter.penDown()
Rotieren lassen vom (linken oder rechten) Motor
Wert>0 = abrollen
Wert<0 = aufrollen
VPlotter.rotateLeftMotor( int Entfernung in 1/10 mm)
VPlotter.rotateRightMotor( int Entfernung in 1/10 mm)
absolute Bewegung vom Koordinatenursprung aus
VPlotter.goto(x,y)
relative Bewegung von aktueller Position
VPlotter.move(x,y)
Fahren zum Kalibrierungspunkt
VPlotter.home()
Schreiben des Wortes Test an der aktuellen Position
VPlotter.test()

servo motor position für definierte Stiftposition

VPlotter.setPen(int 0-100)
Neues Kalibieren der Stiftspitze
Fahren zum Kalibrierungspunkt und Ausführen von calibrate()
VPlotter.calibrate()
unter Angabe der Rahmenparameter ist es auch möglich andere Plotter damit zu steuern
VPlotter.customConfig(posMotorRight(x,y), posMotorLeft(x,y), calibrationPoint(x,y), height, 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-∞])