Trastejant

Crea, comparte, aprende y disfruta

Librería U8glib

Ejemplo U8glib

La U8glib es una librería para Arduino creada para simplificar la tarea de mostrar información en pantallas pequeñas.

Cuenta con funciones para mostrar texto con distintos tipos de letra y tamaños, hacer dibujos, crear animaciones… tareas que de otro modo serían tediosas de realizar. Aquí puedes encontrar una lista de dispositivos compatibles con esta pantalla.

Estas son las funciones de la librería:

  • begin
  • disableCursor
  • drawBitmap
  • drawBitmapP
  • drawBox
  • drawCircle
  • drawDisc
  • drawEllipse
  • drawFilledEllipse
  • drawFrame
  • drawHLine
  • drawLine
  • drawPixel
  • drawRBox
  • drawRFrame
  • drawStr
  • drawStr90
  • drawStr180
  • drawStr270
  • drawStrP
  • drawStr90P
  • drawStr180P
  • drawStr270P
  • drawTriangle
  • drawVLine
  • drawXBM
  • drawXBMP
  • enableCursor
  • firstPage
  • getColorIndex
  • getFontAscent
  • getFontDescent
  • getFontLineSpacing
  • getHeight
  • getMode
  • getWidth
  • getStrWidth
  • InitSPI , InitHWSPI , Init8Bit InitComFn
  • nextPage
  • print
  • setColorIndex
  • setContrast
  • setCursorColor
  • setCursorFont
  • setCursorPos
  • setCursorStyle
  • setDefaultBackgroundColor
  • setDefaultForegroundColor
  • setDefaultMidColor
  • setFont
  • setFontLineSpacingFactor
  • setFontPosBaseline
  • setFontPosBottom
  • setFontPosCenter
  • setFontPosTop
  • setFontRefHeightAll
  • setFontRefHeightExtendedText
  • setFontRefHeightText
  • setHardwareBackup
  • setPrintPos
  • setRGB
  • setRot90
  • setRot180
  • setRot270
  • setScale2x2
  • sleepOn
  • sleepOff
  • undoRotation
  • undoScale
  • U8GLIB

 

Ahora veamos cada una de ellas con detenimiento:

begin

Descripción:
Reinicia el display y lo pone en su estado por defecto

Argumentos:

disableCursor

Descripción:
Vuelve invisible el cursor. Se debe usar fuera del bucle de pintado

Argumentos:

drawBitmap

Descripción:

Dibuja un mapa de bits en la posición dada.
Si se le envía un Array, cada posición del Array representa un pixel de la pantalla. Por lo que el tamaño máximo del array deberá ser igual al tamaño de la pantalla. Un 1 en una posición del array indica que el pixel correspondiente deberá iluminarse, un 0 indica que debe permanecer apagado.

Argumentos:

  •  u8g : Pointer to the u8g structure (C interface only).
  •  x: Posicion en X.
  •  y: Posición en Y.
  •  cnt: Número de Bytes que tiene la imagen en horizontal.
  •  h: altura de la imagen.

 

 

bitmap

Demostracion bitmap

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
//Establece los pines a los que esta conectada la pantalla. 
//SCK = 13, MOSI = 11, CS = 10, A0 = 9, Reset = 8 
U8GLIB_PCD8544 u8g(13, 11, 10, 9, 8); 
 
//Declaramos el array con el dibujo que queremos utilizar 
const uint8_t dibujito[] U8G_PROGMEM = { 
 0x00, // 00000000 
 0x55, // 01010101 
 0x7f, // 01111111 
 0x3e, // 00111110 
 0x3e, // 00111110 
 0x3e, // 00111110 
 0x3e, // 00111110 
 0x7f // 01111111 
}; 
 
void draw(void) { 
 /*llamamos a la función drawBitmapP y le indicamos la posición en la 
que queremos que dibuje nuestro Array */
 u8g.drawBitmapP( 0, 0, 1, 8, dibujito); 
} 
 
void setup(void) { 
} 
 
void loop(void) { 
 // bucle de pintado 
 u8g.firstPage(); 
 do { 
 draw(); 
 } while( u8g.nextPage() ); 
 
 // esperamos un segundo antes de volver a pintar en la pantalla. 
 delay(1000); 
}

