Page 1 of 1

Elektor - Laserscanner (für Text) aus PC-Lüfter

Posted: Tue 29 Aug, 2006 10:40 pm
by richard
Servus Freaks,

das Thema sagt ja eigentlich schon alles :lol:

Was haltet ihr von der Sache?
(Wenn Bedarf besteht, werde ich die paar Seiten einscannen)

Posted: Wed 30 Aug, 2006 7:01 am
by chw9999
Die meinen doch bestimmt "scannen von Text in den Computer" (a la Flachbrettscanner), nicht die Ausgabe von Text via Laser aus dem Computer, oder? ;-)

Naja, mit Rastern und synchronisiertem Blanking könnte man ja zeilenweise flackerflacker-Text darstellen... :?:

Cheers
Christoph

Posted: Wed 30 Aug, 2006 11:48 am
by turntabledj
Sowas in der Art hatten wir hier doch glaub schon mal gesehen..!?
Nur wurde kein PC-Lüfter verwendet, sondern die Mechanik sah eher aus, wie ein Kettenkarusell...

Posted: Wed 30 Aug, 2006 12:44 pm
by afrob

Posted: Thu 07 Sep, 2006 7:34 pm
by dominik
Finde die scanvariante echt genial.
das ist fast so, wie mit den 12 Leuchtdioden, die in ner kugel den text Projezieren.
(12 LED übeereinander am Rand des Rotors. der Rotor, auf dem die Elektrik sitzt, dreht sich so schnell, dass er fast verschwindet.)
laufschrift ist dabei auch einfach :D

@Richard: wenns dazu ne Schaltung + nette Erklärung gibt, wärs nett, wenn Du das mal für mich einscannen würdest.
Wird das über AVR oder PIC gesteuert?


Hat jemand ahnung, wie ich dem AVR beibringe, die Buchstaben(Bytes) auf einzelne Punkte --> Reihen/Zeilen zu verteilen :?:


Dominik

Posted: Thu 07 Sep, 2006 7:48 pm
by floh
leg dir für jedes Zeichen ein zweidimensionales Array an und fülle es mit den nötigen Bits pro Reihe (stell dir einfach ein Dot-Matrix vor). Bei der Ausgabe holst du für die erste Zeile jeweils die erste Zeile der benötigten Arrays (Zeichen) und gibst die aus.

Posted: Thu 07 Sep, 2006 8:02 pm
by random
data = (char_table[text[((i)/(6-compressed_charset))]-32][((i)%(6-compressed_charset))] << shift);

