Bernd hat einen Epson Stylus SX 100 gedroppt.
Das Multifunktionsgeraet wurde zerlegt. Die Hauptplatine hat sich dematerialisiert.
Uebrig sind:
Beschriftungen: FC11B913F56 F KTH0351-2
Numerierung:
Die LEDs brauchen so 2-3 Volt, Strom ~20 mA bringt schon Licht.
die TO Pins am PCB sind: V+, Blau, Rot, Gruen.
Bei 5V Versorgung sollte mit folgenden Widerständen nach Erde gezogen werden fuer weisses Papier: Rot:50, Grün:50, Blau:220.
Spannung 1 mA:
+ \ - | 1 | 2 | 3 | 4 | 5 | Beschreibung des Pins |
---|---|---|---|---|---|---|
1 | x | N/C (so weit sich erkennen laesst) | ||||
2 | x | LED GND Rot | ||||
3 | x | LED GND Gruen | ||||
4 | x | LED GND Blau | ||||
5 | R | G | B | x | LED + |
Spannung 1 mA:
+ \ - | 6 | 7 | 8 | 9 | 10 | 11 | 12 | Vias | Geometrie | relativ | Vermutung | Beschreibung des Pins |
---|---|---|---|---|---|---|---|---|---|---|---|---|
6 | x | 0.61 | 1.85 | 1.51 | 1.85 | 1.85 | 1.85 | 1 | dünn | Startpuls | zwischen oberer Flaeche und Schrauben | |
7 | 1.22 | x | 1.34 | 0.99 | 1.34 | 1.34 | 1.33 | 2 | breit | oben | 3V3 | |
8 | 1.85 | 0.61 | x | 1.51 | 1.85 | 1.85 | 1.82 | 1 | dünn | Clock | von unten hochstechend | |
9 | 0.41 | 0.35 | 0.41 | x | 0.41 | 0.41 | 0.40 | 3-5 | breitestes | unten | GND | ueber #8 |
10 | 1.84 | 0.61 | 1.84 | 1.50 | x | 1.84 | 1.83 | 1 | breit | mitte | Vref | driftet langsam, wenn Versorgung angeklemmt (andere pins sind nah an GND) |
11 | 1.85 | 0.61 | 1.85 | 1.51 | 1.85 | x | 1.85 | 1 | dünn | 300/600 dpi | unter der Mittleren Flaeche, ueber #12 | |
12 | 1.84 | 0.61 | 1.84 | 1.50 | 1.83 | 1.84 | x | 1 | dünn | Aout | ueber der unteren Flaeche, unter #11 |
sieht verdammt nach http://rohmfs.rohm.com/en/products/databook/datasheet/module/contact_image_sensor/flatbed/lsh3008-ca10a.pdf aus
Startpuls wird bei fallender Clock gesampelt. Wenn Startpuls, dann werden die Werte in den Ausgabepuffer geschickt. Dann mit Clock rauscyceln. Belichtungszeit haengt wohl vom Intervall zwischen Startpulsen ab.
Was ich mache (funktioniert, kann man bestimmt noch reduzieren):
#define START 2 #define CLOCK 3 #define DPIMODE 4 bool dpimode = 1; uint16_t pixels = dpimode ? 5184 : 2592; uint32_t linetime = 20000; // us uint32_t sched = 0; void setup() { pinMode(START, OUTPUT); pinMode(CLOCK, OUTPUT); pinMode(DPIMODE, OUTPUT); digitalWrite(DPIMODE, dpimode); sched = micros(); } void loop() { digitalWrite(START, HIGH); digitalWrite(CLOCK, HIGH); digitalWrite(CLOCK, LOW); digitalWrite(START, LOW); for (uint16_t counter = 0; counter < 82 + pixels; counter += 1) { PORTD |= _BV(PORTD3); //delayMicroseconds(1); PORTD &= ~_BV(PORTD3); //delayMicroseconds(1); } sched += linetime; int32_t dt = sched - micros(); while (dt > 0x4000) { delayMicroseconds(0x4000); dt -= 0x4000; } if (dt > 0) delayMicroseconds(dt); }
import re, colorsys rex = re.compile('(?:<span[^>]*>)?([0-9].[0-9]{2})(?:</span>)?') def color(value, min, max): value = (value - min) / (max - min) (r,g,b) = [int(v*255) for v in colorsys.hls_to_rgb(value, 0.85, 1.0)] return "#{:02x}{:02x}{:02x}".format(r,g,b) def colorize(match): value = match.group(1) return '<typo bg:{1}>{0}</typo>'.format(value, color(float(value), 0.4, 2.5)) source = open("foo.txt").read() open("foo.txt", "w").write(rex.sub(colorize, source))