drawBox

Descripción:
Dibuja un cuadro de las dimensiones que recibe como argumento (h y w) en la posición dada (x,y)
Si una parte del cuadro esta fuera de los limites de la pantalla dibuja únicamente la parte que si queda dentro.
Argumentos:

  • u8g : Pointer to the u8g structure (C interface only).
  • x: posición en X de la esquina superior izquierda del cuadrado a dibujar.
  • y: Posición en Y del la esquina superior izquierda del cuadrado a dibujar.
  • w: Ancho del cuadrado.
  • h: Alto del cuadrado.
Ejemplo drawBox

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
//Establece los pines a los que esta conectada la pantalla. 
//SCK = 13, MOSI = 11, CS = 10, A0 = 9, Reset = 8 
U8GLIB_PCD8544 u8g(13, 11, 10, 9, 8); 
 
void setup(void) {} 
 
void loop(void) { 
 // bucle de pintado 
 u8g.firstPage(); 
 do { 
 //dibujamos un cuadrado 
 u8g.drawBox(10,12,20,30); 
 } while( u8g.nextPage() ); 
 
 // esperamos un segundo antes de volver a pintar en la pantalla. 
 delay(1000); 
}

drawCircle

Descripción:
Dibuja un circulo (o una porción de un circulo) del radio que recibe como parámetro (rad) en la posición dada (x,y)
Argumentos:

  •  u8g : Pointer to the u8g structure (C interface only).
  •  x0, y0: Posición del centro del circulo.
  •  rad: Tamaño del circulo (su radio).
  •  opt: Sección del circulo a dibujar.
    •  U8G_DRAW_UPPER_RIGHT: Sección superior derecha
    •  U8G_DRAW_UPPER_LEFT: Sección superior izquierda
    •  U8G_DRAW_LOWER_LEFT: Sección inferior izquierda
    •  U8G_DRAW_LOWER_RIGHT: Sección inferior derecha
    •  U8G_DRAW_ALL: Circulo completo

 

Ejemplo Drawcicle

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
//Establece los pines a los que esta conectada la pantalla. 
//SCK = 13, MOSI = 11, CS = 10, A0 = 9, Reset = 8 
U8GLIB_PCD8544 u8g(13, 11, 10, 9, 8); 
 
void setup(void) {} 
 
void loop(void) { 
 // bucle de pintado 
 u8g.firstPage(); 
 do { 
 //dibujamos un circulo de radio 14 en la posición 20,20 
 u8g.drawCircle(20, 20, 14); 
 } while( u8g.nextPage() ); 
 
 // esperamos un segundo antes de volver a pintar en la pantalla. 
 delay(1000); 
}

drawDisc

Descripción:
Dibuja una circunferencia (o una porción de ella) del radio que recibe como parámetro, en la posición que recibe.
Argumentos:

  •  u8g : Pointer to the u8g structure (C interface only).
  •  x0, y0: Posición del centro del circulo.
  •  rad: Tamaño del circulo (su radio).
  •  opt: Sección del circulo a dibujar.
    •  U8G_DRAW_UPPER_RIGHT: Sección superior derecha
    •  U8G_DRAW_UPPER_LEFT: Sección superior izquierda
    •  U8G_DRAW_LOWER_LEFT: Sección inferior izquierda
    •  U8G_DRAW_LOWER_RIGHT: Sección inferior derecha
    •  U8G_DRAW_ALL: Circulo completo
Ejemplo Drawdisc

Ejemplo Drawdisc

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
//Establece los pines a los que esta conectada la pantalla. 
//SCK = 13, MOSI = 11, CS = 10, A0 = 9, Reset = 8 
U8GLIB_PCD8544 u8g(13, 11, 10, 9, 8); 
 
void setup(void) {} 
 
void loop(void) { 
 // bucle de pintado 
 u8g.firstPage(); 
 do { 
 //dibujamos un circulo de radio 14 en la posición 20,20 
 u8g.drawDisc(20, 20, 14); 
 } while( u8g.nextPage() ); 
 
 // esperamos un segundo antes de volver a pintar en la pantalla. 
 delay(1000); 
}

drawEllipse

Descripción:
Dibuja una elipse (o una porción de ella) con rx radus y ‘ry’ en la posición (x0, y0). rx * ry debe ser inferior a 1024 en el modo de 8 bits de u8glib.
Argumentos:

  •  u8g : Pointer to the u8g structure (C interface only).
  •  x0, y0: Posición del centro de la elipse.
  •  rx,ry: Tamaño de la elipse.
  •  opt: Sección del circulo a dibujar.
    •  U8G_DRAW_UPPER_RIGHT: Sección superior derecha
    •  U8G_DRAW_UPPER_LEFT: Sección superior izquierda
    •  U8G_DRAW_LOWER_LEFT: Sección inferior izquierda
    •  U8G_DRAW_LOWER_RIGHT: Sección inferior derecha
    •  U8G_DRAW_ALL: Circulo completo

 

Ejemplo Drawelipse

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
//Establece los pines a los que esta conectada la pantalla. 
//SCK = 13, MOSI = 11, CS = 10, A0 = 9, Reset = 8 
U8GLIB_PCD8544 u8g(13, 11, 10, 9, 8); 
 
void setup(void) {} 
 
void loop(void) { 
 // bucle de pintado 
 u8g.firstPage(); 
 do { 
 //dibujamos una elipse 
 u8g.drawEllipse(20, 20, 14,10,U8G_DRAW_ALL); 
 } while( u8g.nextPage() ); 
 
 // esperamos un segundo antes de volver a pintar en la pantalla. 
 delay(1000); 
}

 drawFilledEllipse

Descripción:
Dibuja una elipse sin relleno, del tamaño que recibe como parámetro y en la posición que se le indica
Argumentos:

  • au8g : Pointer to the u8g structure (C interface only).
  • x0, y0: Posición del centro de la elipse.
  • rx,ry: Tamaño de la elipse.
  • opt: Sección del circulo a dibujar.
    • U8G_DRAW_UPPER_RIGHT: Sección superior derecha
    • U8G_DRAW_UPPER_LEFT: Sección superior izquierda
    • U8G_DRAW_LOWER_LEFT: Sección inferior izquierda
    • U8G_DRAW_LOWER_RIGHT: Sección inferior derecha
    • U8G_DRAW_ALL: Elipse completa
 Ejemplo drawFilledEllipse

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
//Establece los pines a los que esta conectada la pantalla. 
//SCK = 13, MOSI = 11, CS = 10, A0 = 9, Reset = 8 
U8GLIB_PCD8544 u8g(13, 11, 10, 9, 8); 
 
void setup(void) {} 
 
void loop(void) { 
 // bucle de pintado 
 u8g.firstPage(); 
 do { 
 //dibujamos una elipse en la posición 20,20 
 u8g.>drawFilledEllipse(20, 20, 14,10,U8G_DRAW_ALL); 
 } while( u8g.nextPage() ); 
 
 // esperamos un segundo antes de volver a pintar en la pantalla. 
 delay(1000); 
}

drawFrame

Descripción:

Dibuja un cuadrado del tamaño que recibe como parámetro y de la posición dada.

Argumentos:

  •  u8g : Pointer to the u8g structure (C interface only).
  •  x: Posición X.
  •  y: Posición Y.
  •  w: Ancho del cuadrado.
  •  h: Altura del cuadrado.
Ejemplo drawframe

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
//Establece los pines a los que esta conectada la pantalla. 
//SCK = 13, MOSI = 11, CS = 10, A0 = 9, Reset = 8 
U8GLIB_PCD8544 u8g(13, 11, 10, 9, 8); 
 
void setup(void) {} 
 
void loop(void) { 
 // bucle de pintado 
 u8g.firstPage(); 
 do { 
 //dibujamos un cuadrado en la posición 10,12 de 30pixeles de ancho por 20 de alto. 
 u8g.drawFrame(10,12,30,20); 
 } while( u8g.nextPage() ); 
 
 // esperamos un segundo antes de volver a pintar en la pantalla. 
 delay(1000); 
}

drawHLine

Descripción:

Dibuja una linea horizontal en la posición que se le indica (x,y) de un largo igual al que recibe como parámetro

Argumentos:

  •  u8g : Pointer to the u8g structure (C interface only).
  •  x: Posición en X
  •  y: Posición en Y
  •  w: Ancho
Ejemplo drawhline

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
//Establece los pines a los que esta conectada la pantalla. 
//SCK = 13, MOSI = 11, CS = 10, A0 = 9, Reset = 8 
U8GLIB_PCD8544 u8g(13, 11, 10, 9, 8); 
 
void setup(void) {} 
 
void loop(void) { 
 // bucle de pintado 
 u8g.firstPage(); 
 do { 
 //dibujamos Una linea en la posición 10,12 de 20pixeles. 
 u8g.drawHLine(10,12,20); 
 } while( u8g.nextPage() ); 
 
 // esperamos un segundo antes de volver a pintar en la pantalla. 
 delay(10

drawLine

Descripción:
Dibuja una linea recta entre la posición definida por los puntos x1,y1 y x2,y2.
Argumentos:

  •  u8g : Pointer to the u8g structure (C interface only).
  •  x1, y1: Posición inicial.
  •  x2, y2: Posición final
Ejemplo Drawline

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
//Establece los pines a los que esta conectada la pantalla. 
//SCK = 13, MOSI = 11, CS = 10, A0 = 9, Reset = 8 
U8GLIB_PCD8544 u8g(13, 11, 10, 9, 8); 
 
void setup(void) {} 
 
void loop(void) { 
 // bucle de pintado 
 u8g.firstPage(); 
 do { 
 //dibujamos Una linea recta entre los puntos 7,10 y 40,55 
 u8g.drawLine(7, 10, 40, 55); 
 } while( u8g.nextPage() ); 
 
 // esperamos un segundo antes de volver a pintar en la pantalla. 
 delay(1000); 
}

drawPixel

Descripción:

Dibuja un punto (enciende un pixel) en la posición dada.

Argumentos:

  • u8g : Pointer to the u8g structure (C interface only).
  •  x: Coordenada X.
  •  y: Coordenada Y
Ejemplo Drawpixel

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
//Establece los pines a los que esta conectada la pantalla. 
//SCK = 13, MOSI = 11, CS = 10, A0 = 9, Reset = 8 
U8GLIB_PCD8544 u8g(13, 11, 10, 9, 8); 
 
void setup(void) {} 
 
void loop(void) { 
 // bucle de pintado 
 u8g.firstPage(); 
 do { 
 //dibujamos un punto en la posición 14,23 
 u8g.drawPixel(14,23); 
 } while( u8g.nextPage() ); 
 
 // esperamos un segundo antes de volver a pintar en la pantalla. 
 delay(1000); 
}

drawRFrame

Descripción:

Dibuja un cuadrado con los bordes redondeados. del tamaño que se le especifica, en la posición que se le da y con un radio en las esquinas que se le pasa como parámetro.

Argumentos:

  •  u8g : Pointer to the u8g structure (C interface only).
  •  x: Posición en X de la esquina superior izquierda.
  •  y: Posición en Y de la esquina superior derecha.
  •  w: Ancho del cuadro.
  •  h: Alto del cuadro.
  •  r: Radio de los vertices.
Ejemplo Drawframe

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
//Establece los pines a los que esta conectada la pantalla. 
//SCK = 13, MOSI = 11, CS = 10, A0 = 9, Reset = 8 
U8GLIB_PCD8544 u8g(13, 11, 10, 9, 8); 
 
void setup(void) {} 
 
void loop(void) { 
 // bucle de pintado 
 u8g.firstPage(); 
 do { 
 //dibujamos un cuadro en 14,23, de 20px de alto por 20px de ancho y sus esquinas tienen un radio de 7 
 u8g.drawRFrame(14,23,20,20,7); 
 } while( u8g.nextPage() ); 
 
 // esperamos un segundo antes de volver a pintar en la pantalla. 
 delay(1000); 
}

drawStr (drawStr90, drawStr180, drawStr270, drawStrP, drawStr90P, drawStr180P, drawStr270P)

Descripción:

Escribe una cadena de texto (String) en la posición definida por x,y y del tamaño de la función usada. (drawStr90 escribira con un tamaño de 90,drawStr180 con un tamaño de 180…etc)

Argumentos:

u8g : Pointer to the u8g structure (C interface only). x: Posición en X. y: Posición en Y. s: texto.

Ejemplo Drawstr

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
//Establece los pines a los que esta conectada la pantalla. 
//SCK = 13, MOSI = 11, CS = 10, A0 = 9, Reset = 8 
U8GLIB_PCD8544 u8g(13, 11, 10, 9, 8); 
 
void setup(void) {} 
 
void loop(void) { 
 // bucle de pintado 
 u8g.firstPage(); 
 do { 
 //dibujamos un cuadro en 14,23, de 20px de alto por 20px de ancho y sus esquinas tienen un radio de 7 
 u8g.drawStr90(0, 20, "drawStr90"); 
 u8g.drawStr180(30, 20, "drawStr180"); 
 u8g.drawStr270(10, 70, "drawStr270"); 
 } while( u8g.nextPage() ); 
 
 // esperamos un segundo antes de volver a pintar en la pantalla. 
 delay(1000); 
}

drawTriangle

Descripción:
Dibuja el triangulo formado por los tres puntos que le pasemos como argumento.
Argumentos:

  •  u8g : Pointer to the u8g structure (C interface only).
  •  x0: Posicion X del punto 0.
  •  y0: Posición Y del punto 0.
  •  x1: Posición X del punto 1.
  •  y1: Posición Y del punto 1.
  •  x2: Posición X del punto 2.
  •  y2: Posición Y del punto 2.
Ejemplo Drawtringle

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
//Establece los pines a los que esta conectada la pantalla.  
//SCK = 13, MOSI = 11, CS = 10, A0 = 9, Reset = 8  
U8GLIB_PCD8544 u8g(13, 11, 10, 9, 8);  
 
void setup(void) {}  
 
void loop(void) {  
  // bucle de pintado  
  u8g.firstPage();    
  do {  
    //Dibujamos el triangulo formado por los puntos (14,55), (45,33), (9,43)  
    u8g.drawTriangle(14,55, 45,33, 9,43);  
  } while( u8g.nextPage() );  
 
  // esperamos un segundo antes de volver a pintar en la pantalla.  
  delay(1000);  
}

drawVLine

Descripción:

Dibuja una linea vertical que empieza en el punto que pasamos como parámetro y tiene la longitud que le pasemos.

Argumentos:

u8g : Pointer to the u8g structure (C interface only). x: Posición X del punto de inicio. y: Posición Y del punto de inicio. h: Longitud de la linea.

Ejemplo Drawline

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
//Establece los pines a los que esta conectada la pantalla. 
//SCK = 13, MOSI = 11, CS = 10, A0 = 9, Reset = 8 
U8GLIB_PCD8544 u8g(13, 11, 10, 9, 8); 
 
void setup(void) {} 
 
void loop(void) { 
 // bucle de pintado 
 u8g.firstPage(); 
 do { 
 //Dibujamos una linea que empieza en (14,55) y tiene 20px de largo. 
 u8g.drawVLine(14,55, 20); 
 } while( u8g.nextPage() ); 
 
 // esperamos un segundo antes de volver a pintar en la pantalla. 
 delay(1000); 
}

drawXBMP

Descripción:

Dibuja una imagen en la posición y con el tamaño especificado.

Argumentos:

  •  u8g : Pointer to the u8g structure (C interface only).
  •  x: posición en X.
  •  y: posición en Y.
  •  w: ancho.
  •  h: alto.
  •  bitmap: imagen.
Ejemplo Drawbmp

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
//SCK = 13, MOSI = 11, CS = 10, A0 = 9, Reset = 8 
U8GLIB_PCD8544 u8g(13, 11, 10, 9, 8); 
#define u8g_logo_width 38 
#define u8g_logo_height 24 
 
static unsigned char u8g_logo_bits[] = { 
 0xff, 0xff, 0xff, 0xff, 0x3f, 0xff, 0xff, 0xff, 0xff, 0x3f, 0xe0, 0xe0, 
 0xff, 0x3f, 0xff, 0xff, 0xff, 0xff, 0x3f, 0xff, 0xff, 0xff, 0xff, 0x3f }; 
 
void setup(void) {} 
 
void loop(void) { 
 // bucle de pintado 
 u8g.firstPage(); 
 do { 
 //Dibujamos la imagen desde la posición (0,0) con un alto de 24 y un ancho de 32 
 u8g.drawXBM( 0, 0, u8g_logo_width, u8g_logo_height, u8g_logo_bits); 
 } while( u8g.nextPage() ); 
 
 // esperamos un segundo antes de volver a pintar en la pantalla. 
 delay(1000); 
}

enableCursor

Descripción:

Vuelve visible el cursor

Argumentos:

firstPage

Descripción:

Inicia el bucle de pintado, debe llamarse antes del bucle.

Argumentos:

getColorIndex

Descripción:

Devuelve el color actualmente seleccionado para dibujar en el bucle.

Argumentos:

getFontAscent

Descripción:

Devuelve el tamaño de letra seleccionado

Argumentos:

getFontLineSpacing

Descripción:
Devuelve la distancia vertical entre dos lineas de texto
Argumentos:

getHeight

Descripción:
devuelve la altura de la pantalla/p>
Argumentos:

getMode

Descripción:
Devuelve información sobre el display y el modo en el que se encuentra
Argumentos:

getWidth

Descripción:
Devuelve el ancho de la pantalla.
Argumentos:

getStrWidth

Descripción:
Devuelve el ancho de un String
Argumentos:

nextPage

Descripción:
Marca el final del bucle de pintado
Argumentos:

print

Descripción:
Escribe en pantalla
Argumentos:
string: la cadena a escribir

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
//Establece los pines a los que esta conectada la pantalla.
//SCK = 13, MOSI = 11, CS = 10, A0 = 9, Reset = 8
U8GLIB_PCD8544 u8g(13, 11, 10, 9, 8);
void setup(void) {}
 
void loop(void) {
// bucle de pintado
u8g.firstPage();
do {
//Dibujamos una linea que empieza en (14,55) y tiene 20px de largo.
u8g.print("Trastejant")
} while( u8g.nextPage() );
 
// esperamos un segundo antes de volver a pintar en la pantalla.
delay(1000);
}

setColorIndex

Descripción:
Define el color que se utilizará para dibujar.
Argumentos:

  •  u8g : Pointer to the u8g structure (C interface only).
  •  color_index: Color con el que se dibujará.
Ejemplo Setcolorindex

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
//Establece los pines a los que esta conectada la pantalla.
//SCK = 13, MOSI = 11, CS = 10, A0 = 9, Reset = 8
U8GLIB_PCD8544 u8g(13, 11, 10, 9, 8);
void setup(void) {}
 
void loop(void) {
// bucle de pintado
u8g.firstPage();
do {
//Establecemos el color
u8g.setColorIndex(1);
//dibujamos
u8g.drawBox(10, 12, 20, 30);
 
//cambiamos de color
u8g.setColorIndex(0);
//volvemos a dibujar
u8g.drawPixel(28, 14);
} while( u8g.nextPage() );
 
// esperamos un segundo antes de volver a pintar en la pantalla.
delay(1000);
}

setCursorColor

Descripción:
Define el color del cursor y del fondo por el que pasa.
Argumentos:

  •  u8g : Pointer to the u8g structure (C interface only)
  •  fg: Color de primer plano.
  •  bg: Color de fondo.

setCursorFont

Descripción:
Define la forma del cursor
Argumentos:

  • u8g : Pointer to the u8g structure (C interface only).
  • font: Figura del cursor.

setCursorPos

Descripción:
Pinta el cursor en una posición determinada
Argumentos:

  • u8g : Pointer to the u8g structure (C interface only).
  • x: posición en X.
  • y: posición en Y.

setDefaultBackgroundColor, setDefaultForegroundColor, setDefaultMidColor

Descripción:
Asigna colores por defecto
Argumentos:

setFont

Descripción:
Define el tipo de letra que se utilizará para escribir.
Los tipos de letra deberán estar cargados en memoria.
Argumentos:
u8g : Pointer to the u8g structure (C interface only).
font: puntero donde se encuentra la fuente de letra..

setFontLineSpacingFactor

Descripción:
Define la distancia de interlineado
Argumentos:
u8g : Pointer to the u8g structure (C interface only).
factor: ver tabla:.

setFontPosBaseline, setFontPosBottom, setFontPosCenter, setFontPosTop

Descripción:
Define la alineación del texto.
Argumentos:

setFontRefHeightAll, setFontRefHeightExtendedText, setFontRefHeightText

Descripción:

  • setFontRefHeightAll: Ascent will be the highest ascent of all glyphs of the current font. Descent will be the highest descent of all glyphs of the current font.
  • setFontRefHeightExtendedText: Ascent will be the largest ascent of «A», «1» or «(» of the current font. Descent will be the descent of «g» or «(» of the current font (this is the default after startup).
  • setFontRefHeightText: Ascent will be the ascent of «A» or «1» of the current font. Descent will be the descent «g» of the current font

setHardwareBackup

Descripción:
Se usa en caso de tener la conexión SPI, TWI o UART multiplexada. En este caso se hace una copia de la información actual antes del cambio.

Argumentos:
u8g : Pointer to the u8g structure (C interface only).
backup_cb: Estado del Hardware.

 

1
2
3
4
5
6
7
8
9
10
11
12
13
14
U8GLIB_DOGM128 u8g(7, 5, 1, 2); // SPI Com: SCK = 7, MOSI = 5, CS = 1, A0 = 2 
 
void setup() { 
 
 // SPI backup: Avoid conflict between SW-SPI (u8glib) and HW-SPI (SD) 
 u8g.setHardwareBackup(u8g_backup_avr_spi); 
 
 // Setup Arduino SD library 
 pinMode(SS, OUTPUT); 
 if (SD.begin(23)) { 
 mas_Init(mas_device_sd, NULL); 
 } 
 
}

setPrintPos

Descripción:
Asigna una posición x,y para el procedimiento print
Argumentos:

  •  x: Posición en X.
  •  y: Posición en Y.

setRGB

Descripción:
Asigna un color en formato RGB
Argumentos:

  •  u8g : Pointer to the u8g structure (C interface only).
  •  r: Rojo, rango: 0..255.
  •  g: Verde, rango: 0..255.
  •  b: Azul, rango: 0..255.

 setRot90, setRot180, setRot270

Descripción:
Rota el dibujo en el display 90,180 o 270 grados respectivamente en el sentido de las agujas del reloj.
Argumentos:

 Ejemplo SetRot

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
#include  
 
 //Establece los pines a los que esta conectada la pantalla. 
 //SCK = 13, MOSI = 11, CS = 10, A0 = 9, Reset = 8 
 #define cs 2 // CS 
 #define a0 3 // DC 
 #define reset 4 // RST 
 #define sck 5 // D0 
 #define mosi 6 // D1 
 
 int x, y; 
 
 //SPI Comunicación por SW (sck, mosi, cs, a0 , reset) 
 U8GLIB_SSD1306_128X64 u8g(sck, mosi, cs, a0, reset); 
 
 
 
 void setup(void) {} 
 
 void loop(void) { 
 // bucle de pintado 
 u8g.firstPage(); 
 do { 
 u8g.setFont(u8g_font_osb18); 
 u8g.setFontPosTop(); 
 u8g.setRot90(); 
 u8g.drawStr(0, 20, "ABC"); 
 
 } while( u8g.nextPage() ); 
 
 // esperamos un segundo antes de volver a pintar en la pantalla. 
 delay(10); 
 }

 setScale2x2

Descripción:
Escala todo lo dibujado despues hasta que se restaura con undoScale(), getHeight o getWidth
Argumentos:

 Ejemplo setscale

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
#include  
 
 //Establece los pines a los que esta conectada la pantalla. 
 //SCK = 13, MOSI = 11, CS = 10, A0 = 9, Reset = 8 
 #define cs 2 // CS 
 #define a0 3 // DC 
 #define reset 4 // RST 
 #define sck 5 // D0 
 #define mosi 6 // D1 
 
 int x, y; 
 
 //SPI Comunicación por SW (sck, mosi, cs, a0 , reset) 
 U8GLIB_SSD1306_128X64 u8g(sck, mosi, cs, a0, reset); 
 
 
 
 void setup(void) {} 
 
 void loop(void) { 
 // bucle de pintado 
 u8g.firstPage(); 
 do { 
 
 u8g.setFont(u8g_font_unifont); 
 u8g.setFontPosTop(); 
 u8g.drawStr(0, 1, "Hello"); 
 u8g.drawHLine(0, 1+14, 40); 
 u8g.setScale2x2(); // Scale up all draw procedures 
 u8g.drawStr(0, 12, "Hello"); // actual display position is (0,24) 
 u8g.drawHLine(0, 12+14, 40); // All other procedures are also affected 
 u8g.undoScale(); // IMPORTANT: Switch back to normal mode 
 
 
 } while( u8g.nextPage() ); 
 
 // esperamos un segundo antes de volver a pintar en la pantalla. 
 delay(10); 
 }

sleepOn/sleepOff

Descripción:
Si el display dispone de función Sleep esta función la enciende o apaga.
Argumentos:

 

undoRotation

Descripción:
Eliminar una rotación aplicada realizada por los comandos «setRotXY». Después de llamar a este comando, la pantalla tendrá su orientación predeterminada.

Argumentos:

undoScale
Descripción:
Elimina un escalado realizado por setScale.
Argumentos:

U8GLIB

Descripción:
Crear una nueva interfaz a una pantalla gráfica.
El argumento dev describe el tipo de la pantalla. Por lo general, este constructor no se llama directamente. En su lugar hay clases drived para cada dispositivo disponible. Véase también la última columna de la lista de dispositivos para obtener una lista completa de llamadas a constructores disponibles.

Argumentos:

  •  dev: Dispositivo que queremos controlar.
  •  Arduino pins: Los pines a los que esta conectada la pantalla..
  •  reset: El pin de reset

Sin duda esta librería ofrece muchas posibilidades para mejorar la estética de la información que mostramos en nuestros proyectos . Si quieres verla en acción contamos con un videotutorial para que puedas hacerlo:

Ahora solo queda trastear con ella y descubrir todo su potencial. Y si tienes cualquier duda solo tienes que preguntar!

 

 

 

 

 


También te puede interesar...

No hay temas relacionados

10 respuestas a “Librería U8glib”

  1. Luis F. dice:

    Buena información.una pregunta, necesito hacer una interfaz de usuario empleando este LCD, y también un keypad de 4×4. Anteriormente ya he hecho el proyecto con un LCD de 16×40 y funciona perfectamente. ¿Puedes sugerirme alguna idea para evitar problemas con la captura de eventos del keypad y el dibujo de la pantalla.?

  2. Juaco dice:

    amigo como se puede hacer medio circulo

  3. betober dice:

    Muchas gracias por compartir tus conocimientos, fue muy esclarecedor el tutorial.

  4. Subred dice:

    Muchas gracias por la explicación de cada una de las funciones de la librería, me ha sido muy útil. Ahora estoy empezando con otro proyecto y me gustaría saber si hay alguna librería compatible con el driver id RM67160 para una pantalla OLED. No he encontrado prácticamente nada de información.

    Saludos!!

  5. Nicolas dice:

    Buen tutorial.
    Una consulta, sabes como se puede definir el ancho del campo de los números para la función print, necesito mostrar por pantalla un numero decimal pero me lo corta en el segundo termino; por ejemplo me muestra 0.00 en vez de 0.0001

  6. Nicolas dice:

    Buen tutorial.
    Una consulta, sabes como definir el ancho del campo de un número, necesito mostrar por pantalla un número decimal pero me lo corta en el segundo termino; Por ejemplo me muestra 0.00 en vez de 0.001

  7. Ruben Suvire dice:

    Muy buen manual de uso, no me queda claro como indicar la dirección I2C y el tipo de pantalla, Muchas gracias

  8. Juan del angel dice:

    Has una comparativa «if»,donde evalúe antes el número que mostradas,donde si ese número es menor a 0.01 y que por lo tanto dicho número ocupa un tercer decimal,pues si se cumple esto,imprimes en modo directamente como texto el «0.00» y luego la impresión de la variable,así también ahorrarás miliamperes cuando solo ocupes dos decimales o números enteros..

Deja una respuesta

Tu dirección de correo electrónico no será publicada.

Este sitio usa Akismet para reducir el spam. Aprende cómo se procesan los datos de tus comentarios.