Önceki yazıda 8×8 LED Matrix modülü ile kayar yazı yapmıştık. Ancak orada küçük bir sorunumuz vardı: Türkçe karakterlere sahip olmaması. Bu yazıda buna bir çözüm üretiyoruz.
Kullandığımız MaxMatrix kütüphanesi metindeki tekil karakterleri ASCII kodları üzerinden buluyor ve gösteriyor. Ancak Türkçe karakterler ASCII tablosunda yer almıyor.
Bunu çözmenin kestirme bir yolu mevcut. ASCII tablosunda pek kullanılmayan parantez gibi karakterleri Türkçe karakterler ile değiştirmek.
Aşağıdaki sketch tam da bunu yapıyor. Türkçe karakterlere sahip bir yazı kaydırmak istediğimizde ilgili Türkçe karakteri kodun yorum kısmında gösterilen karakter ile değiştirmek. Yani TÜRKÇE yazmak istiyorsak metin kısmına T’RK%E yazmalıyız. Böylece tüm Türkçe karakterler düzgün bir şekilde gösterilmiş olacak.
Arduino’da iyi olmak için öncelikle elektronikte iyi olmak gerekir. Türkiye’nin en iyi temel elektronik eğitim seti ARDUINO ÖNCESİ TEMEL ELEKTRONİK EĞİTİM VE DENEY SETİ‘ni keşfedin. Gereksiz bilgilerden arındırılmış basit ve eğlenceli anlatımla ELEKTRONİK öğrenin ve Arduino’ya METE HOCA farkıyla güçlü başlayın!
Sketch kodunu kopyalamak için pencerenin sağ üst köşesindeki butona tıklayabilir veya buraya tıklayarak ZIP dosyası olarak indirebilirsiniz.
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 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 |
/* 8x8 LED Matrix ile Türkçe Karakterli Kayar Yazı Nasıl Yapılır? 8x8 LED Matrix'in detaylı açıklaması ve örnek projelerini web sitemizde bulabilirsiniz. Mete Hoca https://www.metehoca.com/ */ #include <MaxMatrix.h> byte buffer[7]; int DIN = 8; // DIN (veya MOSI) int CS = 9; // CS int CLK = 10; // SCK int ekransayisi = 2; // Takılı LED Matrix sayısını seçelim int parlaklik = 1; // Parlaklık ayarı. 1 en düşük, 15 en yüksek int kaymahizi = 50; // Yazının kayma hızı. Düşürdükçe hızlanır // Metinlerimizi buradan ekleyelim. Sondaki boşluklar cümle sonrası içindir // // ASCII kodlarında Türkçe karakterler olmadığı için diğer karakterleri // Türkçe karakterlerle değiştiriyoruz. // Metnimizdeki Türkçe karakterleri de bu az kullanılan karakterlerle // değiştirmemiz gerekiyor. // // Ş=$ Ç=% Ö=& Ü=' Ğ=( İ=) ş=* ç=+ ö=, ü=< ğ== ı=> char metin1[] = "$*%+&,'<(=)>"; //edit text message $%&'() MaxMatrix kayan_yazi(DIN, CS, CLK, ekransayisi); // Kütüphane ayarlandı void setup() { kayan_yazi.init(); // Kütüphane başlatılıyor kayan_yazi.setIntensity(parlaklik); // Parlaklık ayarlandı } void loop() { MetinKaydir(metin1,kaymahizi); // İlk metnimiz } // Metni harflere ayırıp gönderdiğimiz fonksiyon void MetinKaydir(char* metin, int kaydirma_hizi) { while (*metin != 0) { KarakterKaydir(*metin, kaydirma_hizi); metin++; } } // Kullanılabilen tüm karakterler burada ASCII sistemiyle dizili PROGMEM const unsigned char CH[] = { 3, 8, B0000000, B0000000, B0000000, B0000000, B0000000, // Boşluk 1, 8, B1011111, B0000000, B0000000, B0000000, B0000000, // ! 3, 8, B0000011, B0000000, B0000011, B0000000, B0000000, // " 5, 8, B0010100, B0100100, B0010100, B0111110, B0010100, // # 5, 8, B00101110, B01001001, B11001001, B01001001, B00110010, // $ Ş harfi 5, 8, B00111110, B01000001, B11000001, B01000001, B00100010, // % Ç harfi 5, 8, B01111000, B10000101, B10000100, B10000101, B01111000, // & Ö harfi 5, 8, B01111100, B10000001, B10000000, B10000001, B01111100, // ' Ü harfi 5, 8, B01111100, B10000011, B10010011, B10010011, B11110100, // ( Ğ harfi 3, 8, B10000100, B11111101, B10000100, B00000000, B00000000, // ) İ harfi 4, 8, B01001000, B11010100, B11010100, B00110100, B00000000, // * ş harfi 4, 8, B00111000, B11000100, B11000100, B01000100, B00000000, // + ç harfi 4, 8, B00111000, B01000101, B01000101, B00111000, B00000000, // , ö harfi 4, 8, B0001000, B0001000, B0001000, B0001000, B0000000, // - 2, 8, B1100000, B1100000, B0000000, B0000000, B0000000, // . 4, 8, B1100000, B0011000, B0000110, B0000001, B0000000, // / 4, 8, B0111110, B1000001, B1000001, B0111110, B0000000, // 0 3, 8, B1000010, B1111111, B1000000, B0000000, B0000000, // 1 4, 8, B1100010, B1010001, B1001001, B1000110, B0000000, // 2 4, 8, B0100010, B1000001, B1001001, B0110110, B0000000, // 3 4, 8, B0011000, B0010100, B0010010, B1111111, B0000000, // 4 4, 8, B0100111, B1000101, B1000101, B0111001, B0000000, // 5 4, 8, B0111110, B1001001, B1001001, B0110000, B0000000, // 6 4, 8, B1100001, B0010001, B0001001, B0000111, B0000000, // 7 4, 8, B0110110, B1001001, B1001001, B0110110, B0000000, // 8 4, 8, B0000110, B1001001, B1001001, B0111110, B0000000, // 9 2, 8, B01010000, B0000000, B0000000, B0000000, B0000000, // : 2, 8, B10000000, B01010000, B0000000, B0000000, B0000000, // ; 4, 8, B00111100, B01000001, B01000001, B01111100, B00000000, // < ü harfi 4, 8, B10011000, B10100101, B10100101, B01111000, B00000000, // = ğ harfi 3, 8, B1000100, B1111100, B1000100, B0000000, B0000000, // > ı harfi 4, 8, B0000010, B1011001, B0001001, B0000110, B0000000, // ? 5, 8, B0111110, B1001001, B1010101, B1011101, B0001110, // @ 4, 8, B1111110, B0010001, B0010001, B1111110, B0000000, // A 4, 8, B1111111, B1001001, B1001001, B0110110, B0000000, // B 4, 8, B0111110, B1000001, B1000001, B0100010, B0000000, // C 4, 8, B1111111, B1000001, B1000001, B0111110, B0000000, // D 4, 8, B1111111, B1001001, B1001001, B1000001, B0000000, // E 4, 8, B1111111, B0001001, B0001001, B0000001, B0000000, // F 4, 8, B0111110, B1000001, B1001001, B1111010, B0000000, // G 4, 8, B1111111, B0001000, B0001000, B1111111, B0000000, // H 3, 8, B1000001, B1111111, B1000001, B0000000, B0000000, // I 4, 8, B0110000, B1000000, B1000001, B0111111, B0000000, // J 4, 8, B1111111, B0001000, B0010100, B1100011, B0000000, // K 4, 8, B1111111, B1000000, B1000000, B1000000, B0000000, // L 5, 8, B1111111, B0000010, B0001100, B0000010, B1111111, // M 5, 8, B1111111, B0000100, B0001000, B0010000, B1111111, // N 4, 8, B0111110, B1000001, B1000001, B0111110, B0000000, // O 4, 8, B1111111, B0001001, B0001001, B0000110, B0000000, // P 4, 8, B0111110, B1000001, B1000001, B10111110, B0000000, // Q 4, 8, B1111111, B0001001, B0001001, B1110110, B0000000, // R 4, 8, B0100110, B1001001, B1001001, B0110010, B0000000, // S 5, 8, B0000001, B0000001, B1111111, B0000001, B0000001, // T 4, 8, B0111111, B1000000, B1000000, B0111111, B0000000, // U 5, 8, B0001111, B0110000, B1000000, B0110000, B0001111, // V 5, 8, B0111111, B1000000, B0111000, B1000000, B0111111, // W 5, 8, B1100011, B0010100, B0001000, B0010100, B1100011, // X 5, 8, B0000111, B0001000, B1110000, B0001000, B0000111, // Y 4, 8, B1100001, B1010001, B1001001, B1000111, B0000000, // Z 2, 8, B1111111, B1000001, B0000000, B0000000, B0000000, // [ 4, 8, B0000001, B0000110, B0011000, B1100000, B0000000, // Ters Eğik 2, 8, B1000001, B1111111, B0000000, B0000000, B0000000, // ] 3, 8, B0000010, B0000001, B0000010, B0000000, B0000000, // Şapka 4, 8, B1000000, B1000000, B1000000, B1000000, B0000000, // _ 2, 8, B0000001, B0000010, B0000000, B0000000, B0000000, // ` 4, 8, B0100000, B1010100, B1010100, B1111000, B0000000, // a 4, 8, B1111111, B1000100, B1000100, B0111000, B0000000, // b 3, 8, B0111000, B1000100, B1000100, B0000000, B0000000, // c 4, 8, B0111000, B1000100, B1000100, B1111111, B0000000, // d 4, 8, B0111000, B1010100, B1010100, B0011000, B0000000, // e 3, 8, B0000100, B1111110, B0000101, B0000000, B0000000, // f 4, 8, B10011000, B10100100, B10100100, B01111000, B0000000, // g 4, 8, B1111111, B0000100, B0000100, B1111000, B0000000, // h 3, 8, B1000100, B1111101, B1000000, B0000000, B0000000, // i 4, 8, B1000000, B10000000, B10000100, B1111101, B0000000, // j 4, 8, B1111111, B0010000, B0101000, B1000100, B0000000, // k 3, 8, B1000001, B1111111, B1000000, B0000000, B0000000, // l 5, 8, B1111100, B0000100, B1111100, B0000100, B1111000, // m 4, 8, B1111100, B0000100, B0000100, B1111000, B0000000, // n 4, 8, B0111000, B1000100, B1000100, B0111000, B0000000, // o 4, 8, B11111100, B0100100, B0100100, B0011000, B0000000, // p 4, 8, B0011000, B0100100, B0100100, B11111100, B0000000, // q 4, 8, B1111100, B0001000, B0000100, B0000100, B0000000, // r 4, 8, B1001000, B1010100, B1010100, B0100100, B0000000, // s 3, 8, B0000100, B0111111, B1000100, B0000000, B0000000, // t 4, 8, B0111100, B1000000, B1000000, B1111100, B0000000, // u 5, 8, B0011100, B0100000, B1000000, B0100000, B0011100, // v 5, 8, B0111100, B1000000, B0111100, B1000000, B0111100, // w 5, 8, B1000100, B0101000, B0010000, B0101000, B1000100, // x 4, 8, B10011100, B10100000, B10100000, B1111100, B0000000, // y 3, 8, B1100100, B1010100, B1001100, B0000000, B0000000, // z 3, 8, B0001000, B0110110, B1000001, B0000000, B0000000, // { 1, 8, B1111111, B0000000, B0000000, B0000000, B0000000, // | 3, 8, B1000001, B0110110, B0001000, B0000000, B0000000, // } 4, 8, B0001000, B0000100, B0001000, B0000100, B0000000, // ~ }; // Gönderdiğimiz karakterler burada teker teker kaydırılıyor void KarakterKaydir(char karakter, int kaydirma_hizi) { if (karakter < 32) return; karakter -= 32; memcpy_P(buffer, CH + 7*karakter, 7); kayan_yazi.writeSprite(ekransayisi*8, 0, buffer); kayan_yazi.setColumn(ekransayisi*8 + buffer[0], 0); for (int x=0; x<=buffer[0]; x++) { delay(kaydirma_hizi); kayan_yazi.shiftLeft(false, false); } } |