Inhoudsopgave:

Graphics op een SSD1306 I2C OLED 128x64 display met CircuitPython met behulp van een Itsybitsy M4 Express - Ajarnpa
Graphics op een SSD1306 I2C OLED 128x64 display met CircuitPython met behulp van een Itsybitsy M4 Express - Ajarnpa

Video: Graphics op een SSD1306 I2C OLED 128x64 display met CircuitPython met behulp van een Itsybitsy M4 Express - Ajarnpa

Video: Graphics op een SSD1306 I2C OLED 128x64 display met CircuitPython met behulp van een Itsybitsy M4 Express - Ajarnpa
Video: 🇳🇱 SSD1331 KLEUREN OLED DISPLAY (96X64 PIXELS) - Arduino les #25 2024, Juli-
Anonim
Grafische weergave op een SSD1306 I2C OLED 128x64-scherm met CircuitPython met behulp van een Itsybitsy M4 Express
Grafische weergave op een SSD1306 I2C OLED 128x64-scherm met CircuitPython met behulp van een Itsybitsy M4 Express

Het SSD1306 OLED-scherm is een klein (0,96 ), goedkoop, algemeen verkrijgbaar, I2C, monochroom grafisch display met 128x64 pixels, dat eenvoudig kan worden aangesloten (slechts 4 draden) op microprocessor-ontwikkelingsborden zoals een Raspberry Pi, Arduino of Adafruit Itsybitsy M4 Express, CircuitPlayground Express of andere CircuitPython-apparaten. Drivers kunnen worden gedownload van internet.

Grafische routines voor Arduino's zijn al enige tijd beschikbaar, maar niet voor andere ontwikkelsystemen.

Met de basisstuurprogramma's voor het apparaat kunnen gebruikers:

  • Wis het scherm naar zwart of wit. oled.fill(c)
  • Schrijf een tekenreeks naar het scherm op een gespecificeerde (x, y) positie oled.text("Text", x, y, c)
  • Teken een punt op een gespecificeerde (x, y) positie oled.pixel(x, y, c)
  • Laad een afbeeldingsbestand op het scherm. (Niet gebruikt in dit project)
  • Werk de weergave bij oled.show()

Dit Instructable zal met eenvoudige procedures demonstreren hoe interactief te tekenen:

  • lijnen
  • cirkels
  • holle dozen
  • stevige blokken
  • vooraf gedefinieerde tekens

Ik zal een Adafruit Itsybitsy M4 Express gebruiken om de methoden te demonstreren, maar de code, in Python, kan gemakkelijk worden overgezet naar andere ontwikkelingssystemen.

Ik koos de Itsybitsy M4 voor deze demonstratie omdat deze goedkoop, krachtig, gemakkelijk te programmeren is, analoge en digitale invoer/uitvoer bevat, veel geheugen heeft, gemakkelijk documentatie en helpforums op internet heeft, in eerste instantie zeer eenvoudig is in te stellen en ondersteunt CircuitPython, een versie van Python die ideaal is voor mensen die nieuw zijn in coderen.

Als je eenmaal je Itsybitsy en SSD1306 hebt ingesteld, is dit een heel eenvoudige breadboard-build. Er wordt niet getypt, alle bestanden kunnen worden gedownload.

Dit is een goedkoop en eenvoudig project om te bouwen, maar introduceert enkele tussenliggende/geavanceerde ideeën. Ik hoop dat je het eens wilt proberen. Ik was onder de indruk van dit kleine scherm.

Stap 1: Wat we nodig hebben voor dit project?

Wat we nodig hebben voor dit project
Wat we nodig hebben voor dit project

Hardware:

  • SSD1306 I2C mono-display 128x64 pixels
  • Itsybitsy M4 Express
  • microUSB naar USB-kabel - om het bord te programmeren
  • Breadboard
  • 1 10K Ohm potentiometer
  • 1 knop schakelaar
  • aansluitdraad - verschillende kleuren kunnen helpen
  • Computer (om de code te schrijven en te uploaden) - een heel oude laptop is voldoende.

