DER ASCII ART SCANNER

Achtung: Die eng. Version ist etwas neuer und hat eine techn. Referenz.

Einleitung
Du gehst immer achtsam mit Deinem Computer um, hällst Dich an die Empfehlungen
der Hersteller ... 
Das ist sehr zu begrüßen und damit Du auch in Zukunft nicht auf falsche Gedanken
kommst solltest Du den folgenden Text keinesfalls lesen ! Es geht nämlich um den
gnadenlosen Mißbrauch von Hardware, zu sinnlosen Zwecken. (Zurück)
Im Klartext: Die folgende Anleitung beschreibt die Verwendung eines alten Druckers
als "Scanner". Das ganze richtet sich an etwas abgedrehte Bastler mit Mut zum Ver-
rückten. Hierbei sollte jedem klar sein, daß das Resultat dieser kleinen Bastelei
nicht mehr viel mit einem normalen Scanner zu tun haben. Diese Scanner liefert im
Optimalfall Bilder, wie sie in der ASCII (Grey Scalled) Gallerie zu finden sind.

Die Idee einen ASCII Scanner zu bauen, hatte ich am Anfang eigentlich gar nicht.
Ich war jung, arm und wollte unbedingt einen Scanner haben. Leider ließ mein 
Budget das nicht zu und so kam mir die Idee einen SelfMade Scanner zu bauen.Gesagt
getan... und plötzlich hatte ich einen ASCII Art Scanner gebaut ohne überhaupt je
etwas von ASCII Art gehört zu haben. :-)

Falls sie dennoch weiterlesen oder sogar versuchen etwas nach zu bauen, seien Sie
bitte vorsichtig. Die Anschlüsse Ihres Rechners und Druckers stehen unter Strom !
Für Schäden jeglicher Art ist jeder selbstverantwortlich


TEIL I: HARDWARE

Bauteile:
+ Kabel, flexibel, zweiadrig (3adrig bei zusätzl. Sensor)
+ Joystick Steckverbinder
+ ggfs. Planine und Poti für den Regler
+ lichtempf. Widerstand (ggfs. Strichcode Leser, zusätzl. LED)
+ alte Druckerkassette

Kosten (ohne Computer u. Drucker): ca. 10 DM


 (1.)   (2.)             (3.)                       (4.)              (5.)
                                                                     Sensor
+----+                                          +---------------+\________
| C  |                                          |       +-+--________\____O
| o  |                                          |       | |      /   \_\
| m  |                                          |       | |      |      
| p  | Joystick        +-----------+            |       | |      |   ___
| u  +-(   )-----------| Regler-   |------------|-------| |      \__/__/
| t  +-(   )-----------|schaltung  |------------|---------|      ___/
| e  |  port           +-----------+            |                /
| r  |                                          +---------------+
|    |
+----+                                            Druckerband


1.) Ein Computer:    Völlig egal welcher vom C64 bis zum Highend PC geht alles und
                     dazu einen (alten) Nadeldrucker mit Einwegfarbkassette. 
2.) Joystickport:    Angeschlossen werden lediglich zwei Pins für einen der Feuer
                     Buttons (Fire1 oder Fire2).
                     [Es natürlich auch ein Anschluß an den seriellen Port möglich
                      was jedoch wegen der geringen Datenübertragungsrate und dem
                      höheren Aufwand nicht notwendig ist]
3.) Reglerschaltung: Sie ist notwending, falls der Joystickport digital ist, wie
                     zB. beim Amiga(500) oder Atari. Bei einem PC ist er analog
                     und die Schaltung kann wegfallen, da die unterschiellichen
                     Schwellenwerte per Software gesetzt werden können. Ansonsten
                     genügen zwei Potis. Ihr Wert hängt von den Werten des Sensors
                     ab (dh. probieren). 
                     [Falls der Widerstand des Sensors zu hoch ist, kann auch ein
                      kleiner Verstärker mit zwei Transistoren zwischengeschaltet
                      werden]
4.) Druckerkassete:  Verwendet werden sollte eine alte oder leere Kassete. Ent-
                     fernen Sie zuerst das Farbband (öffnen) und beschädigen Sie
                     die Mechanik nicht. Schneiden Sie eine kleine Öffnung in das
                     Plastik, wo später der Sensor angebracht wird. Links davon
                     machen Sie ein kleines Loch für das Kabel.
5.) Sensor:          Er besteht nur aus einem Plastikröhrchen an dessen Spitze sich
                     ein lichtempfindlicher Widerstand befindet. Dessen Wert läßt
                     sich nicht angeben, da hilft nur probieren (mit dem Regler).
                     Das Röhrchen wird nun in die Öffnung (4) der Kassette gescho-
                     ben (Sollte nicht zu fest sitzen, damit man den Abstand zum
                     Papier noch einstellen kann). Das Kabel an der Druckerkassette
                     sollte beweglich und etwas länger sein.
                     [Etwas bessere Resultate erziehlt man durch einen Strichcode
                      Leser anstelle des Widerstands. Dieser benötigt jedoch teil-
                      weise eine zusätzliche Stromquelle (Computer/Trafo). Auch ein
                      kleines LED kann durch die zusätzliche Helligkeit das Resul-
                      tat verbessern]

