{"id":15399,"date":"2025-09-15T21:38:29","date_gmt":"2025-09-15T19:38:29","guid":{"rendered":"https:\/\/www.picademie.nl\/?p=15399"},"modified":"2025-10-07T17:29:21","modified_gmt":"2025-10-07T15:29:21","slug":"oled-display-pico","status":"publish","type":"post","link":"https:\/\/www.picademie.nl\/index.php\/2025\/09\/15\/oled-display-pico\/","title":{"rendered":"OLED display (Pico)"},"content":{"rendered":"\n<pre class=\"wp-block-preformatted\">Een OLED&nbsp;(Organic Light-Emitting Diode)&nbsp;display is&nbsp;een schermtechnologie waarbij miljoenen pixels zichzelf verlichten, in plaats van dat ze afhankelijk zijn van achtergrondverlichting zoals bij LED displays.&nbsp;Hierdoor kan elke pixel individueel aan of uit worden geschakeld, wat resulteert in perfect zwart beeld, een extreem hoog contrast en levendige kleuren.&nbsp;De zelfverlichtende pixels zorgen er ook voor dat OLED displays erg dun kunnen zijn en een uitstekende kijkhoek hebben, waardoor het beeld scherp blijft, zelfs als je niet recht voor het scherm zit.&nbsp;<\/pre>\n\n\n\n<p>Ofschoon ik meerdere OLED displays in mijn bezit heb, heb ik tot mijn verbazing nog geen project met een OLED display gepubliceerd. Dit is het moment. <\/p>\n\n\n\n<p>Ik neem je mee in de basisaansturing van het display.<\/p>\n\n\n\n<p><em>&#8230;daar gaan we!<\/em><\/p>\n\n\n\n<p>Het SSD1306 OLED-scherm is verkrijgbaar in verschillende formaten (128&#215;64, 128&#215;32, 72&#215;40, 64&#215;48) en kleuren (wit, geel, blauw, geel + blauw).<\/p>\n\n\n\n<p>Het scherm dat ik gebruik communiceert door middel van het I2C protocol met de Pico. Je hebt dus maar vier draden nodig om een opstelling te maken. <\/p>\n\n\n\n<p><strong>Aansluittabel<\/strong><br>Sluit de draden als volgt aan:<\/p>\n\n\n\n<figure class=\"wp-block-image size-full is-resized\"><img loading=\"lazy\" decoding=\"async\" width=\"291\" height=\"130\" src=\"https:\/\/www.picademie.nl\/wp-content\/uploads\/2025\/09\/image.png\" alt=\"\" class=\"wp-image-15407\" style=\"width:313px;height:auto\"\/><\/figure>\n\n\n\n<p>Na het verbinden van het display met de Pico kun je nu Thonny opstarten, verbind de Pico ermee, kopieer onderstaande code in een nieuw bestand en start de code.<\/p>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\"\/>\n\n\n\n<p><strong>Thonny IDE<\/strong><br>Ik ga er van uit dat je weet hoe Thonny IDE werkt en hoe je de Raspberry Pi Pico ermee verbind. Weet je het niet of twijfel je? Kijk dan&nbsp;<a href=\"https:\/\/www.picademie.nl\/index.php\/2021\/02\/01\/aan-de-slag-met-raspberry-pi-pico\/\" target=\"_blank\" rel=\"noreferrer noopener\">hier<\/a>&nbsp;waar ik uitleg hoe je het kunt doen.<\/p>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\"\/>\n\n\n\n<p><strong>De Code<\/strong><br>Hieronder heb ik het basisscript geplaatst met als resultaat de bekende tekst als je iets voor het eerst op een display toont. De tekst start links op positie 0 en 10 punten van boven. Met de nummers kun je bepalen waar de tekst komt te staan.<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>import machine\nfrom machine import Pin, SoftI2C\nimport ssd1306\nfrom time import sleep\n\ni2c = machine.SoftI2C(scl=machine.Pin(13), sda=machine.Pin(12))\n\npin = machine.Pin(16, machine.Pin.OUT)\npin.value(0) \npin.value(1) \n\noled_width = 128\noled_height = 64\noled = ssd1306.SSD1306_I2C(oled_width, oled_height, i2c)\noled.fill(0)\noled.text('Hello, World!', 0, 10)\noled.show()\n<\/code><\/pre>\n\n\n\n<p><strong>SSD1306 commando&#8217;s<\/strong><br>Het voordeel van de SSD1306 is dat je het display op tekst- en pixelniveau met een aantal commando&#8217;s kunt besturen. Hiermee kun je de output volledig naar je hand zetten.<\/p>\n\n\n\n<pre class=\"wp-block-preformatted\"><mark style=\"background-color:rgba(0, 0, 0, 0)\" class=\"has-inline-color has-vivid-cyan-blue-color\">oled.poweroff()     <em># power off the display, pixels persist in memory<\/em><br>oled.poweron()      <em># power on the display, pixels redrawn<\/em><br>oled.contrast(0)    <em># dim<\/em><br>oled.contrast(255)  <em># bright<\/em><br>oled.invert(1)      <em># display inverted<\/em><br>oled.invert(0)      <em># display normal<\/em><br>oled.rotate(<strong>True<\/strong>)   <em># rotate 180 degrees<\/em><br>oled.rotate(<strong>False<\/strong>)  <em># rotate 0 degrees<\/em><br>oled.show()         <em># write the contents of the FrameBuffer to display memory<\/em><\/mark><\/pre>\n\n\n\n<p>De subklasse FrameBuffer biedt ondersteuning voor grafische primitieven.<\/p>\n\n\n\n<pre class=\"wp-block-preformatted\"><mark style=\"background-color:rgba(0, 0, 0, 0)\" class=\"has-inline-color has-vivid-cyan-blue-color\">oled.fill(0)                         <em># fill entire screen with colour=0<\/em><br>oled.pixel(0, 10)                    <em># get pixel at x=0, y=10<\/em><br>oled.pixel(0, 10, 1)                 <em># set pixel at x=0, y=10 to colour=1<\/em><br>oled.hline(0, 8, 4, 1)               <em># draw horizontal line x=0, y=8, width=4, colour=1<\/em><br>oled.vline(0, 8, 4, 1)               <em># draw vertical line x=0, y=8, height=4, colour=1<\/em><br>oled.line(0, 0, 127, 63, 1)          <em># draw a line from 0,0 to 127,63<\/em><br>oled.rect(10, 10, 107, 43, 1)        <em># draw a rectangle outline 10,10 to 117,53, colour=1<\/em><br>oled.fill_rect(10, 10, 107, 43, 1)   <em># draw a solid rectangle 10,10 to 117,53, colour=1<\/em><br>oled.text('Hello World', 0, 0, 1)    <em># draw some text at x=0, y=0, colour=1<\/em><br>oled.scroll(20, 0)                   <em># scroll 20 pixels to the right<\/em><\/mark><\/pre>\n\n\n\n<p>Deze routine is ook interessant:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code><mark style=\"background-color:rgba(0, 0, 0, 0)\" class=\"has-inline-color has-vivid-cyan-blue-color\"># teken een andere FrameBuffer bovenop de huidige co\u00f6rdinaten\n<strong>import<\/strong> <strong>framebuf<\/strong>\nfbuf = framebuf.FrameBuffer(bytearray(8 * 8 * 1), 8, 8, framebuf.MONO_VLSB)\nfbuf.line(0, 0, 7, 7, 1)\noled.blit(fbuf, 10, 10, 0)           <em># draw on top at x=10, y=10, key=0<\/em>\noled.show()<\/mark><\/code><\/pre>\n\n\n\n<p><\/p>\n\n\n\n<p>Met onderstaande codes teken je het <strong>MicroPython-logo<\/strong>:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>oled.fill(0)\noled.fill_rect(0, 0, 32, 32, 1)\noled.fill_rect(2, 2, 28, 28, 0)\noled.vline(9, 8, 22, 1)\noled.vline(16, 2, 22, 1)\noled.vline(23, 8, 22, 1)\noled.fill_rect(26, 24, 2, 4, 1)\noled.text('MicroPython', 40, 0, 1)\noled.text('SSD1306', 40, 12, 1)\noled.text('OLED 128x64', 40, 24, 1)\noled.text('Picademie.nl', 0, 50)\noled.show()<\/code><\/pre>\n\n\n\n<figure class=\"wp-block-image size-full is-resized\"><img loading=\"lazy\" decoding=\"async\" width=\"481\" height=\"480\" src=\"https:\/\/www.picademie.nl\/wp-content\/uploads\/2025\/09\/IMG_7212-Small.jpg\" alt=\"\" class=\"wp-image-15424\" style=\"width:191px;height:auto\" srcset=\"https:\/\/www.picademie.nl\/wp-content\/uploads\/2025\/09\/IMG_7212-Small.jpg 481w, https:\/\/www.picademie.nl\/wp-content\/uploads\/2025\/09\/IMG_7212-Small-300x300.jpg 300w, https:\/\/www.picademie.nl\/wp-content\/uploads\/2025\/09\/IMG_7212-Small-150x150.jpg 150w\" sizes=\"auto, (max-width: 481px) 100vw, 481px\" \/><figcaption class=\"wp-element-caption\"><sup>Ik had het logo wat lager moeten zetten. Het bovenste deel van mijn display is geel.<\/sup> <\/figcaption><\/figure>\n\n\n\n<p>Veel plezier ermee! Mocht je vragen of opmerkingen hebben, laat dan hieronder een reactie achter.<\/p>\n\n\n\n<p><em>Have A Nice Day!<\/em><\/p>\n\n\n\n<p><\/p>\n","protected":false},"excerpt":{"rendered":"<div class=\"mh-excerpt\"><p>Een OLED&nbsp;(Organic Light-Emitting Diode)&nbsp;display is&nbsp;een schermtechnologie waarbij miljoenen pixels zichzelf verlichten, in plaats van dat ze afhankelijk zijn van achtergrondverlichting zoals bij LED displays.&nbsp;Hierdoor kan <a class=\"mh-excerpt-more\" href=\"https:\/\/www.picademie.nl\/index.php\/2025\/09\/15\/oled-display-pico\/\" title=\"OLED display (Pico)\">[&#8230;]<\/a><\/p>\n<\/div>","protected":false},"author":1,"featured_media":15403,"comment_status":"open","ping_status":"open","sticky":true,"template":"","format":"standard","meta":{"jetpack_post_was_ever_published":false,"_jetpack_newsletter_access":"","_jetpack_dont_email_post_to_subs":false,"_jetpack_newsletter_tier_id":0,"_jetpack_memberships_contains_paywalled_content":false,"_jetpack_memberships_contains_paid_content":false,"footnotes":""},"categories":[720,731],"tags":[],"class_list":["post-15399","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-displays","category-pico-w"],"jetpack_featured_media_url":"https:\/\/www.picademie.nl\/wp-content\/uploads\/2025\/09\/OLED-Pico.jpg","jetpack_sharing_enabled":true,"_links":{"self":[{"href":"https:\/\/www.picademie.nl\/index.php\/wp-json\/wp\/v2\/posts\/15399","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/www.picademie.nl\/index.php\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/www.picademie.nl\/index.php\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/www.picademie.nl\/index.php\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/www.picademie.nl\/index.php\/wp-json\/wp\/v2\/comments?post=15399"}],"version-history":[{"count":0,"href":"https:\/\/www.picademie.nl\/index.php\/wp-json\/wp\/v2\/posts\/15399\/revisions"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/www.picademie.nl\/index.php\/wp-json\/wp\/v2\/media\/15403"}],"wp:attachment":[{"href":"https:\/\/www.picademie.nl\/index.php\/wp-json\/wp\/v2\/media?parent=15399"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.picademie.nl\/index.php\/wp-json\/wp\/v2\/categories?post=15399"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.picademie.nl\/index.php\/wp-json\/wp\/v2\/tags?post=15399"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}