Stap 3: Grotere lettertypen
Groter maakt gebruik van de "slots" als een 5 x 8 pixel.
De elementaire bouwsteen is gewoon een speciaal teken dat is alles zwart en dat is helemaal wit.
In Photoshop worden de tekens bereid. Zie foto's.
(Suggestie voor het verkennen van: kunnen we gebruiken het "" of ruimte voor de alle witte? Dit zou besparen ons een speciaal teken definiëren. Hoe kunnen we een normale karakter als een speciaal teken noemen? Antwoord: de lcd.print(char(32)); )
Verdere bouwstenen zijn noodzakelijk omdat we slechts 4 lijnen op het LCD-scherm hebben. Dus moet een "H" of een "S" een speciale "halve" bouwsteen, bovenste en onderste.
Het script is groot, maar heel duidelijk, u beginnen met defing de bouwspel blokken.
Allereerst:
byte b2[8] = {lower half 0b00000, 0b00000, 0b00000, 0b00000, 0b11111, 0b11111, 0b11111, 0b11111 }; lcd.createChar(1, b1);
Na dat u Maak een array (4 door 16) en de nummers voor uw bouwstenen in deze matrix definiëren;
in het volgende voorbeeld:
char beam[4][17] = { // word "BEAM" which should be changed: first screen shown once (fits on one screen) "1140111011101461", "1210120010101751", "1310130011101001", "1150111010101001" };
Dan moet je proeven van deze array en de speciale tekens op het scherm schrijven.
Creativiteit is nodig om voldoende bouwstenen binnen uw mogelijk 8 speciale tekens!
Dus in één keer, hoeft je niet een fancy alle 26 letters van het alfabet beschikbaar.
VOID patches() {lcd.setCursor(0,0); / / / / creëren de delen van de "grote" letters / / byte b1 [8] = {//all zwarte---> > kunnen we het redden van deze gokkast? Ik geloof het niet... 0b11111, 0b11111, 0b11111, 0b11111, 0b11111, 0b11111, 0b11111, 0b11111}; byte b0 [8] = {//all witte---> > opslaan een aangepaste char met char(32) witte ruimte void patches(){ lcd.setCursor(0,0); // // creating the parts of the "big" letters // byte b1[8] = { //all black ----->> can we save this slot? I don't think so.... 0b11111, 0b11111, 0b11111, 0b11111, 0b11111, 0b11111, 0b11111, 0b11111 }; byte b0[8] = {//all white ----->> save a custom char by using char(32) white space 0b00000, 0b00000, 0b00000, 0b00000, 0b00000, 0b00000, 0b00000, 0b00000 }; byte b3[8] = {upper half 0b11111, 0b11111, 0b11111, 0b11111, 0b00000, 0b00000, 0b00000, 0b00000 }; byte b2[8] = {lower half 0b00000, 0b00000, 0b00000, 0b00000, 0b11111, 0b11111, 0b11111, 0b11111 }; // // this is all we need for the "PATCHES" text // lcd.createChar(1, b1); lcd.createChar(2, b0); lcd.createChar(3, b3); lcd.createChar(4, b2); // // for the BEAM text we need some more special characters // 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); // // coding of the first title // char beam[4][17] = { // word "BEAM" which should be changed: first screen shown once (fits on one screen) "1140111011101461", "1210120010101751", "1310130011101001", "1150111010101001" }; // //write word "beam" // for ( int j = 0; j < 4; j++ ) { for ( int i = 0; i < 17; i++ ) { setCursorFor16_4(j,i); writeCharForBigWords(i, beam[j] ); } } delay(2000); //the word patches in code unsigned char nextAddress = 0; nextAddress = myStrCopy( 2, "proudly ", screen1[1], 14 ); nextAddress = myStrCopy( 2, "presents ", screen1[2], 14 ); bufferToScreen(); delay(2000); // // coding of the second title // char patches[4][28] = { // word "PATCHES" which should be changed: in first screen shown once - in two halves "111011101110111010101110111", "101010100100100012101200120", "111011100100100013101300031", "100010100100111010101110111" }; // //the word "patcees" does not fit on this screen, so: // //write first half of word "patches" int cc = 0; while ( cc++ < 4 ){ for ( int j = 0; j < 4; j++ ) { for ( int i = 0; i < 16; i++ ) { setCursorFor16_4(j,i); writeCharForBigWords(i, patches[j] ); } } delay(2000 -cc*400 ); //write second half of word "patches" for ( int j = 0; j < 4; j++ ) { for ( int i = 0; i < 16; i++ ) { setCursorFor16_4(j,i); writeCharForBigWords(i+11, patches[j] ); } } delay(2000 -cc*400); } } byte b3 [8] = {bovenste helft 0b11111, 0b11111, 0b11111, 0b11111, 0b00000, 0b00000, 0b00000, 0b00000}; byte b2 [8] = {lagere halve 0b00000, 0b00000, 0b00000, 0b00000, 0b11111, 0b11111, 0b11111, 0b11111}; / / Dit is allen wij voor de tekst "PATCHES wensen" / / lcd.createChar (1, b1); lcd.createChar (2, b0); lcd.createChar (3, b3); lcd.createChar (4, b2); / / de BEAM tekst moeten we enkele meer speciale tekens / / 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); / / codage van de eerste titel / / int xp = 16*sin(counter); int yp = 4*cosine(counter);