Sonstiges:
- Die Mechanik in der Druckkassette sollte funktionieren, weil der Drucker ansosten
  ggfs. nicht arbietet.
- Der Sensor sollte möglichst links eingebaut werden, damit der Rand erfaßt wird.
- Der Sensor sollte etwas Spielraum habe, um den Abstand zu justieren.
- Wichtig: Diese Anleitung enthält KEINE Anweisungen die eine Änderung an ihrem Com-
  puter oder Drucker fordern !!!
- Meine Hardware (nicht zwingend, s.o.): Amiga500, Star LC10 9Nadel Drucker



WARNUNG: 
DIESE ANLEITUNG BEZIEHT SICH AUF ERFAHRENE PERSONEN. DIE ANSCHLÜSSE IHRES RECHNES 
STEHEN UNTER STROM! BEI FALSCHEM ANSCHLUß ODER ANDEREN COMPUTERSYSTEMEN KANN ES ZU 
EINER SCHÄDIGUNG IHRER HARDWARE KOMMEN. JEGLICHE GEWÄHRLEISTUNG FÜR SCHÄDEN WIRD 
AUSGESCHLOSSEN. FÜR DIE ANLEITUNG WIRD WEDER RICHTIGKEIT NOCH VOLLSTÄNDIGKEIT GA-
RANTIERT. 

Das alles ist mit ein bißchen mehr Probiererei verbunden als es aussieht. Die Gefahr 
für Schäden an ihrem Rechner/Drucker kann nicht ausgeschlossen werden. Verwenden Sie 
ggfs.einen alten Rechner. Ein gebrauchter C-64 mit Drucker ist teilweise schon für 
50,- erhältlich.
         


TEIL II: SOFTWARE

Der weitaus schwierigere Teil der Anleitung:
Da Sie eine Software für diesen Eigenbau nicht kaufen können, müssen sie etwas 
programmiererfahrung haben. Die Sprache ist dabei egal, jedoch sollten Sie mit der
Druckeransteuerung und Portabfrage vertraut sein.
Das Programm selbst besteht aus folgenden Teilen:

1.) Auslesen des Sensors, dh. des Ports
2.) Steuerung des Druckers
3.) Aufarbeiten der Informationen

Da das Programm einfach aufgebaut ist, kann es unter BASCIC sehr schnell realisiert
werden. Allerdings sind die Variationsmöglichkeiten für einen späteren Ausbau auch
beschränkt. Folgende Routinen sollte das Programm enthalten.

A.) Auslesen des Ports: 

    Möglichkeit 1: Auslesen der Buttons (Schwarz/Weiß Scanner, digital)
    Wenn der Widerstand des Sensors zu hoch ist (Schwarz) setzt das Prog. eine "1".
    In diesem Fall ist der Jostickbutton nicht durchgängig. Im anderen Fall fällt der
    Widerstand (weiß) und der Button ist gedrückt. Es wird eine Null gesetz. Als 
    ASCII zuordnung kann man dann zB. 1="#" und 0=" " setzen.
    Falls die Unterschiede zwischen hell und dunkel nicht genügen um den Button durch
    zu schalten kann ein kleiner Verstärker oder ein LED helfen, ansonsten muß man
    mit dem Regler nach dem besten Schwellenwert suchen.

    Möglichkeit 2: Auslesen der Potis (Graustufen Scanner, analog)
    In Abhängigkeit der Farbe ändert sich der Widerstand des Sensors. Verschiedenen
    Intervallen können dem Wert gemäß Zeichen gesetzt werden, zB. (in KOhm): 
    0-25=" ", 25-50=".", 50-75="o" , 75-100="#" (beliebig verifizierbar) 
    Ein Regler ist in diesem Fall idR. nicht notwendig. Zur Ansteurung des Ports 
    findet man übrigens fertige Unit's im Internet.