00024 unsigned char char_table[103][6] ={{0, 0, 0, 0, 0, 0},
00025 {0, 0, 79, 0, 0, 0},
00026 {0, 7, 0, 7, 0, 0},
00027 {20, 127, 20, 127, 20, 0},
00028 {36, 42, 127, 42, 18, 0},
00029 {35, 19, 8, 100, 98, 0},
00030 {54, 73, 85, 33, 80, 0},
00031 {0, 5, 3, 0, 0, 0},
00032 {0, 28, 34, 65, 0, 0},
00033 {0, 65, 34, 28, 0, 0},
00034 {20, 8, 62, 8, 20, 0},
00035 {8, 8, 62, 8, 8, 0},
00036 {0, 160, 96, 0, 0, 0},
00037 {8, 8, 8, 8, 8, 0},
00038 {0, 96, 96, 0, 0, 0},
00039 {32, 16, 8, 4, 2, 0},
00040 {62, 81, 73, 69, 62, 0},
00041 {0, 66, 127, 64, 0, 0},
00042 {66, 97, 81, 73, 70, 0},
00043 {33, 65, 69, 71, 57, 0},
00044 {24, 20, 18, 127, 16, 0},
00045 {39, 69, 69, 69, 57, 0},
00046 {60, 74, 73, 73, 48, 0},
00047 {1, 113, 9, 5, 3, 0},
00048 {54, 73, 73, 73, 54, 0},
00049 {6, 73, 73, 41, 30, 0},
00050 {0, 108, 108, 0, 0, 0},
00051 {0, 172, 108, 0, 0, 0},
00052 {8, 20, 34, 65, 0, 0},
00053 {20, 20, 20, 20, 20, 0},
00054 {0, 65, 34, 20, 8, 0},
00055 {2, 1, 81, 9, 6, 0},
00056 {50, 73, 121, 65, 62, 0},
00057 {126, 9, 9, 9, 126, 0},
00058 {127, 73, 73, 73, 54, 0},
00059 {62, 65, 65, 65, 34, 0},
00060 {127, 65, 65, 65, 62, 0},
00061 {127, 73, 73, 73, 73, 0},
00062 {127, 9, 9, 9, 9, 0},
00063 {62, 65, 73, 73, 58, 0},
00064 {127, 8, 8, 8, 127, 0},
00065 {0, 65, 127, 65, 0, 0},
00066 {33, 65, 65, 65, 63, 0},
00067 {127, 8, 20, 34, 65, 0},
00068 {127, 64, 64, 64, 64, 0},
00069 {127, 2, 4, 2, 127, 0},
00070 {127, 2, 4, 8, 127, 0},
00071 {62, 65, 65, 65, 62, 0},
00072 {127, 9, 9, 9, 6, 0},
00073 {62, 65, 97, 65, 190, 0},
00074 {127, 9, 25, 41, 70, 0},
00075 {38, 73, 73, 73, 50, 0},
00076 {1, 1, 127, 1, 1, 0},
00077 {63, 64, 64, 64, 63, 0},
00078 {31, 32, 64, 32, 31, 0},
00079 {127, 32, 16, 32, 127, 0},
00080 {99, 20, 8, 20, 99, 0},
00081 {3, 4, 120, 4, 3, 0},
00082 {97, 81, 73, 69, 67, 0},
00083 {0, 127, 65, 65, 0, 0},
00084 {2, 4, 8, 16, 32, 0},
00085 {0, 65, 65, 127, 0, 0},
00086 {4, 2, 1, 2, 4, 0},
00087 {64, 64, 64, 64, 64, 0},
00088 {0, 1, 2, 4, 0, 0},
00089 {32, 84, 84, 84, 120, 0},
00090 {127, 72, 68, 68, 56, 0},
00091 {56, 68, 68, 68, 68, 0},
00092 {56, 68, 68, 72, 127, 0},
00093 {56, 84, 84, 84, 24, 0},
00094 {8, 126, 9, 1, 2, 0},
00095 {24, 164, 164, 164, 124, 0},
00096 {127, 8, 4, 4, 120, 0},
00097 {0, 68, 125, 64, 0, 0},
00098 {32, 64, 68, 61, 0, 0},
00099 {127, 16, 40, 68, 0, 0},
00100 {0, 65, 127, 64, 0, 0},
00101 {124, 4, 24, 4, 120, 0},
00102 {124, 8, 4, 4, 120, 0},
00103 {56, 68, 68, 68, 56, 0},
00104 {252, 36, 36, 36, 24, 0},
00105 {24, 36, 36, 36, 252, 0},
00106 {124, 8, 4, 4, 8, 0},
00107 {72, 84, 84, 84, 32, 0},
00108 {4, 127, 68, 64, 32, 0},
00109 {60, 64, 64, 32, 124, 0},
00110 {28, 32, 64, 32, 28, 0},
00111 {60, 64, 48, 64, 60, 0},
00112 {68, 40, 16, 40, 68, 0},
00113 {12, 80, 80, 80, 60, 0},
00114 {68, 100, 84, 76, 68, 0},
00115 {0, 8, 54, 65, 0, 0},
00116 {0, 0, 127, 0, 0, 0},
00117 {0, 65, 54, 8, 0, 0},
00118 {8, 4, 8, 16, 8, 0},
00119 {0, 0, 0, 0, 0, 0},
00120 {32, 85, 84, 85, 120, 0},
00121 {56, 69, 68, 69, 56, 0},
00122 {56, 66, 64, 66, 56, 0},
00123 {124, 11, 10, 11, 124, 0},
00124 {60, 67, 66, 67, 60, 0},
00125 {60, 65, 64, 65, 60, 0},
00126 {254, 9, 73, 73, 54, 0}};

compressed_charset (0 | 1) "frisst" die leerzeichen zwischen den zeichen.
der Charset stammt aus meinen Spielereien mit 5x8 DOT-Matrix-LED-Displays. Irgendwie muss ich die 10 tück noch mal zusammenbasteln ;-)

Die ganze Zeile addressiert ein Byte aus dem ganzen String anhand des darzustellenden ASCII-Zeichens.
Zeilennummern müsst ihr selbst entfernen :twisted:

i ist der laufindex durch den text, shift schiebt den text nach unten

/medra