{"id":247,"date":"2017-01-03T06:03:47","date_gmt":"2017-01-03T05:03:47","guid":{"rendered":"http:\/\/www.skie.info\/?p=247"},"modified":"2018-02-12T08:05:55","modified_gmt":"2018-02-12T07:05:55","slug":"ssd1306-library-zur-darstellung-von-text","status":"publish","type":"post","link":"http:\/\/www.skie.info\/?p=247","title":{"rendered":"SSD1306 Library zur Darstellung von Text"},"content":{"rendered":"<div id=\"attachment_251\" style=\"width: 310px\" class=\"wp-caption aligncenter\"><a href=\"http:\/\/www.skie.info\/wp-content\/uploads\/Beispiel.jpg\"><img loading=\"lazy\" decoding=\"async\" aria-describedby=\"caption-attachment-251\" class=\"size-medium wp-image-251\" src=\"http:\/\/www.skie.info\/wp-content\/uploads\/Beispiel-300x225.jpg\" alt=\"\" width=\"300\" height=\"225\" srcset=\"http:\/\/www.skie.info\/wp-content\/uploads\/Beispiel-300x225.jpg 300w, http:\/\/www.skie.info\/wp-content\/uploads\/Beispiel-768x576.jpg 768w, http:\/\/www.skie.info\/wp-content\/uploads\/Beispiel.jpg 1024w\" sizes=\"auto, (max-width: 300px) 100vw, 300px\" \/><\/a><p id=\"caption-attachment-251\" class=\"wp-caption-text\">OLED Display<\/p><\/div>\n<p>Ich habe eine kleine Library f\u00fcr den Displaycontroller SSD1306<br \/>\ngeschrieben, wie er h\u00e4ufig bei den 0.96\" OLED-Displays eingesetzt wird.<br \/>\nAls Schnittstelle wird IIC benutzt.<br \/>\n<!--more--><br \/>\nDie Library zeichnet lediglich Text auf das Display.<br \/>\nDer Vorteil bzgl. Adafruit und u8glib ist u.a., dass bei weitem nicht so<br \/>\nviel Flash ben\u00f6tigt wird (etwa 1400 kByte wenn man nur \"Hallo Welt!\"<br \/>\naufs Display schreibt, Adafruit braucht da rund 10 kByte, u8glib etwa 8<br \/>\nkByte) und auch beim RAM sieht es erheblich besser aus als bei den<br \/>\n\u00fcblichen Libs die jeweils mit einem Puffer in Displaygr\u00f6\u00dfe arbeiten,<br \/>\nd.h. man braucht \u00fcber ein 1kByte RAM alleine f\u00fcr die Lib.<br \/>\nMeine Lib arbeitet ohne Puffer, daher wird hierf\u00fcr auch kein statischer<br \/>\nRAM f\u00fcr einen Puffer ben\u00f6tigt. Ich hab es nicht getestet, aber auch 128<br \/>\nByte RAM m\u00fcssten locker ausreichend sein.<br \/>\nUm das gesamte Display zu beschreiben (168 Zeichen) ben\u00f6tigt die Lib<br \/>\nhier bei 400 kHz IIC-Clock nur ca. 35 ms, f\u00fcr eine Zeile (21 Zeichen)<br \/>\nsind es ca. 4,5 ms. Adafruit und u8glib ben\u00f6tigen beide alleine f\u00fcr eine<br \/>\nZeile schon mehr als 20 ms.<br \/>\nBei den Befehlen f\u00fcr das Display habe ich mich an den Befehlen von Peter<br \/>\nFleury's Lib f\u00fcr die <a class=\"part-autolink\" title=\"Bauteil-Information\" href=\"https:\/\/www.mikrocontroller.net\/part\/HD44780\">HD44780<\/a>-Displays gehalten.<br \/>\nGetestet hab ich die Lib mit einem ATMega168PA und einem ATMega328P,<br \/>\nbeide mit 16 MHz Quarz, den II2C hab ich auf 400 kHz eingestellt gehabt,<br \/>\nsie sollte auch auf einem ATMega88PA laufen.<\/p>\n<p>Interessant d\u00fcrfte die Lib f\u00fcr all jene sein, die kleinere <a class=\"wiki\" title=\"Link zu Wiki-Artikel\" href=\"https:\/\/www.mikrocontroller.net\/articles\/AVR\">AVR<\/a>s<br \/>\nbenutzten wollen, als die, die von ADAFRUIT und u8glib erwartet werden.<\/p>\n<p>Als n\u00e4chstes werde ich mich an die Portierung f\u00fcr die ATTinys dran<br \/>\nsetzen. Eine Grafik-Variante (mit der man auch Zeichnen kann) hab ich<br \/>\nauch fertig, allerdings braucht die noch Feintuning und sie ben\u00f6tigt<br \/>\neinen <a class=\"wiki\" title=\"Link zu Wiki-Artikel\" href=\"https:\/\/www.mikrocontroller.net\/articles\/AVR\">AVR<\/a> mit mehr als 1 kByte RAM (sie arbeitet mit einem Puffer).<\/p>\n<p>Download bei Github:\u00a0<a href=\"http:\/\/www.github.com\/sylaina\/oled-display\">http:\/\/www.github.com\/sylaina\/oled-display<\/a><\/p>\n","protected":false},"excerpt":{"rendered":"<p>Ich habe eine kleine Library f\u00fcr den Displaycontroller SSD1306 geschrieben, wie er h\u00e4ufig bei den 0.96\" OLED-Displays eingesetzt wird. Als Schnittstelle wird IIC benutzt.<\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"open","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":{"_jetpack_memberships_contains_paid_content":false,"footnotes":""},"categories":[4],"tags":[],"class_list":["post-247","post","type-post","status-publish","format-standard","hentry","category-programmierung"],"jetpack_featured_media_url":"","jetpack_sharing_enabled":true,"_links":{"self":[{"href":"http:\/\/www.skie.info\/index.php?rest_route=\/wp\/v2\/posts\/247","targetHints":{"allow":["GET"]}}],"collection":[{"href":"http:\/\/www.skie.info\/index.php?rest_route=\/wp\/v2\/posts"}],"about":[{"href":"http:\/\/www.skie.info\/index.php?rest_route=\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"http:\/\/www.skie.info\/index.php?rest_route=\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"http:\/\/www.skie.info\/index.php?rest_route=%2Fwp%2Fv2%2Fcomments&post=247"}],"version-history":[{"count":0,"href":"http:\/\/www.skie.info\/index.php?rest_route=\/wp\/v2\/posts\/247\/revisions"}],"wp:attachment":[{"href":"http:\/\/www.skie.info\/index.php?rest_route=%2Fwp%2Fv2%2Fmedia&parent=247"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"http:\/\/www.skie.info\/index.php?rest_route=%2Fwp%2Fv2%2Fcategories&post=247"},{"taxonomy":"post_tag","embeddable":true,"href":"http:\/\/www.skie.info\/index.php?rest_route=%2Fwp%2Fv2%2Ftags&post=247"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}