Software:

Mu-editor - voor het schrijven van code en het uploaden van het script naar de Itsybitsy

Het instellen van de Itsybitsy wordt hier uitgelegd:

De nieuwste versie van CircuitPython:

CircuitPython-bibliotheken:

Mu-editor:

Stap 2: Het circuit

Het circuit
Het circuit

Dit is een heel eenvoudig circuit om op te zetten. De volgende pagina illustreert het afgewerkte breadboard met gekleurde draden om het u gemakkelijk te maken.

Stap 3: Breadboard-versie van het circuit

Breadboard-versie van het circuit
Breadboard-versie van het circuit

Er zijn stroomrails aan de boven- en onderkant van het breadboard. Verbind met rode draad de +ve rails met elkaar. Verbind met zwarte draad de -ve rails met elkaar.

Verbind de 3V-pin van de Itsybitsy met de onderste +ve rail - rode draad. (kolom 12)

Verbind de G (GND) pin van de Itsybitsy met de bovenste -ve rail - zwarte draad. (kolom 12)

Sluit in kolommen 33 en 34 de SSD1306 VCC- en GND-pinnen aan op de bovenste voedingsrails.

Verbind met een roze draad de SCL-pinnen met elkaar.

Verbind de SDA-pinnen met een grijze draad.

Verbind met rode en zwarte draden de buitenste pinnen van de potentiometer met de bovenste stroomrails en verbind met groene draad de middelste (wisser) pin met A5 op de Itsybitsy.

Sluit de ene kant van de knopschakelaar met een paarse draad aan op pin 2 en sluit de andere kant met een zwarte draad aan op een GND-rail.

Stap 4: Het lettertype laden

Het lettertype laden
Het lettertype laden

Download het lettertypebestand en sleep het naar het CIRCUITPY-station. (Dit is de Itsybitsy.)

Dubbelklik op de lib-map en bekijk de lijst met stuurprogramma's die u al hebt geladen.

Stap 5: Extra stuurprogramma's toevoegen

Extra stuurprogramma's toevoegen
Extra stuurprogramma's toevoegen

U hebt het volgende nodig in de lib-map:

  • simpleio.mpy
  • adafruit_bus_device
  • adafruit_framebuf.mpy
  • adafruit_ssd1306.mpy

Als ze ontbreken, sleept u ze naar de map van de nieuwste beschikbare versie.

U bent nu klaar om het script te downloaden.

Eenmaal geladen in de Mu-editor kun je het opslaan in de Itsybitsy met de naam main.py.

Het programma doorloopt een reeks demonstraties van lijnen, cirkels, een dynamische staafgrafiek en het weergeven van gedefinieerde tekens. Draai de pot langzaam en houd de knop ingedrukt om het display te bedienen.

Op de volgende pagina's vindt u meer informatie over de werking van het programma.

Stap 6: Stel de apparaten in

De apparaten instellen
De apparaten instellen

Dit eerste gedeelte laadt alle bibliotheken en stelt de SSD1306, potentiometer en knopschakelaar op de juiste pinnen in.

Stap 7: Tekens definiëren en horizontale en verticale lijnen tekenen

Tekens definiëren en horizontale en verticale lijnen tekenen
Tekens definiëren en horizontale en verticale lijnen tekenen
Tekens definiëren en horizontale en verticale lijnen tekenen
Tekens definiëren en horizontale en verticale lijnen tekenen

In deze sectie worden de vooraf gedefinieerde tekens ingesteld. Ze zijn 5 stippen breed en 8 stippen hoog. Elke stip in de definitie tekent 4 stippen op het scherm zodat ze beter worden weergegeven.

