V-Plotter: Unterschied zwischen den Versionen

Aus C3D2
Zur Navigation springen Zur Suche springen
(Die Seite wurde neu angelegt: „== Einleitung == =Klassen Definition (Ruby)= class VPlotter() VPlotter.selectPlotter("plotBerd"); VPlotter.customConfig(posMotorRight(x,y), posMotorLeft(x,…“)
 
Keine Bearbeitungszusammenfassung
Zeile 1: Zeile 1:
== Einleitung ==
= 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.


Dieser steht dem HQ für allerei Spielereien zur Verfügung.


=Klassen Definition (Ruby)=
[[Bild:V-Plotter1_2.jpg|100px]]
[[Bild:V-Plotter2_2.jpg|100px]]
[[Bild:V-Plotter3.JPG|100px]]


class VPlotter()
= Aufbau =
VPlotter.selectPlotter("plotBerd");
VPlotter.customConfig(posMotorRight(x,y), posMotorLeft(x,y), calibrationPoint(x,y), height, width)


VPlotter.calibrate() - ist jetzt am C-punkt
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:


VPlotter.printSpeed(int [mm/sec]) - bewegung geschwindigkeit
MOTOR_LEFT:
*          _pins[0] = 11
*          _pins[1] = 10
*          _pins[2] = 13
*          _pins[3] = 12


VPlotter.penUp()
MOTOR_RIGHT:
VPlotter.penDown()
*          _pins[0] = 5
*          _pins[1] = 4
*          _pins[2] = 9
*          _pins[3] = 8


VPlotter.setPen(int 0-100) - servo motor position


VPlotter.rotateLeftMotor( int Entfernung) - minus: aufrollen pos: abrollen
= Verwendung =
VPlotter.rotateRightMotor( int Entfernung) - minus: aufrollen pos: abrollen


VPlotter.goto(x,y) - absolute
$ ssh pi@172.22.99.103  (pw: raspberry)
VPlotter.move(x,y) - relativ


VPlotter.home() - mote to calibrate
starten des c++ Kommandointerpreters
$ vplotter


VPlotter.test() - writes the word test on position
  * 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
  Parameter der Zeichenfläche und des Plotters
  sind in der main.cpp hard gecodet:
  (Koordinatenursprung ist 0:0)
  * Position des Kalibrierungspunkt
  * Entfernung der Motoren vom CalibrierungsPunkt aus
  * Größe der Zeichenfläche
 
 
Quellen sind unter:
/home/pi/V-Plotter
 
Oder bei Github:
  [https://github.com/schwarzchristian/v-plotter V-Plotter C++ Repo]
 
== script interface: Klassen Definition (Ruby) ==
 
Um bessere damit spielen zu können, haben wir eine Ruby Schnittstelle gebaut:
 
'''class VPlotter'''
'''VPlotter.selectPlotter("plotbert")'''
    lädt die richtig config für unseren Plotter
     
'''VPlotter.penUp()
'''VPlotter.penDown()
    Stift auf und absetzen
'''VPlotter.rotateLeftMotor( int Entfernung in 1/10 mm)
'''VPlotter.rotateRightMotor( int Entfernung in 1/10 mm)
    Wert<0 = aufrollen, Wert>0 = abrollen
   
'''VPlotter.goto(x,y)
    absolute Bewegung vom Koordinaten Ursprung aus
'''VPlotter.move(x,y)
    relative Bewegung von aktueller Position
'''VPlotter.home()
    zum Kalibrierungspunkt fahren
 
'''VPlotter.test()
    schreibt das Wort Test an die aktuelle Position
  '''VPlotter.setPen(int 0-100)
    servo motor position für definierte Stiftposition
'''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)'''
    es ist unter Angabe der Rahmenparameter auch möglich andere Plotter damit zu steuern
'''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, 17:56 Uhr

V-Plotter / Hanging Wall Plotter "Plotbert"

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

Dieser steht dem HQ für allerei 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

$ ssh pi@172.22.99.103   (pw: 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 


Quellen sind unter:

/home/pi/V-Plotter

Oder bei Github:

 V-Plotter C++ Repo

script interface: Klassen Definition (Ruby)

Um bessere damit spielen zu können, haben wir eine Ruby Schnittstelle gebaut:

class VPlotter

VPlotter.selectPlotter("plotbert") 
   lädt die richtig config für unseren Plotter
     
VPlotter.penUp()
VPlotter.penDown()
   Stift auf und absetzen 

VPlotter.rotateLeftMotor( int Entfernung in 1/10 mm)
VPlotter.rotateRightMotor( int Entfernung in 1/10 mm)
   Wert<0 = aufrollen, Wert>0 = abrollen
   
VPlotter.goto(x,y) 
   absolute Bewegung vom Koordinaten Ursprung aus
VPlotter.move(x,y)
   relative Bewegung von aktueller Position

VPlotter.home()
   zum Kalibrierungspunkt fahren 
VPlotter.test()
   schreibt das Wort Test an die aktuelle Position

 VPlotter.setPen(int 0-100)
   servo motor position für definierte Stiftposition

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)
   es ist unter Angabe der Rahmenparameter auch möglich andere Plotter damit zu steuern


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