forked from olikraus/u8glib
-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathinfo.txt
476 lines (369 loc) · 20.6 KB
/
info.txt
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
351
352
353
354
355
356
357
358
359
360
361
362
363
364
365
366
367
368
369
370
371
372
373
374
375
376
377
378
379
380
381
382
383
384
385
386
387
388
389
390
391
392
393
394
395
396
397
398
399
400
401
402
403
404
405
406
407
408
409
410
411
412
413
414
415
416
417
418
419
420
421
422
423
424
425
426
427
428
429
430
431
432
433
434
435
436
437
438
439
440
441
442
443
444
445
446
447
448
449
450
451
452
453
454
455
456
457
458
459
460
461
462
463
464
465
466
467
468
469
470
471
472
473
474
475
476
========================================================
overview on displays: http://beck-oled-lcd-tft-display.de/
handy displays: http://www.module.ro/nokia_3510.html
open source display software driver: http://serdisplib.sourceforge.net/
baugleiche nokia modelle
nokiaport.de
nokia 2310 TFT, 65.000 Farben, 96 x 68 Pixel
Display ist auch in 1600 2310 6125 vielleicht auch 1208 1209
baugleich mit 1110 1110i 1112 1200 1208 1600 2310 2610 6030
Bei der suche nach dem 1600, hinweis auf
A) ST7626 65K Color 68 X 98RGB -- COG 68(8/16), 80(8/16), 4L, 3L
http://www.sitronix.com.tw/sitronix/product.nsf/Doc/ST7626?OpenDocument
(Quelle: http://forum.lcdinfo.com/viewtopic.php?t=2735)
B) Andere quelle spricht vom PCF8833 für das 1600
http://rossum.posterous.com/screen-play-lots-of-other-screens-for-microco
https://sourceforge.net/projects/nokiasuperbreak/
--> sourcecode benutzt den PCF8833
Dann gibt es noch diesen da: SPFD54124B
vielleicht kompatibel mit dem nokia 6100, controller wären dann S1D15G10 oder PCF8833
Nokia Display tutorial by Jams Lynch
Epson datasheet EPSON-S1D15G00_REV1_0.pdf
Phillips datasheet PHILIPS-lds176_spec.pdf
Phillips PCF8833 datasheet philips-PCF8833_1.pdf
Displays, die man mal kaufen könnte
DFRobot ST7920
http://www.komputer.de/zen/index.php?main_page=product_info&products_id=146&zenid=b4dc26bdef02415db0d74e51121d4bcb
oder hier:
http://www.mindkits.co.nz/store/led-lcds/128x64-graphic-lcd
Von Newhaven gibt es auch ein ST7920 display:
http://www.newhavendisplay.com/specs/NHD-19232WG-BTMI-VT.pdf lieferbar!!!
http://www.newhavendisplay.com/app_notes/ST7920.pdf
Das ST7920 gibt es auch hier:
http://www.komputer.de/zen/index.php?main_page=product_info&cPath=30&products_id=146
auch interessant:
http://www.ledsee.com/index.php?page=shop.browse&category_id=24&option=com_virtuemart&Itemid=1
z.B. ein 192x64 display,
4D displays:
http://www.tigal.com/category/148
oder von hier:
http://www.tinkersoup.de/product_info.php?products_id=359
Sparkfun Color LCD Shield (Nokia 6100)
http://www.sparkfun.com/products/9363
Das Sparkfun Nokia 6100 display gibt es im arduino shop
http://store.arduino.cc/ww/index.php?main_page=product_info&cPath=11&products_id=125
oder in berlin zu haben:
http://www.tinkersoup.de/product_info.php?products_id=427
http://www.shieldlist.org/nuelectronics/colorlcd-joystick
http://www.shieldlist.org/nuelectronics/tft-2.8-lcd
http://www.display3000.com/ --> komisch, sehr sparsam mit dokumentation
http://www.watterott.com/de/MI0283QT-2-Adapter ---> GUTER PREIS, deutsch?
auch interessant:
http://www.seeedstudio.com/depot/grove-oled-display-12864-p-781.html?cPath=163_167
Nokia LCD 84x48
http://www.komputer.de/zen/index.php?main_page=product_info&cPath=0&products_id=74
oder dieses:
http://www.komputer.de/zen/index.php?main_page=product_info&cPath=32&products_id=52
Newhaven 128x64 OLED mit SSD1325 (16 Graustufen):
http://www.newhavendisplay.com/index.php?main_page=product_info&cPath=315&products_id=3621
mouser:
http://de.mouser.com/ProductDetail/Newhaven-Display/NHD-27-12864UCY3/?qs=EQmeiuRlVUS%252btJZDdlK%252bDg%3d%3d
FAZIT:
Nokia 6100 color lcd wäre mal was: http://www.tinkersoup.de/product_info.php?products_id=427
========================================================
21.10.2011
- U8G_DEV_MSG_PRIMITIVE_START und U8G_DEV_MSG_PRIMITIVE_END durch U8G_DEV_MSG_IS_BBX_INTERSECTION ersetzen
--> 22.10.2011 ERLEDIGT
- check for bbx --> nachricht an device
--> 24.10.2011 ERLEDIGT
- check for bbx --> in den high level procedures implementieren
--> 24.10.2011 ERLEDIGT
- COM treiber schreiben
--> 23.10.2011 ERLEDIGT
- die WIDTH / HEIGHT nachrichten zusammenfassen und die größen in der haupt-struktur ablegen.
--> erstmal aufgeschoben
- dev_rot und dev_stdout sind hinsichtlich der internen speicherverwendung inkonsistent.
jede dev sollte einen öffentliche speicher besitzen, der irgendwie als parameter übergeben wird.
gleiches wird wohl für den COM treiber gelten.
--> 22.10.2011 ERLEDIGT (rot erscheint aber nicht mehr als device, sondern ist jetzt eine api funktion)
.... noch keine 100% lösung... siehe nächster punkt
--> nochmal alles angepasst
- Im moment greift der dev treiber noch über das u8g auf seinen eigenen speicher zu. das ist schlecht,
weil damit keine doppelt devices realisiert werden können.
den devices muss ihr eigener speicher übergeben werden
zusätzlicher parameter an die device-funktionen
--> nein, der parameter ist in der u8g struktur enthalten
--> 22.10.2011 ERLEDIGT
--> nochmal alles angepasst, mem parameter nicht mehr in der struct --> argument der device function
- das pbm device muss noch angepasst werden
--> 22.10.2011 ERLEDIGT
- die anderen rotations procedures schreiben (rot180, rot270), rot180 funktioniert
--> 23.10.2011 ERLEDIGT
- stdout funktioniert nicht richtig, wenn die höhe nicht durch 8 teilbar ist (sieht man beim rot180)
--> 23.10.2011 ERLEDIGT (dabei auch einen fehler in den page routinen gefunden
- Der com Treiber braucht noch eine PROGMEM Sequence Write funktion
--> 23.10.2011 ERLEDIGT
31.10.2011
- cu12 font: upper lower page mit bdf2u8g benutzen und einen font erzeugen
--> 31.10.2011 ERLEDIGT
- die ttf fonts convertieren
--> 31.10.2011 ERLEDIGT
- pcs fonts convertieren
--> 31.10.2011 ERLEDIGT
- alles geeignet ablegen
--> 31.10.2011 ERLEDIGT
- prüfen: weglassen nicht benötigter funktionen durch den linker: Funktioniert das auch indirekt mit nicht benutzten Strukturen (u8g_dev_t)?
mal überprüfen, wenn es mehrere com devices pro display gibt
konkret ist die frage, ob mehrere devices in einer datei ligen dürfen.
--> siehe unten
- generische delay function
--> siehe unten
- generische callback procedure für pb8v1 erstellen und in den device procedures aufrufen
--> ERLEDIGT
- mehr tests mit buchstaben rotation und bildschirm rotation erstellen. Im zusammenhang mit den IsBBXIntersection bin ich mir
da nicht so sicher, ob das funktioniert
--> siehe unten
- Prüfen, was passiert, wenn ein illegales zeichen abgerufen wird.
--> ERLEDIGT (hinreichend geprüft im picgen)
- Umsetzen font format 1: data len muss noch angepasst werden, da die struktur ja jetzt nur 4 bytes groß ist
--> 4.11.2011 alles ERLEDIGT
- ausgabe der zeichen sollte bei 1 beginnen (picgen und bdf2u8g ändern!)
--> 4.11.2011 wohl ERLEDIGT
- die berechnungsroutine der font größe an format 1 anpassen
--> 9.11.2011 ERLEDIGT
- fonts müssen bei 0 (oder 1) anfangen können --> picgen anpassen, ggf format 0 anpassen
es tritt noch ein fehler hier auf:
../bdf2u8g/bdf2u8g -l 78 -u 79 ../bdf/10x20.bdf u8g_font_10x20_78_79 u8g_font_10x20_78_79.c > /dev/null
wieso taucht da ein code 128 auf????
--> 7.11.2011 ERLEDIGT --> format 0 komplett umgestellt, fehler waren wohl die positionsangaben für A und a
- Encoding aus format 0 entfernen, ende byte entfernen
--> 9.11.2011 ERLEDIGT
31.10.2011
- Capital A berechnung: Wenn a nicht vorhanden, dann 0 nehmen --> number fonts!
--> 11.11.2011 ERLEDIGT
- Warum wird beim cursor font das das " " nicht angezeigt?
--> 11.11.2011 ERLEDIGT
- pb8v1 --> siehe unten
1) device structur um color index erweitern
2) routinen so umbauen, dass überall das dev-arg übergeben wird
- fehler gefunden: wenn ein g mit dem 10x20 font an 0,5 geschrieben wird, dann wird das g nur zum teil gezeichnet.
g ist 12 pixel hoch und hat ein y von -4, obere linke ecke der bounding box wäre dann 5 + 4 - 12 + 1= -3 + 1
--> in DrawGlyph korrigiert, aus
if ( u8g_IsBBXIntersection(u8g, x, y-h-1, w, h) == 0 )
wurde
if ( u8g_IsBBXIntersection(u8g, x, y-h+1, w, h) == 0 )
ist aber auch (noch) nicht korrekt: das g an (0,5) geht immer noch nicht
--> das problem ist die intersection bedingung in u8g_pb8v1_IsYIntersection
if ( c2 && c3 ) return 0;
allerdings wäre gerade diese bedingung wichtig für die performance: wenn c2 und c3 true sind, dann sind
beide grenzen oberhalb von y2. Wegen der unsigned rechnung ist das tatsächlich auch wahr.
allerdings, man könnte eine zusätzliche prüfung einführen, nämlich y1 < y2
--> soweit gelöst durch einführung einer neuen bedingung c
--> nochmal alle bedingungen zur intersection systematisch prüfen.
--> soweit in dem extra programm durchgeführt und neue routine ermittelnt --> muss noch übertragen werden + prüfung ob das tut
--> 16.11.2011 ERLEDIGT
- wird bei DrawFrame eigentlich die intersection geprüft ---> mal nachschauen
--> siehe unten
- restructurierung: addons aufsplitten in "tools" und "sys". Verzeichniss "arduino" kommt nach "sys".
testapps wird in "stdout" umbenannt und kommt auch nach "sys"
--> 16.11.2011 ERLEDIGT
- micror font herausnehmen (schon erledigt für picgen, fehlt noch build)
build script und .h datei erledigt
--> 19.11.2011 ERLEDIGT
- u8g_DrawStr(&u8g, 80, 9, 1, "gabc"); sieht falsch aus (das g ist nach rechts (unten) statt nach unten (rechts) verschoben) --> helloworld sdl
--> 19.11.2011 ERLEDIGT (x,y waren falsch für dir 1, 2 & 3)
- place u8g_dev_arg_pixel_t into u8g struct, remove color_index, replace by color from pixel_arg
--> 19.11.2011 ERLEDIGT (jedenfalls das meiste)
- pb8v1: Es wird bei den 4 richtungen immer der color index 1 verwendet --> ändern
--> 19.11.2011 ERLEDIGT (war auskommentiert)
- com routine: erweitern. es macht vermutlich mehr sinn, einiges explizit einzubauen:
* adress line (d.h. data/command), ersetzt das EXTRA signal --> soweit erledigt
* reset
* chip select, ersetzt das ENABLE/DISABLE signal --> in umsetzung....
enable und write signal (für KS0108) sollte intern behandelt werden.
--> 20.11.2011 ERLEDIGT
- KS0108 umsetzen
--> 21.11.2011 ERLEDIGT
- das pbm und stdout device in den entsprechenden system ordner verschieben (ähnlich sdl device)
--> 22.11.2011 ERLEDIGT
- SetPixel und Set8Pixel in DrawPixel und Draw8Pixel umbenennen
--> siehe unten
- DrawBitmap
--> 23.11.2011 ERLEDIGT
- gprof variante: die pb8v1 base function aufrufen. teilweise umgesetzt, noch testen
--> siehe unten
- Optional: man sollte von rechtecken doch eher die untere linke ecke angeben
naja, zumindest nach der doku ist das gleich wie in der glcd lib
--> BLEIBT WIE ES IST.
23.11.2011
- pb8v1
1) device structur um color index erweitern
--> ERLEDIGT
2) routinen so umbauen, dass überall das dev-arg übergeben wird
--> ERLEDIGT
- wird bei DrawFrame eigentlich die intersection geprüft ---> mal nachschauen
- SetPixel und Set8Pixel in DrawPixel und Draw8Pixel umbenennen
--> ERLEDIGT, 23.11.2011
- die WIDTH / HEIGHT nachrichten zusammenfassen und die größen in der haupt-struktur ablegen.
--> erstmal aufgeschoben
--> ERLEDIGT
- prüfen: weglassen nicht benötigter funktionen durch den linker: Funktioniert das auch indirekt mit nicht benutzten Strukturen (u8g_dev_t)?
mal überprüfen, wenn es mehrere com devices pro display gibt
konkret ist die frage, ob mehrere devices in einer datei ligen dürfen.
Es scheint grundsätzlich nicht für COMMONS zu gelten. Wenn -fno-commons gesetzt ist oder das attribut nocommens angegeben is,
dann werden variablen direct in die bss section geladen.
--> ERLEDIGT
- mehr tests mit buchstaben rotation und bildschirm rotation erstellen. Im zusammenhang mit den IsBBXIntersection bin ich mir
da nicht so sicher, ob das funktioniert
- gprof variante: die pb8v1 base function aufrufen. teilweise umgesetzt, noch testen
- documentation: picture loop: (1) use procedure (2) do all inits (font, color index)
- zur Erinnerung:
sed
find . -name "*.[hc]" -exec sed -i 's/m2_rom_byte_p/m2_rom_char_p/g' {} \;
ffmpeg (aus einzelbildern animation erstellen)
ffmpeg -f image2 -i img%02d.jpg -b 500k output2.mpg
sdl surface speichern
http://www.libsdl.org/docs/html/sdlsavebmp.html
aus bildern gif erzeugen
convert -delay 100 -loop 0 image*.jpg animation.gif
- Interface for dogm128.h schreiben
spacetrash.c compiliert schon mal, dog_itoa muss noch übernommen werden, noch nichs getestet
--> ERLEDIGT, 25.11.2011 (.. für SLD, aber texte sind allerdings ein pixel zu tief)
- spacetrash sollte nicht in dem normalen source folder liegen (zumindest nicht die variante, die noch das alte api benutzt)
--> ERLEDIGT, 30.11.2011 (das ganze dogm api umgezogen)
- spacetrash: fps counter implementieren
umgesetzt für das .pde file --> mal testen
--> ERLEDIGT, 29.11.2011
- spacetrash: auf das neue api umstellen
- spacetrash kleiner machen.
vielleicht hilft: nm --size-sort SpaceTrash.elf
- bei spacetrash rutscht der FPS counter über die punkte-anzeige... warum?
- font routinen & use cases zur font metrik berechnung
- GetWidth, GetHeight --> das sollten keine unterprogrammaufrufe sein. Vielmehr sollte die dimension des displays in der u8g struct gecached werden.
--> ERLEDIGT, 23.11.2011
- u8g_DrawStrP() fehlt
--> ERLEDIGT, 24.11.2011
- warum gibt es ein #ifdef ARDUINO um die dev treiber????
--> muss ich noch machen (27.11.2011)
--> ERLEDIGT, 27.11.2011
- generische delay function
--> vor allem deshalb wichtig, damit wir die Arduini-abhängigen includes aus den dev treibern herausbekomment
--> u8g_dev_dogs102 muss noch auf u8g_Delay() umgestellt werden
--> ERLEDIGT, 27.11.2011
- hw-spi programmieren
--> ERLEDIGT, 29.11.2011
- pb8v2 programmieren
--> ERLEDIGT, 02.12.2011
- pb8v4 programmieren
- was die pb proceduren betrifft, könnte man durchaus ein paar generische routinen schreiben:
Clear, x/y intersection, u8g_pb8v2_WriteBuffer
u8g_pb.c erstellt
--> ERLEDIGT, 2.12.2011
- wenn SetFont nicht ausgeführt wurde, stürzt u8g_GetFontBBXWidth ab, weil der font ptr NULL ist
--> dokumentieren
- Wenn kein font gesetzt wurde, stürzen die font funktionen ab --> abfangen
- set8pixel procedures optimieren
soweit abgeschlossen, es wird etwas mehr platz benötigt als bei dogm128
--> ERLEDIGT, 2.12.2011
- Namenskonvention für devices
u8g_dev_<chip>_<display_or_size>
<chip>: name of the display controller
<display_or_size>: <width>x<height> or name of the display
--> dokumentieren und umbenennen
- Cursor Mal-Routinen implementieren
wenn man dem subsystem mitteilt, dass sich nur der cursor geändert hat, müssten nur die pages neu
gezeichnet werden, wo der cursor vorher war und wo er dann hinkommt.
--> aufwändig
--> cursor mal routinen möglichst einfach halten
--> ERLEDIGT, 2.12.2011
- u8g_cursorr.c weiter reduzieren und die 255 am ende entfernen (range limit)
--> ERLEDIGT, 2.12.2011
- Cursor Mal-Routinen am ende von Next aufrufen, hide&show procedure
--> ERLEDIGT, 17.12.2011
- DrawStr routinen: jeweils eine für die richtungen, dir parameter entfallen lassen
--> ERLEDIGT, 17.12.2011
- tastatur handling für spacetrash
display muss noch rotiert werden --> erweiterung des dogm wrappers
--> ERLEDIGT, 21.12.2011
- chess portieren
- pins klappen gar nicht :-(
--> ERLEDIGT, 20.12.2011
- spacetrash rotation um 180 auf dem dogs102 klappt nicht
--> ERLEDIGT, 21.12.2011
- fehlende zeilen bei spacetrash mit dogs102
--> gilt auch für das 0 Grad spacetrash
--> ERLEDIGT, 20.12.2011 (War ein fehler in den box routinen)
- dev handler: einsetzen der ESC-Write procedure
--> ERLEDIGT, 23.12.2011
- irgendwas stimmt mit dem unifont nicht --> arduino Hello World
--> ERLEDIGT, 30.12.2011 (script war falsch)
- Image Draw Procedure
höhe, breite, bits pro pixel (?), rohdaten
statt bits pro pixel, lieber eigene proceduren
- NHD 27 --> 2-bit treiber schreiben, den alten umbenennen, aber wie?
--> ERLEDIGT
- Beschreibung im Wiki
C++ Prototype:
C Prototype:
Description:
Arguments:
Returns:
Use: Inside/Outside Picture Loop
Note:
Example:
See also:
- conversions, idee: alles in rst schreiben und von dort nach google code und pdflatex convertieren
http://docutils.sourceforge.net/docs/index.html
http://code.google.com/p/wikir/
sudo apt-get install python-docutils --> rst2xyz (various conversions)
sudo apt-get install python-setuptools --> easy_install
easy_install wikir
wikir --> convert rst to google code wiki
rst quick ref: http://docutils.sourceforge.net/docs/user/rst/quickref.html
rst2html file.rst > file.html
--> ERLEDIGT, eigener convertierer nach HTML
- antialiased lines:
http://en.wikipedia.org/wiki/Xiaolin_Wu%27s_line_algorithm --> pseudo code
http://www.codeproject.com/KB/GDI/antialias.aspx --> integer version
http://freespace.virgin.net/hugo.elias/graphics/x_wuline.htm
Michael Abrash's Graphics Programming Black Book Special Edition, p 780
- font reference punkt
* Referenzpunkt des Font Autors
* linke untere/obere ecke der minimalen bounding box des strings
breite: string
höhe: max ascent + max descent der zeichen des strings
* linke untere/obere ecke der gA box
breite: string
höhe: ascent von 'A' + descent von 'g' der zeichen des strings font_ptr[5] - font_ptr[12]
referenzposition bezogen auf die linke untere ecke: dy = -font[12]
* linke untere/obere ecke der font box
breite: string
höhe: ??? problem ist, wir kennen gar nicht den max ascent
der zeichen ascent ist nämlich h-y, und darüber müsste man mal das max bilden
das minimum über y haben wir ja (aber nicht abgespeichert), dann wäre die font box ascent-descent (da negativ) groß
font_ptr[13]-font_ptr[14]
referenzposition bezogen auf die linke untere ecke: dy = -font[14]
Idee:
* bounding box berechnung festlegen: left_gA, left_max, Manuell, min box, gA Box, max box
--> wie wäre es nur die höhen festzulegen, die breite könnte man später dazunehmen
- min, ga, max, manual
* referenzpunkt festlegen: Font (default), low left, low center, low right, ....
--> wenn nur die höhen berechnet werden, wird das auch mit dem referenzpunkt einfacher. es gibt dann nur vier:
- oben, mitte, unten, font (baseline)
Einschränkungen: Wenn keine bbx berechnung festgelegt ist, dann muss der referenzpunkt immer font sein oder low left, center left, upper left
(progmem ersparnis!)
* alles per callback lösen (hm mal sehen)
* Berechnung (x,y) a, d
# font - min, ga, max --> keine transformation nötig
# unten - ga --> y = y + decent
# unten - max --> y = y + decent (korrektur um die enfernung: unten zu baseline)
# oben - ga --> y = y + ascent (korrektur um die enfernung: oben zu baseline)
# oben - max -> wie oben
# mitte - ga --> zunächst y nach unten transformieren (ascent + descent)/2 dann wie unten handlen
vielleicht brauchen wir die min box gar nicht... oder bauen das mal als special ein.
SetRefHeightFontOrigin(u8g) <-- eventuell nicht nötig
u8g->ascent = 0
u8g->descent = 0
SetRefHeightUpperCase(u8g)
u8g->ascent = font_ptr[5]
u8g->descent = font_ptr[12]
SetRefHeightMax(u8g)
u8g->ascent = font_ptr[13]
u8g->descent = font_ptr[14]
SetRefHeightManual(u8g, ascent, descent)
u8g->ascent = ascent
u8g->descent = descent
SetRefHeightMinimal(u8g, char *s)
u8g->ascent = ascent(s)
u8g->descent = descent(s)
SetRef