SSD1306 OLED displays

Arduino SSD1306 i2c OLED displayVaak gebruik ik voor Arduino projecten een goedkoop en eenvoudig aan te sturen 16x2 of 16x4 lcd display module en voor de meeste toepassingen is dit ook wel geschikt. Nadelen zijn wel dat ze vrij groot zijn en dat ze beperkte grafische mogelijkheden hebben. Een groot OLED scherm is meestal vrij duur maar er zijn ook goedkopere OLED displays te koop met mooie kleine schermen, in twee kleuren met een ingebouwde controller op basis van I2C of SPI met een resolutie van 128 x 64 of 64 x 48 pixels, Ik heb op het web zelfs kleine spelcomputers op basis van een Atmel processor, een paar knopjes en een van deze OLED displays gezien. Leuk om dus eens mee te experimenteren en ik heb er dus twee aangeschaft van verschillende formaten. Als eerste ging ik op zoek naar een library om ze aan te sturen en daar zijn er enkele van. Maar als gewoonlijk zijn dit weer zeer uitgebreide libraries voor meerdere soorten displays en code die ik eigenlijk niet nodig heb. Ook ben ik vaak niet zo tevreden over de kwaliteit van de code, soms is het code van iemand anders waar men dan zelf weer een schil omheen geprogrammeerd heeft. Dat dit vaak niet goed is voor de codesize en het gebruikte geheugen (waar we er op de Arduino toch als niet zoveel van hebben) mag duidelijk zijn. Na een paar experimenten bedacht ik dat ik deze OLED displays in meerdere projecten zou willen gebruiken en dus besloot ik maar zelf een zeer compacte library te schrijven voor de Arduino met alle basis functies en voor twee type OLED displays in alle oriŽntaties. En omdat ik in delen van kennis en code geloof zet ik dit ook op deze pagina online. Het aansluiten was ook nog even puzzelen en ook dit beschrijf ik op deze pagina. Deze OLED displays gebruiken de SSD1306 controller en ook hiervan heb ik de datasheet gevonden en natuurlijk hier ter download geplaatst. Al met al is deze pagina een soort algemene kennis pagina over deze op de SSD1306 gebaseerde OLED displays. De code is duidelijk geschreven en volgens mij eenvoudig aanpasbaar wanneer u een nog iets andere versie van deze displays heeft gevonden. Koppel het dan even terug, dan kunnen we het hier weer delen. Ik wens u veel succes met uw hobbyprojecten. Vriendelijke groet, Hein Pragt.

Verschillende uitvoeringen

Wemos D1 mini OLED display 64x48Het eerste display dat ik gebruik heb is de WeMos D1 mini OLED sshield 64x48 van 0,66inch met een I2C interface. Het shield heeft veel meer pinnen omdat het ook anders aangestuurd kan worden maar we gebruiken natuurlijk graag I2C omdat het maar twee I/O lijntjes kost. Met grootte van 0,66inch is het een behoorlijk klein display maar is het heel duidelijk af te lezen omdat het een hoog contrast heeft. Het maakt gebruik van de SSD1306 als interface chip en maakt gebruik van het I2C adres 0x3C of 0x3D wat te selecteren is door een soldeerbrug op de achterzijde van het printje. Wel erg klein dus ik waag me er niet aan en laat ze op de standaard waarde staan. De spanning is 3,3V maar de I2C pinnen zijn zonder aanpassing aan te sluiten op de 5V Arduino. Wel moet het shield zelf uit de 3v3 aansluiting van de Arduino gevoed worden. Het ding werd geleverd met losse headerpins en aangezien u toch maar 4 aansluitingen nodig heeft kunt u ook rechtstreeks de draadjes aan de print solderen. Het voor deel van dit display is dat het door de 64x48 pixel size niet zoveel geheugen van de Arduino gebruikt als schaduwgeheugen.

Link: Website van de leverancier.


SSD1306 i2c OLED display 128x64Het tweede display dat ik gebruikt heb is een vrij standaard verkrijgbaar OLED display met witte pixels, een resolutie van 128x64 en een aansturing door middel van I2C en het SSD1306 driver IC. Ook dit shield heeft dus maar twee datalijnen nodig en het verbruikt minimaal stroom zodat het ook goed te gebruiken is in projecten die uit een accu of batterij gevoeld moeten worden. De afmeting van dit scherm is iets grote dan de voorgaande en is 26,0 x 15,0 mm. De module werkt op 3v3 en kan uit de 3v3 uitgang van de Arduino gevoed worden, waarbij de I2C lijnen gewoon op de 5V Arduino pinnen aangesloten kunnen worden. Het I2C adres van dit OLED shield is standaard 0x3C. Het scherm is heel duidelijk afleesbaar door een zeer hoog contrast. Doordat het gebruik maakt van 128x64 pixels bent u bij de Arduino wel ruim 1 Kb aan kostbare sram kwijt voor dit display.

De SSD1306 display controller

De SSD1306 is een single-chip CMOS OLED/PLED driver met controller voor displays met een maximom resolutie van 128 x 64. Het IC bevat een display controller met display RAM en een ingebouwde oscillator zodat het met minimale externe componenten gebruik kan worden. Het heeft een ingebouwde 256 stappen brightness control. Het heeft een 6800/8000 series compatible Parallel Interface, I2C interface of een Serial Peripheral Interface.

Link: Datasheet van de SSD1306 controller.

Link: Website van de leverancier SSD1306 controller.

Aansluiten van het display

Hoewel er op Internet op diverse plekken staat dat je de displays ook op de 5V uitgang kunt aansluiten houd ik me liever aan de specicficaties en als er 3v3 beschikbaar is op de Arduino sluit ik de vcc van de display's hier op aan.

Aansluiting 128x64 display

DisplayArduino
Vcc3v3
GndGnd
SclA5 (SCL)
SdaA4 (SDA)

Aansluiting wemos 64x48 OLED display

DisplayArduino
Vcc3v3
GndGnd
D1A5 (SCL)
D2A4 (SDA)

Code plus vooprbeeld

Download eerste: HIER mijn library voor de Arduino en installeer deze via de IDE in uw Arduino omgeving. Herstart de IDE en kijk bij de voorbeelden en zie daar "oledtest128.ino" en de "oledtest64.ino" staan. De library werkt voor beide boards, Wanneer u geheugen wilt besparen bij gebruik van de 64x48 display kunt u het buffer verkleinben door in de libraries map en in de map SSD1306 het bestand SSD1306.cpp aan te passen, verander de defines aan naar 64 en 48 en compileer daarna de schets opnieuw. Ik gebruik deze library ook zonder enige aanpassing voor het Wemos D1 mini board waar standaard de 64x48 OLED display module opgeprikt kan worden. Ook hier kunt u de "oledtest64.ino" sketch zonder enige aanpassing compileren en naar uw Wemos D1 mini board uploaden.

De code van deze libray is compact en bevat alleen een aantal basis functies:


  public:
    Ssd1306(uint8_t i2caddr,uint8_t width,uint8_t height,uint8_t orientation);
    void begin(void); 
    void oledSetPixel(int16_t x, int16_t y, uint16_t color);
    void oledDrawLine(int16_t x0, int16_t y0, int16_t x1, int16_t y1, uint16_t color);
    void oledDrawRect(int16_t x, int16_t y, int16_t w, int16_t h, uint16_t color);
    void oledFillRect(int16_t x, int16_t y, int16_t w, int16_t h, uint16_t color);
    void oledDrawCircle(int16_t x0, int16_t y0, int16_t r,uint16_t color);
    void oledDrawChar(int16_t x, int16_t y, unsigned char c, uint16_t color);
    void oledPrintLine(int16_t x, int16_t y, unsigned char *c, uint16_t color);
    void oledPrintLineP(int16_t x, int16_t y, unsigned char *c, uint16_t color);    
    void oledInvert(void); 
    void oledNormal(void);
    void oledCopyDisplayBuffer(void);
    void oledClearDisplayBuffer(uint8_t value);



Met deze basisfuncties kunt u zelf uitbreidingen maken in uw eigen code, ik hou van libraries die alleen basisfuncties bieden omdat ik meestal toch zelf dingen wil maken op mijn eigen wijze, die net niet in de library zitten of net anders waardoor ik een grote hoeveelheid code van een library meecompileer die mijn code laten groeien en waar ik niets aan heb. Ik wens u veel succes met deze code. De displays kunnen eigenlijk maar weinig tekst weergeven, bij een font van 5x7 is dit de verdeling op het scherm.

rij en kolomn verdeling oled

 

Boeken over de Arduino computer

boek boek bestellen Arduino voor dummies Met Arduino is iedereen in staat om met elektronica te spelen, of je nu kunstenaar, designer, programmeur of hobbyist bent. Met Arduino voor Dummies leer je verschillende soorten printplaten te bouwen, die dingen kunnen waarnemen en beheren in de echte wereld. Wil je een prototype bouwen van je eigen product of een interactief kunstwerk maken? In dit boek lees je alles wat je nodig hebt om succesvol aan het project van je keuze te kunnen werken. Zo is er aandacht voor het opbouwen en programmeren van printplaten en het toepassen van verschillende shields en kits in je projecten. Arduino combineert hardware, software en oneindige creatieve mogelijkheden! John Nussey is specialist op het gebied van physical computing. Hij werkt al jaren met Arduino: hij creŽerde verschillende interactieve kunstinstallaties en prototypes van producten, en hij geeft les in het gebruik van Arduino bij allerhande projecten.


boek boek bestellen Arduino startersgids Arduino is een opensource hardware prototyping platform. Het is opensource en maakt gebruik van een microcontroller. Door deze microcontroller zelf te programmeren kun je interactieve objecten creŽren en aansturen. Arduino gebruikt de input van bijvoorbeeld schakelaars en sensoren om vervolgens actuatoren zoals licht (LED), geluid, motoren of andere output aan te sturen. Deze startersgids is geschikt voor iedereen die voor het eerst met Arduino aan de slag wil en biedt tal van ideeŽn voor projecten. Je maakt kennis met de basis van elektronica en sensoren. Ook lees je hoe je de organisatie van een project aanpakt tot en met de laatste finishing touch. In deze compacte startersgids vind je alles voor je eerste stappen met de Arduino. Massimo Banzi is mede-oprichter van het Arduino- project en heeft als software-architect gewerkt aan diverse internationale projecten van grote merken. Daarnaast was hij werkzaam als Associate Professor aan het Interaction Design Institute Ivrea. Om de voorbeelden in dit boek te volgen heb je een Arduino Uno (of ouder model) nodig, een USB A-B kabel en een LED. De gebruiksvriendelijke Arduino-omgeving is gratis te downloaden.


boek boek bestellen 50 mini microcontroller projecten met ATtiny en Arduino Wie enigszins bekend is met moderne microprocessor systemen als Arduino, kent ongetwijfeld ook de problemen met dit soort kaarten. Ze zijn te duur om voor elk project een aparte kaart aan te schaffen en zijn bovendien nogal fors van formaat. Het aardige van de ATtiny is dat de schijn bedriegt. Het lijkt een klein IC met een beperkt toepassingsgebied, maar het heeft een verbazingwekkend scala aan (speelse) mogelijkheden. Dit boek beschrijft de enorme veelzijdigheid van de ATtiny microcontroller aan de hand van ongeveer vijftig leuke elektronica projecten, speciaal gericht op de beginner. De meeste ontwerpen zijn volledig uitgewerkt, enkele zijn meer als ontwerpidee gepresenteerd. De inhoudsopgave laat zien dat we ons op vele terreinen zullen begeven, van zonnevolger tot helling indicator. Dit boek is beslist geen theorieboek. Het is een boek dat gelezen zal worden met de soldeerbout in de hand. Voor het programmeren van de ATtiny maken we dankbaar gebruik van een Arduino kaart. Als de Arduino ingesteld word als programmer, kunnen we er de meeste Arduino "sketches" mee overzetten naar de ATtiny. We wensen u veel plezier met het nabouwen van de schakelingen.


boek boek bestellen Arduino projecten voor gevorderden Twee zaken hebben in belangrijke mate bijgedragen aan het grote succes van het Arduinoplatform. De eerste is de complete, gebruiksklare processorprint die de kennismaking met dehardware aanzienlijk vergemakkelijkt. En de tweede is de gratis verkrijgbare programmeerinterface, die zonder ingewikkelde installatieprocedures meteen gebruikt kan worden. Eenvoudige projecten voor beginners garanderen snelle resultaten. Het is niet nodig eerst ingewikkelde parameters (processortype of interface-instellingen) te selecteren -- de eerste voorbeeldprogramma's kunnen al na enkele minuten in de Arduino worden geladen en uitgeprobeerd. De Arduino-gebruiker wordt geholpen door een groot aantal software-bibliotheken -- maar deze nog dagelijks groeiende schat aan libraries vormt juist voor de beginner een luxe-probleem: na de eerste eenvoudige voorbeelden is het niet altijd even duidelijk hoe het nu verder moet. Bij de in het internet circulerende projecten ontbreekt het in veel gevallen aan gedetailleerd commentaar en uitleg. Er is geen duidelijk herkenbare leidraad, en eigenlijk is dat ook niet zo vreemd omdat de toepassingen door verschillende mensen voor verschillende doeleinden zijn ontwikkeld. Dat is waar dit boek te hulp komt. Projecten worden op een systematische manier gepresenteerd, waarbij elk project een ander onderwerp belicht. De aanpak is praktijkgericht, maar de noodzakelijke theoretische achtergrond wordt daarbij niet uit het oog verloren. Belangrijke onderwerpen zoals A/D-omzetting, timers en interrupts worden steeds in praktische projecten 'ingebed'. In het boek komen zaken als looplicht-effecten, praktisch bruikbare voltmeters, nauwkeurige digitale thermometers, allerlei soorten klokken, reactietesters en zelfs een muisgestuurde robotkraan aan de orde. En al lezende en doende krijgt de lezer een gedegen inzicht in de achterliggende controllertechnieken.



Reacties op het onderwerp: Arduino


32 - Techniek »  -  Arduino »
2018-07-28 11:52:00
Hier kunt u vragen stellen en antwoorden geven die betrekking hebben op de Arduino boards en Atmel processoren. Reacties zullen pas na goedkeuring geplaatst worden, dit kan enige tijd duren.
Reactie van een bezoeker van de site!
Vragen en antwoorden m.b.t. de Arduino boards en Atmel processoren.
Er zijn: 1 reacties!
2018-07-28 11:52:00
Een tijdje terug heb ik platformio ontdekt. Het is een methode waarmee je vanaf de command-line een Arduino project kan bouwen. Alle instellingen (welk bordje, welke seriele poort snelheid, etc), maar ook alle libraries (+versies) die je gebruikt staan overzichtelijk in een tekstbestandje. Je hoeft dus niet meer 3x na te denken als je van project wisselt over wat voor instellingen e.d. je ook al had gebruikt en welke versie van welke library daarvoor nodig was. Libraries worden automatisch gedownload en daarna gecached op je eigen schijf.

Ik gebruik dit nu zelf voor al mijn Arduino projectjes en de Arduino IDE gebruik ik nog maar zelden. Ik gebruik Linux en daarop werkt dit allemaal heel makkelijk. Ik heb het ook wel aan de praat gehad op windows, dat was iets meer moeite, bijv. eerst python handmatig installeren, maar uiteindelijk werkte het daar ook.
Reactie van een bezoeker van de site!


Last update: 08-01-2018
 Binnen dit thema



 Meer thema's


 Lees hier de privacyverklaring van deze site.

Disclaimer.

Hoewel de heer Hein Pragt de informatie beschikbaar op deze pagina met grote zorg samenstelt, sluit de heer Pragt alle aansprakelijkheid uit met betrekking tot de informatie die, in welke vorm dan ook, via zijn site wordt aangeboden. Het opnemen van een afbeelding of verwijzing is uitsluitend bedoeld als een mogelijke bron van informatie voor de bezoeker en mag op generlei wijze als instemming, goedkeuring of afkeuring worden uitgelegd, noch kunnen daaraan rechten worden ontleend. Op de artikelen van de heer Pragt op deze Internetsite rust auteursrecht. Overname van informatie (tekst en afbeeldingen) is uitsluitend toegestaan na voorafgaande schriftelijke toestemming van de rechthebbende. Voor vragen over copyright en het gebruik van de informatie op deze site kunt u contact opnemen met: (email: mail@heinpragt.com). Dit is mijn