mirror of
https://github.com/geekammo/MicroView-Arduino-Library.git
synced 2026-03-03 08:44:05 +01:00
added other fonts support
This commit is contained in:
@@ -5,8 +5,9 @@
|
|||||||
// Change to add fonts
|
// Change to add fonts
|
||||||
#include <font5x7.h>
|
#include <font5x7.h>
|
||||||
#include <font8x16.h>
|
#include <font8x16.h>
|
||||||
#define TOTALFONTS 2
|
#include <fontlargenumber.h>
|
||||||
const unsigned char *MICROVIEW::fontsPointer[]={font5x7,font8x16};
|
#define TOTALFONTS 3
|
||||||
|
const unsigned char *MICROVIEW::fontsPointer[]={font5x7,font8x16,fontlargenumber};
|
||||||
// Change to add fonts
|
// Change to add fonts
|
||||||
|
|
||||||
|
|
||||||
@@ -448,7 +449,7 @@ size_t MICROVIEW::write(uint8_t c) {
|
|||||||
|
|
||||||
void MICROVIEW::drawChar(uint8_t x, uint8_t y, uint8_t c, uint8_t color, uint8_t mode) {
|
void MICROVIEW::drawChar(uint8_t x, uint8_t y, uint8_t c, uint8_t color, uint8_t mode) {
|
||||||
//void MICROVIEW::drawChar(uint8_t x, uint8_t line, uint8_t c, uint8_t mode) {
|
//void MICROVIEW::drawChar(uint8_t x, uint8_t line, uint8_t c, uint8_t mode) {
|
||||||
uint8_t rowsToDraw,row;
|
uint8_t rowsToDraw,row, tempC;
|
||||||
uint8_t i,j,tempX;
|
uint8_t i,j,tempX;
|
||||||
uint16_t charPerBitmapRow,charColPositionOnBitmap,charRowPositionOnBitmap,charBitmapStartPosition;
|
uint16_t charPerBitmapRow,charColPositionOnBitmap,charRowPositionOnBitmap,charBitmapStartPosition;
|
||||||
// TODO - char must be able to be drawn anywhere, not limited by line
|
// TODO - char must be able to be drawn anywhere, not limited by line
|
||||||
@@ -457,18 +458,23 @@ size_t MICROVIEW::write(uint8_t c) {
|
|||||||
//if ((line >= LCDHEIGHT/fontHeight) || (x > (LCDWIDTH - fontWidth)))
|
//if ((line >= LCDHEIGHT/fontHeight) || (x > (LCDWIDTH - fontWidth)))
|
||||||
//return;
|
//return;
|
||||||
|
|
||||||
|
if ((c<fontStartChar) || (c>(fontStartChar+fontTotalChar-1))) // no bitmap for the required c
|
||||||
|
return;
|
||||||
|
|
||||||
|
tempC=c-fontStartChar;
|
||||||
|
|
||||||
tempX=x;
|
tempX=x;
|
||||||
// each row (in datasheet is call page) is 8 bits high, 16 bit high character will have 2 rows to be drawn
|
// each row (in datasheet is call page) is 8 bits high, 16 bit high character will have 2 rows to be drawn
|
||||||
rowsToDraw=fontHeight/8; // 8 is LCD's page size, see SSD1306 datasheet
|
rowsToDraw=fontHeight/8; // 8 is LCD's page size, see SSD1306 datasheet
|
||||||
if (rowsToDraw<=1) rowsToDraw=1;
|
if (rowsToDraw<=1) rowsToDraw=1;
|
||||||
|
|
||||||
// can draw anywhere on the screen, but SLOW pixel by pixel draw
|
// the following draw function can draw anywhere on the screen, but SLOW pixel by pixel draw
|
||||||
if (rowsToDraw==1) {
|
if (rowsToDraw==1) {
|
||||||
for (i=0;i<fontWidth+1;i++) {
|
for (i=0;i<fontWidth+1;i++) {
|
||||||
if (i==fontWidth) // this is done in a weird way because for 5x7 font, there is no margin, this code add a margin after col 5
|
if (i==fontWidth) // this is done in a weird way because for 5x7 font, there is no margin, this code add a margin after col 5
|
||||||
tempX=0;
|
tempX=0;
|
||||||
else
|
else
|
||||||
tempX=pgm_read_byte(fontsPointer[fontType]+FONTHEADERSIZE+(c*fontWidth)+i);
|
tempX=pgm_read_byte(fontsPointer[fontType]+FONTHEADERSIZE+(tempC*fontWidth)+i);
|
||||||
|
|
||||||
for (j=0;j<8;j++) { // 8 is the LCD's page height (see datasheet for explanation)
|
for (j=0;j<8;j++) { // 8 is the LCD's page height (see datasheet for explanation)
|
||||||
if (tempX & 0x1) {
|
if (tempX & 0x1) {
|
||||||
@@ -484,12 +490,11 @@ size_t MICROVIEW::write(uint8_t c) {
|
|||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
// font height over 8 bit
|
// font height over 8 bit
|
||||||
// take character "0" ASCII 48 as example
|
// take character "0" ASCII 48 as example
|
||||||
charPerBitmapRow=fontMapWidth/fontWidth; // 256/8 =32 char per row
|
charPerBitmapRow=fontMapWidth/fontWidth; // 256/8 =32 char per row
|
||||||
charColPositionOnBitmap=c % charPerBitmapRow; // =16
|
charColPositionOnBitmap=tempC % charPerBitmapRow; // =16
|
||||||
charRowPositionOnBitmap=int(c/charPerBitmapRow); // =1
|
charRowPositionOnBitmap=int(tempC/charPerBitmapRow); // =1
|
||||||
charBitmapStartPosition=(charRowPositionOnBitmap * fontMapWidth * (fontHeight/8)) + (charColPositionOnBitmap * fontWidth) ;
|
charBitmapStartPosition=(charRowPositionOnBitmap * fontMapWidth * (fontHeight/8)) + (charColPositionOnBitmap * fontWidth) ;
|
||||||
|
|
||||||
// each row on LCD is 8 bit height (see datasheet for explanation)
|
// each row on LCD is 8 bit height (see datasheet for explanation)
|
||||||
|
|||||||
98
examples/MicroViewDemo/MicroViewDemo.ino
Normal file
98
examples/MicroViewDemo/MicroViewDemo.ino
Normal file
@@ -0,0 +1,98 @@
|
|||||||
|
#include <MicroView.h>
|
||||||
|
#include <SPI.h>
|
||||||
|
|
||||||
|
MICROVIEW mv;
|
||||||
|
|
||||||
|
uint8_t dly=5;
|
||||||
|
|
||||||
|
void setup() {
|
||||||
|
Serial.begin(115200);
|
||||||
|
Serial.println("start");
|
||||||
|
mv.begin();
|
||||||
|
mv.clear(ALL);
|
||||||
|
}
|
||||||
|
|
||||||
|
void loop() {
|
||||||
|
int i;
|
||||||
|
uint8_t x0,y0,x1,y1;
|
||||||
|
|
||||||
|
mv.setFontType(0);
|
||||||
|
mv.setCursor(0,40);
|
||||||
|
mv.print(" LINE ");
|
||||||
|
mv.display();
|
||||||
|
delay(500);
|
||||||
|
|
||||||
|
for (i=0; i<150;i++) {
|
||||||
|
x0=random(64);
|
||||||
|
x1=random(64);
|
||||||
|
y0=random(48);
|
||||||
|
y1=random(48);
|
||||||
|
|
||||||
|
mv.line(x0,y0,x1,y1, WHITE, XOR);
|
||||||
|
mv.display();
|
||||||
|
delay(dly);
|
||||||
|
mv.line(x0,y0,x1,y1, WHITE,XOR);
|
||||||
|
mv.display();
|
||||||
|
}
|
||||||
|
|
||||||
|
mv.setCursor(0,40);
|
||||||
|
mv.print("RECTANGLE ");
|
||||||
|
mv.display();
|
||||||
|
delay(500);
|
||||||
|
|
||||||
|
x0=0;y0=0;x1=0;y1=0;
|
||||||
|
for (i=1; i<64;i++) {
|
||||||
|
y1=i;
|
||||||
|
if (y1>47) y1=47;
|
||||||
|
mv.rect(x0,y0,i,y1,WHITE,XOR);
|
||||||
|
mv.display();
|
||||||
|
delay(dly);
|
||||||
|
mv.rect(x0,y0,i,y1,WHITE,XOR);
|
||||||
|
mv.display();
|
||||||
|
}
|
||||||
|
|
||||||
|
mv.setCursor(0,40);
|
||||||
|
mv.print(" CIRCLE ");
|
||||||
|
mv.display();
|
||||||
|
delay(500);
|
||||||
|
|
||||||
|
x0=32;y0=24;
|
||||||
|
for (i=0;i<32;i++) {
|
||||||
|
mv.circle(x0,y0,i,WHITE,XOR);
|
||||||
|
mv.display();
|
||||||
|
delay(dly);
|
||||||
|
mv.circle(x0,y0,i,WHITE,XOR);
|
||||||
|
mv.display();
|
||||||
|
delay(dly);
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
delay(500);
|
||||||
|
|
||||||
|
mv.clear(PAGE);
|
||||||
|
mv.setCursor(0,40);
|
||||||
|
mv.print(" Font 0 ");
|
||||||
|
mv.display();
|
||||||
|
|
||||||
|
mv.setFontType(0);
|
||||||
|
mv.setCursor(0,0);
|
||||||
|
mv.print("01234567890ABCDabcd01234567890ABCDabcd");
|
||||||
|
mv.display();
|
||||||
|
delay(1500);
|
||||||
|
|
||||||
|
|
||||||
|
mv.clear(PAGE);
|
||||||
|
mv.setCursor(0,40);
|
||||||
|
mv.print(" Font 1 ");
|
||||||
|
mv.display();
|
||||||
|
|
||||||
|
mv.setFontType(1);
|
||||||
|
mv.setCursor(0,0);
|
||||||
|
mv.print("0123ABCDabcd");
|
||||||
|
mv.display();
|
||||||
|
delay(1500);
|
||||||
|
mv.clear(PAGE);
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
60
fontlargenumber.h
Normal file
60
fontlargenumber.h
Normal file
@@ -0,0 +1,60 @@
|
|||||||
|
#ifndef FONTLARGENUMBER_H
|
||||||
|
#define FONTLARGENUMBER_H
|
||||||
|
|
||||||
|
#include <avr/pgmspace.h>
|
||||||
|
|
||||||
|
static const unsigned char fontlargenumber[] PROGMEM = {
|
||||||
|
// first row FONTTYPE, FONTWIDTH, FONTHEIGHT, ASCII START CHAR, TOTAL CHARACTERS, FONT MAP WIDTH HIGH, FONT MAP WIDTH LOW (2,56 meaning 256)
|
||||||
|
2,12,48,48,11,1,32,
|
||||||
|
0x00, 0xC0, 0xF8, 0x7C, 0x3E, 0x3E, 0xFC, 0xF8, 0xC0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0xE0,
|
||||||
|
0x78, 0xFE, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xF0, 0x7C, 0x3C, 0x3E, 0x3E, 0xFE, 0xFC,
|
||||||
|
0xE0, 0x00, 0x00, 0x00, 0x00, 0x7C, 0x3E, 0x3E, 0x3E, 0xFE, 0xF8, 0xC0, 0x00, 0x00, 0x00, 0x00,
|
||||||
|
0x00, 0x00, 0x00, 0x00, 0x00, 0xF8, 0xFE, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFE, 0xFE, 0x3E,
|
||||||
|
0x3E, 0x3E, 0x3E, 0x3E, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0xF0, 0xFC, 0x3E, 0x3E, 0x3E,
|
||||||
|
0xFC, 0x00, 0x00, 0x00, 0x00, 0x3E, 0x3E, 0x3E, 0x3E, 0x3E, 0x3E, 0x3E, 0xFE, 0xFE, 0x00, 0x00,
|
||||||
|
0x00, 0x00, 0xC0, 0xF8, 0xFE, 0x3E, 0x7E, 0xFC, 0xE0, 0x00, 0x00, 0x00, 0x00, 0x00, 0xE0, 0xFC,
|
||||||
|
0x7E, 0x3E, 0xFE, 0xF8, 0xC0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xC0, 0xE0, 0xC0, 0x00,
|
||||||
|
0x00, 0x00, 0x00, 0x00, 0xF0, 0xFF, 0x0F, 0x00, 0x00, 0x00, 0xF9, 0xFF, 0xFF, 0xF0, 0x00, 0x00,
|
||||||
|
0x00, 0x00, 0x07, 0x03, 0x00, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00,
|
||||||
|
0x00, 0x00, 0x00, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF,
|
||||||
|
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xE0, 0xFF, 0x1F, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00,
|
||||||
|
0x00, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xE0, 0xFF, 0x3F,
|
||||||
|
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xC0, 0xFC,
|
||||||
|
0x7F, 0x03, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0x00, 0x00, 0x00,
|
||||||
|
0x00, 0xFE, 0xFF, 0x03, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xF0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||||
|
0x3F, 0x7F, 0x3F, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0x00, 0x00, 0xE0, 0xFF, 0x1F, 0x00,
|
||||||
|
0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||||
|
0x00, 0x00, 0x00, 0x00, 0x00, 0xE0, 0xFE, 0x1F, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0xF8, 0xF8,
|
||||||
|
0xFC, 0xFF, 0xC7, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xC0, 0xFE, 0x3F, 0x03, 0x00, 0xFF, 0xFF,
|
||||||
|
0x00, 0x00, 0x00, 0x00, 0x00, 0x3F, 0x3F, 0x3E, 0x7E, 0xFC, 0xF8, 0xE0, 0x00, 0x00, 0x00, 0x00,
|
||||||
|
0x00, 0xFF, 0xFF, 0x80, 0xF0, 0x7C, 0x7C, 0xF8, 0xF0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||||
|
0x80, 0xF8, 0xFF, 0x07, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x9F, 0xFF, 0xF8, 0xFE, 0x1F,
|
||||||
|
0x01, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xC0, 0x00, 0x00, 0x80, 0xFF, 0xFF, 0xFF, 0x00, 0x00,
|
||||||
|
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xC0, 0xFC,
|
||||||
|
0x7F, 0x03, 0x00, 0x00, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0x00,
|
||||||
|
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xE0, 0xFE, 0x0F, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||||
|
0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x0F, 0xFF, 0xF8, 0x00, 0x00, 0x00, 0xF8, 0xFF, 0xE7, 0xE0,
|
||||||
|
0xE0, 0xE0, 0xFF, 0xFF, 0xE0, 0xE0, 0xE0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x07, 0xFF,
|
||||||
|
0xFE, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0x03, 0x00, 0x00, 0x01, 0xFF, 0xFF, 0x00, 0x00,
|
||||||
|
0x00, 0x00, 0x00, 0xF0, 0xFF, 0x0F, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xC0, 0xFC, 0x3F,
|
||||||
|
0x03, 0x03, 0x1F, 0xFF, 0xFC, 0xC0, 0x00, 0x00, 0x00, 0x00, 0x0F, 0x1F, 0x3E, 0x3E, 0x0F, 0x01,
|
||||||
|
0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||||
|
0x07, 0xFF, 0xFF, 0x07, 0x00, 0x00, 0x00, 0xFC, 0xFF, 0x07, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||||
|
0x00, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xE0, 0xFE, 0x0F, 0x00, 0x00, 0x00, 0x00,
|
||||||
|
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xC0, 0xFF, 0x7F, 0x00, 0x00, 0x00,
|
||||||
|
0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0xFF, 0xFF, 0x03, 0x03, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||||
|
0x00, 0x00, 0xC0, 0xFF, 0x7F, 0x00, 0x00, 0x00, 0x00, 0x0F, 0xFF, 0xFF, 0x80, 0x00, 0x00, 0x80,
|
||||||
|
0xFF, 0x7F, 0x00, 0x00, 0x00, 0x00, 0xFE, 0xFF, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||||
|
0x00, 0xFF, 0xFF, 0x80, 0x00, 0x00, 0x00, 0x80, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||||
|
0x00, 0x00, 0x80, 0xFC, 0xFF, 0x07, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0x00,
|
||||||
|
0x00, 0x00, 0x00, 0x00, 0x00, 0x03, 0x1F, 0x3F, 0x7C, 0x7C, 0x3F, 0x1F, 0x03, 0x00, 0x00, 0x00,
|
||||||
|
0x00, 0x00, 0x7C, 0x7C, 0x7C, 0x7F, 0x7F, 0x7C, 0x7C, 0x7C, 0x00, 0x00, 0x00, 0x7F, 0x7F, 0x7C,
|
||||||
|
0x7C, 0x7C, 0x7C, 0x7C, 0x7C, 0x00, 0x00, 0x00, 0x00, 0x3F, 0x7E, 0x7C, 0x7C, 0x7E, 0x1F, 0x07,
|
||||||
|
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x7F, 0x7F, 0x00, 0x00, 0x00, 0x00,
|
||||||
|
0x00, 0x1F, 0x3E, 0x7C, 0x7C, 0x3E, 0x1F, 0x07, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, 0x1F,
|
||||||
|
0x7F, 0x7C, 0x7C, 0x3F, 0x07, 0x00, 0x00, 0x00, 0x00, 0x00, 0x7F, 0x7F, 0x00, 0x00, 0x00, 0x00,
|
||||||
|
0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x1F, 0x3F, 0x7E, 0x7C, 0x7E, 0x3F, 0x1F, 0x01, 0x00, 0x00,
|
||||||
|
0x00, 0x00, 0x3E, 0x7C, 0x7C, 0x7E, 0x3F, 0x0F, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||||
|
0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||||
|
};
|
||||||
|
#endif
|
||||||
Reference in New Issue
Block a user