mirror of
https://github.com/geekammo/MicroView-Arduino-Library.git
synced 2026-02-20 03:21:30 +01:00
added other fonts support
This commit is contained in:
@@ -5,8 +5,9 @@
|
||||
// Change to add fonts
|
||||
#include <font5x7.h>
|
||||
#include <font8x16.h>
|
||||
#define TOTALFONTS 2
|
||||
const unsigned char *MICROVIEW::fontsPointer[]={font5x7,font8x16};
|
||||
#include <fontlargenumber.h>
|
||||
#define TOTALFONTS 3
|
||||
const unsigned char *MICROVIEW::fontsPointer[]={font5x7,font8x16,fontlargenumber};
|
||||
// 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 line, uint8_t c, uint8_t mode) {
|
||||
uint8_t rowsToDraw,row;
|
||||
uint8_t rowsToDraw,row, tempC;
|
||||
uint8_t i,j,tempX;
|
||||
uint16_t charPerBitmapRow,charColPositionOnBitmap,charRowPositionOnBitmap,charBitmapStartPosition;
|
||||
// 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)))
|
||||
//return;
|
||||
|
||||
if ((c<fontStartChar) || (c>(fontStartChar+fontTotalChar-1))) // no bitmap for the required c
|
||||
return;
|
||||
|
||||
tempC=c-fontStartChar;
|
||||
|
||||
tempX=x;
|
||||
// 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
|
||||
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) {
|
||||
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
|
||||
tempX=0;
|
||||
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)
|
||||
if (tempX & 0x1) {
|
||||
@@ -484,12 +490,11 @@ size_t MICROVIEW::write(uint8_t c) {
|
||||
return;
|
||||
}
|
||||
|
||||
|
||||
// font height over 8 bit
|
||||
// take character "0" ASCII 48 as example
|
||||
charPerBitmapRow=fontMapWidth/fontWidth; // 256/8 =32 char per row
|
||||
charColPositionOnBitmap=c % charPerBitmapRow; // =16
|
||||
charRowPositionOnBitmap=int(c/charPerBitmapRow); // =1
|
||||
charColPositionOnBitmap=tempC % charPerBitmapRow; // =16
|
||||
charRowPositionOnBitmap=int(tempC/charPerBitmapRow); // =1
|
||||
charBitmapStartPosition=(charRowPositionOnBitmap * fontMapWidth * (fontHeight/8)) + (charColPositionOnBitmap * fontWidth) ;
|
||||
|
||||
// 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