B.) Steuerung des Druckes.

    Sie benötigen zuerst die Befehle um ihren Drucker zu Steuern. Diese finden Sie
    in ihrem Druckerhandbuch.
    Nachdem Sie die Druckerschnittstelle geöffnet haben (Open LPT1 ...) müssen Sie
    eine Schleife schreiben, die den Druckerkopf veranlaßt sich Zeichen für Zeichen
    und Zeile für Zeile über das Blatt zu arbeiten. Dabei sollte jedes Zeichen ein-
    zeln gesetz werden, da der Widerstand etwas Zeit benötigt um sich anzugleichen.
    Die Steuerung erfolgt dabei einfach über sog ESCSequencen.
    Mögliche Bewegungswege:

    1.) Zeilenweise von links-rechts            2.) "Schlängelnd"      

    ---------------------> (Zeilensprung)       -----------------------. 
    ---------------------> (Zeilensprung)       .----------------------'
    ---------------------> (Zeilensprung)       '----------------------.
    
    Obwohl die zweite Möglichkeit eleganter wirkt hat die erste den Vorteil, daß
    der Drucker weniger Fehler macht, da er durch den Zeilenvorschub jedesmal neu
    justiert wird. Zur Verbesserung des Resultats kann ein Stelle ggfs. mehrmals
    gescannt werden.
  
C.) Aufarbeiten der Informationen
    
    Hier sind der Phantasie keine Grenzen gesetz. Neben der Speicherung in einer
    Textdatei können den Werten verschiedene ACII Zeichen zugeordnet werden. Auch
    mit kleinen Bitmaps in Zeichengröße kann man die Grafik gestallten.

Warum ist das den nun ein ASCII Scanner, nur weil man den Werten ASCII Zeichen zu-
ordnet? Nicht nur. In diesem Beispiel wird davon ausgegangen, daß sich der Drucker-
kopf zeichenweise bewegt und deshalb den Zeichensatzproportionen entspricht. Würde
man an Stelle des ASCII Zeichens einen Pixel setzen, so wäre das Bild nicht propor-
tional. 



TEIL III: Erweiterungsmöglichkeiten

Andere Sensoren:
Hier gibt es vielfältige Variationsmöglichkeiten. Von dem Photowiderstand über
Strichcodeleser oder andere Phototransistoren ist alles möglich. Im Fall eines
lichtempf. Widerstandes kann ein kleines LED am Sensorkopf das Resultat etwas
verbessern.

Pixelweise Druckeransteuerung:
Man könnte nun auf die Idee kommen den Druckerkopf pixelweise zu bewegen und
somit den ASCII Scanner in einen normalen Scanner um zu bauen. Obwohl das mehr
oder weniger funktioniert, kann ich nur davon abraten. Das Reultat ist wirklich
traurig. Allein das Scannen dauert fast einen halben Tag (Wartezeit nach jedem
Pixel)und dadurch kommt es oft zu Fehlern (Papier schief eingezogen, Sensor muß
Lichtverhältnissen angepaßt werden ...). Wer es dennoch probieren will sollte es
nur aus interesse machen und sich nicht viel von dem Reultat erhoffen. 

Der "DRUCKERPLOTTER":

Wem das alles bisher zu langweilig war, der bekommt nun noch etwas wirklich ab-
gedrehtes. Nach einem ähnlichen Prinzip wie der ASCII Scanner kann auch ein ein-
facher Plotter realisiert werden. Da dies eigentlich nicht hierher gehört, nur 
eine kurze Beschreibung:

       +--------+------+\____            ....... Elastisches Band
       | .....|=|Magnet| ___ \                       
       |.O      |______|/   \_\
       | ..../          |      
       |    /           |   ___
-------|   oGelenk      \__/__/
------ |  /  O        O ___/
       | /HHHHHHHHHHHHHHHHHHHHHHHHH>-      (Stift bewegbar)
       +-----O--------O+      Stift

Das Grundprinzip: Der Computer steuert den Elektomagneten an, der das Band anzieht
und über das Gelenk den Stift auf das Papier drückt. Ist der Magnet nicht ange-
steuert zieht das elast. Band das Gelenk wieder zurück.
Man kann den Magneten über den seriellen Port steuern und den Drucker wie gehabt 
mit ESCSequencen. Man sollte drei Druckdurchläufe planen um nach jedem die Stift
farbe wechseln zu können.
Übrigens läßt sich dieser "Plotter" dann auch als Einnadeldrucker mißbrauchen ....
aähm, ich sollte wohl jetzt aufhören ...








WARNUNG !!!
Also noch mal, auch wenn ich Euch langweile. Dieses Dokument ist keine komplette An-
leitung und liefert nur eine "Idee". Es ist weder vollständig noch kann ich für die
Richtigkeit garantieren. Demgemäß richtet sich diese Datei an Anwender mit gewissen
Erfahrungen im Bereich Hardware, Elektronik und Programmierung. Ihre Hardware ist
keinesfalls dafür gedacht den vorgeschlagenen "Mißbrauch" damit zu treiben. Deshalb
sind nur sie selber verantwortlich für mögliche Schäden, egal welcher Art.
(c) BTS, Meph.1992-99



English manual
Scanned Graphics
Gescannte Grafiken
Pic. of the 'Scanner'
Bilder vom 'Scanner'

<< Index ('Other') <<