Tekst groter op Oled display
5 berichten
• Pagina 1 van 1
Tekst groter op Oled display
Voor een encoder gebruik ik onderstaande code en werkt perfect maar de tekst is te klein.
Hoe krijg ik een grote tekst op het display? Ik verwacht zoiets als u8g.setsize(); maar kan niets in die aard vinden.
Alvast bedankt en vriendelijke groet, Looitje
Hoe krijg ik een grote tekst op het display? Ik verwacht zoiets als u8g.setsize(); maar kan niets in die aard vinden.
- Code: Alles selecteren
// http://domoticx.com/arduino-rotary-encoder-met-oled-scherm/
// U8glib Bibliotheek importeren
#include "U8glib.h"
// U8glib Bibliotheek configureren voor het juiste display
U8GLIB_SH1106_128X64 u8g(U8G_I2C_OPT_DEV_0|U8G_I2C_OPT_FAST); // Dev 0, Fast I2C / TWI
// Encoder pins configureren.
int pinEncA=2;
int pinEncB=3;
static byte abOud; // Initialiseer status.
volatile int teller = 0; // rotatie teller.
int teller_oud; // oude rotatie teller.
// Waarden voor variabel getal reserveren.
enum {BufSize=6};
char tellerStr[BufSize];
void setup() {
// Encoder pinnen instellen.
pinMode(pinEncA, INPUT);
pinMode(pinEncB, INPUT);
// Interrupts instellen (pin hoog-laag verandering).
// Interrupt 0 = Pin 2 op de Arduino UNO.
// Interrupt 1 = Pin 3 op de Arduino UNO.
attachInterrupt(0, pinActie, CHANGE);
attachInterrupt(1, pinActie, CHANGE);
// u8g.setFont(u8g_font_6x10);
u8g.setFont(u8g_font_5x8); // Lettertype instellen voor u8glib.
}
void loop() {
// IF loop wanneer er aan de encoder is gedraaid.
if (teller_oud != teller) {
teller_oud = teller;
snprintf(tellerStr, BufSize, "%d", teller); // Converteer de "teller" INT naar STR (tbv OLED scherm)
// OLED scherm loop.
u8g.firstPage();
do {
u8g.drawStr(0, 10, "Encoder:");
u8g.drawBox(0, 14, 128, 16); // Teken een witte rechthoek, 0px vanaf links, 14px van boven, 128px breed, 16px hoog.
u8g.setColorIndex(0); // zet kleur negatief (pixel uit).
u8g.setScale2x2(); // maak het lettertype 2x groter.
u8g.drawStr(25, 14, tellerStr); // print "teller" tekst.
u8g.undoScale(); // zet het lettertype weer terug.
u8g.setColorIndex(1); // zet de kleur positief (pixel aan).
} while( u8g.nextPage() );
}
// Overige code...
}
// Wanneer een interrupt heeft plaatsgevonden, lees de input pinnen, bereken nieuwe status, pas de telling aan.
void pinActie() {
enum { upMask = 0x66, downMask = 0x99 };
byte abNieuw = (digitalRead(pinEncA) << 1) | digitalRead(pinEncB);
byte criteria = abNieuw^abOud;
if (criteria==1 || criteria==2) {
if (upMask & (1 << (2*abOud + abNieuw/2)))
teller++; // tel naar boven.
else teller--; // tel naar beneden.
}
abOud = abNieuw; // bewaar nieuwe status.
}
Alvast bedankt en vriendelijke groet, Looitje
Met vriendelijke groet, Looitje
Advertisement
Re: Tekst groter op Oled display
zoek een juiste library, want de letters moeten uit een database komen. net zoals een scherm trouwens, want tegenwoordig heb je schermen die met een vector werken en die dus elke grootte aankunnen echter een matrix is ook heel normaal vroeger.
paul deelen
shooter@home.nl
shooter@home.nl
Re: Tekst groter op Oled display
u8g.setScale2x2(); maakt alles groter, eigenlijk halveert het de resolutie van je display.
Alles wat je naar het display stuurt is groter en staat op de aangepaste locatie.
Beter kan je met u8g.setFont(font); een ander groter lettertype kiezen
De fonts zijn de .vlw bestanden die in de data directory van je project zitten.
Desnoods kan je met externe software (bijvoorbeeld processing) .ttf fonts omzetten naar .vlw
Gr,
Rudi
Alles wat je naar het display stuurt is groter en staat op de aangepaste locatie.
Beter kan je met u8g.setFont(font); een ander groter lettertype kiezen
De fonts zijn de .vlw bestanden die in de data directory van je project zitten.
Desnoods kan je met externe software (bijvoorbeeld processing) .ttf fonts omzetten naar .vlw
Gr,
Rudi
Re: Tekst groter op Oled display
Dag Rudi, heel goed zo, bedankt en vriendelijke groet,
Looitje
Looitje
Met vriendelijke groet, Looitje
5 berichten
• Pagina 1 van 1
Wie is er online?
Gebruikers in dit forum: Geen geregistreerde gebruikers en 4 gasten