LCD-Magic (3 / 9 steg)
Steg 3: Större teckensnitt
Större använder facken en 5 x 8 pixel.
Den grundläggande byggstenen är bara en speciell karaktär som är allt svart och en som är helt vitt.
I Photoshop är tecken beredda. Se bilder.
(Förslag för att utforska: kan vi använda den "" eller utrymme för alla vita? Detta skulle spara oss definiera en speciell karaktär. Hur kan vi kalla en normal karaktär som ett specialtecken? Svar: lcd.print(char(32)); )
Ytterligare byggstenar är nödvändiga eftersom vi har endast 4 linjer på LCD-skärmen. Så behöver ett "H" eller ett "S" en speciell "halva" byggsten, övre och nedre.
Skriptet är stor, men mycket tydligt, du börjar med defing buidling block.
alla som:
byte b2 [8] = {nedre halvan
0b00000,
0b00000,
0b00000,
0b00000,
0b11111,
0b11111,
0b11111,
0b11111
};
lcd.createChar (1, b1).
Efter att du göra en matris (4 av 16) och definiera i den här matrisen siffrorna för dina byggstenar.
exempel:
char beam [4] [17] = {/ / word "BEAM" som ska ändras: första skärmen visas en gång (passar på en skärm)
"1140111011101461",
"1210120010101751",
"1310130011101001",
"1150111010101001"};
Sedan du prova denna matris och skriva specialtecken till skärmen.
Kreativitet är behövde ha tillräckligt byggstenar inuti din möjliga 8 särskilda tecken!
Så på en gång, behöver du inte en fancy alla 26 bokstäver i alfabetet tillgängliga.
void patches() {
lcd.setCursor(0,0);
//
att skapa delarna av den "stora" bokstäver
//
byte b1 [8] = {//all svart---> > kan vi spara denna slot? Jag tror inte det...
0b11111,
0b11111,
0b11111,
0b11111,
0b11111,
0b11111,
0b11111,
0b11111
};
byte b0 [8] = {//all vit---> > Spara en anpassad röding med char(32) tomt utrymme
0b00000,
0b00000,
0b00000,
0b00000,
0b00000,
0b00000,
0b00000,
0b00000
};
byte b3 [8] = {övre halvan
0b11111,
0b11111,
0b11111,
0b11111,
0b00000,
0b00000,
0b00000,
0b00000
};
byte b2 [8] = {nedre halvan
0b00000,
0b00000,
0b00000,
0b00000,
0b11111,
0b11111,
0b11111,
0b11111
};
//
Detta är allt vi behöver för "PATCHAR" text
//
lcd.createChar (1, b1).
lcd.createChar 2, b0.
lcd.createChar (3, b3).
lcd.createChar (4, b2).
//
BEAM texten behöver vi några mer speciella tecken
//
byte b4 [8] = {
0b11000,
0b11000,
0b11000,
0b11000,
0b11111,
0b11111,
0b11111,
0b11111
};
byte b5 [8] = {
0b11111,
0b11111,
0b11111,
0b11111,
0b11100,
0b11100,
0b11100,
0b11100
};
byte b6 [8] = {
0b00011,
0b00011,
0b00011,
0b00011,
0b11111,
0b11111,
0b11111,
0b11111
};
byte b7 [8] = {
0b11111,
0b11111,
0b11111,
0b11111,
0b00111,
0b00111,
0b00111,
0b00111
};
lcd.createChar (5, b4).
lcd.createChar (6, b5).
lcd.createChar (7, b6).
lcd.createChar 8, b7.
//
kodning av den första titeln
//
char beam [4] [17] = {/ / word "BEAM" som ska ändras: första skärmen visas en gång (passar på en skärm)
"1140111011101461",
"1210120010101751",
"1310130011101001",
"1150111010101001"};
//
Skriv ordet "beam"
//
för (int j = 0; j < 4; j ++)
{
för (int jag = 0; jag < 17; i ++)
{
setCursorFor16_4(j,i);
writeCharForBigWords (i, beam [j]);
}
}
Delay(2000);
ordet patchar i koden
unsigned char nextAddress = 0;
nextAddress = myStrCopy (2, "stolt", screen1 [1], 14);
nextAddress = myStrCopy (2, "presenter", screen1 [2], 14);
bufferToScreen();
Delay(2000);
//
kodning av den andra titeln
//
char patchar [4] [28] = {/ / word "PATCHAR" som ska ändras: i första skärmen visas en gång - i två halvor
"111011101110111010101110111",
"101010100100100012101200120",
"111011100100100013101300031",
"100010100100111010101110111"};
//
ordet "patcees" passar inte på den här skärmen så:
//
Skriv första halvan av ordet "patchar"
int cc = 0;
medan (cc ++ < 4) {
för (int j = 0; j < 4; j ++)
{
för (int jag = 0; jag < 16; i ++)
{
setCursorFor16_4(j,i);
writeCharForBigWords (i, patchar [j]);
}
}
fördröjning (2000 -cc * 400);
Skriv andra halvan av ordet "patchar"
för (int j = 0; j < 4; j ++)
{
för (int jag = 0; jag < 16; i ++)
{
setCursorFor16_4(j,i);
writeCharForBigWords (jag + 11, patchar [j]);
}
}
fördröjning (2000 -cc * 400);
}
}