Inhoudsopgave:
- Stap 1: Wat we nodig hebben voor dit project?
- Stap 2: Het circuit
- Stap 3: Breadboard-versie van het circuit
- Stap 4: Het lettertype laden
- Stap 5: Extra stuurprogramma's toevoegen
- Stap 6: Stel de apparaten in
- Stap 7: Tekens definiëren en horizontale en verticale lijnen tekenen
- Stap 8: Dozen, blokken en hellende lijnen
- Stap 9: Graadsymbool, Anlgnment, Staafdiagram en Cirkel
- Stap 10: Afvalinzameling, titels en cirkels
- Stap 11: Demo van lijnen
- Stap 12: De hoofdlus: staafdiagram en gedefinieerde tekens
Video: Graphics op een SSD1306 I2C OLED 128x64 display met CircuitPython met behulp van een Itsybitsy M4 Express - Ajarnpa
2024 Auteur: John Day | [email protected]. Laatst gewijzigd: 2024-01-30 11:17
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?
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
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
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
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
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
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
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 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
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
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
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
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:
Hoe maak je een babygewichtmachine met Arduino Nano, HX-711 Load Cell en OLED 128X64 -- Kalibratie van HX-711: 5 stappen
Hoe maak je een babygewichtmachine met Arduino Nano, HX-711 Load Cell en OLED 128X64 || Kalibratie van HX-711: Hallo Instructables, een paar dagen geleden werd ik vader van een schattige baby?. Toen ik in het ziekenhuis lag, ontdekte ik dat het gewicht van de baby zo belangrijk is om de groei van de baby te volgen. Dus ik heb een idee? om een babygewichtmachine van mezelf te maken. in deze Instructable I
Een Halloween Scare Machine met behulp van een PIR, een 3D-geprinte pompoen en de Troll Arduino Compatible Audio Pranker/praktische Joke Board.: 5 stappen
Een Halloween Scare Machine met behulp van een PIR, een 3D-geprinte pompoen en het Troll Arduino-compatibele audio-pranker/praktische grapbord.: Het Troll-bord gemaakt door Patrick Thomas Mitchell van EngineeringShock Electronics, en niet zo lang geleden volledig gefinancierd op Kickstarter. Ik kreeg mijn beloning een paar weken te vroeg om te helpen bij het schrijven van enkele gebruiksvoorbeelden en het bouwen van een Arduino-bibliotheek in een po
Toepassing van MCP-23008 met behulp van relaisinterface (I2C):: 6 stappen:
Toepassing van MCP-23008 met behulp van Relay Interface (I2C):: HelloGood Groeten..!! Ik (Somanshu Choudhary) namens Dcube tech ventures die relais gaan besturen via het I2C-protocol met behulp van Arduino nano en MCP23008
CircuitPython met een Itsybitsy M4 Express 1: instellen: 9 stappen
CircuitPython met een Itsybitsy M4 Express 1: Setup: nieuw bij codering? Heb je alleen Scratch gebruikt en wil je overstappen op een tekstuele taal die gemakkelijk toegang geeft tot fysiek computergebruik met LED's, schakelaars, displays en sensoren? Dan is dit misschien iets voor jou. Ik heb gemerkt dat deze site veel Instructables bevat ab
Hoe u gebruikersniveaus van NUMA toevoegt aan uw exemplaar van N met behulp van NumADD Firefox AddOn: 4 stappen
Gebruikersniveaus van NUMA toevoegen aan uw exemplaar van N NumADD Firefox-add-on gebruiken: Elke gebruiker van Metanet's N-database op gebruikersniveau NUMA weet hoe onhandig de interface is voor het kopiëren van door gebruikers gemaakte niveaus naar uw exemplaar van het spel. NumADD, elimineert de noodzaak van kopiëren en plakken en maakt het overzetten van niveaus het werk van één muisklik