Horizontale en verticale lijnen zijn gemakkelijk te tekenen met een lus. Je hoeft alleen te onthouden dat je de extra stip aan het einde nodig hebt. Een lijn van (0, 7) tot (5, 7) heeft 6 punten nodig: waarbij x om de beurt gelijk is aan 0, 1, 2, 3, 4 en 5.

Het basispuntcommando is oled.pixel(x, y, kleur) - 0 is zwart en 1 is wit.

De oorsprong (0, 0) bevindt zich linksboven in het scherm, 0 - 127 pixels horizontaal (van links naar rechts) en 0 - 63 verticaal (van boven naar beneden).

Stap 8: Dozen, blokken en hellende lijnen

Dozen, blokken en hellende lijnen
Dozen, blokken en hellende lijnen

Dozen zijn opgebouwd uit horizontale en verticale lijnen.

Blokken zijn opgebouwd uit meerdere horizontale lijnen.

Voor schuine lijnen controleren we eerst of de coördinaten links het eerst worden gegeven. Als dat niet het geval is, wisselen we ze om, omdat de lijn van links naar rechts wordt getrokken.

We berekenen dan de helling en gebruiken deze om de y-waarde in te stellen voor elke waarde van x.

De display(t)-procedure maakt het bijgewerkte scherm zichtbaar en wacht een korte vertraging, t seconden.

Stap 9: Graadsymbool, Anlgnment, Staafdiagram en Cirkel

Graadsymbool, symbool, staafdiagram en cirkel
Graadsymbool, symbool, staafdiagram en cirkel

Het graden-symbool is gemaakt van 4 pixels.

De routine align() voegt extra spaties toe voor het getal om korte waarden in een vaste spatie rechts uit te lijnen.

De grafiek(v)-routine tekent een horizontale staafgrafiek met het geselecteerde percentage. De waarde wordt aan de rechterkant geschreven met 'T' om 100 (Ton of Top) weer te geven.

Cirkels vereisen enige trigonometrie, dus we moeten de wiskundebibliotheek aan het begin van het script importeren. We gebruiken sin, cos en radialen om de x- en y-offsets vanuit het centrum te berekenen als een straal 90 graden wordt gedraaid. Punten worden uitgezet in elk van de vier kwadranten voor elke berekening van de offsets.

Stap 10: Afvalinzameling, titels en cirkels

Vuilnisophaling, titels en cirkels
Vuilnisophaling, titels en cirkels

Deze instructies demonstreren het wissen van het scherm naar zwart-wit, het schrijven van tekst naar het scherm en het gebruik van de gc() 'garbage collection'-routine om ruimte vrij te maken. De waarde laat zien dat er voldoende ruimte is voor een veel groter script.

Het programma tekent dan cirkels met een gemeenschappelijk middelpunt en met bewegende middelpunten. Best een snelle routine gezien de hoeveelheid rekenwerk die nodig is.

De kop voor de regelsdemo wordt hierna geschreven.

Stap 11: Demo van lijnen

Lijnen Demo
Lijnen Demo

Deze routine geeft de line()-routine echt een training. Radiale lijnen worden getrokken vanuit elk van de vier hoeken van het scherm met verschillende tussenruimten die patronen vormen.

Stap 12: De hoofdlus: staafdiagram en gedefinieerde tekens

De hoofdlus: staafdiagram en gedefinieerde tekens
De hoofdlus: staafdiagram en gedefinieerde tekens

Dit is de hoofdlus van het programma. De waarden van de potentiometer veranderen de weergegeven waarden en veranderen de lengte van de staafgrafiek.

Als de knop ingedrukt wordt gehouden, worden de gedefinieerde tekens omgewisseld, evenals 1/0 en True/False. Deze lus loopt vrij langzaam omdat het tekenen van de vooraf gedefinieerde karakters een langzaam proces is. Je kunt dingen versnellen door er een paar te becommentariëren.

Er is geen temperatuursensor gemonteerd, om deze demo eenvoudig te houden, dus de '?' wordt weergegeven in plaats van een waarde in regel 190.

Aanbevolen: