Forum: Mikrocontroller und Digitale Elektronik 5x7 LED Matrix Laufschrift - Abstand zwischen Zeichen


von Yves K. (yves_k)


Lesenswert?

Hallo Foren-Gemeinde,

ich habe ein kleines (großes) Problem bei meinem aktuellen Projekt...

Mein Ziel ist es eine Laufschrift auf eine 5x7 Matrix darzustellen. Um 
mich dem Problem Schritt für Schritt zu nähern habe ich begonnen 
einzelne LED´s zu selektieren, danach Buchstaben mittels Font 
darzustellen und als nächstes wollte ich eine Laufschrift darstellen. 
Dies ist mir auch mittels dem nachfolgenden Code gelungen, allerdings 
nicht ganz zufriedenstellend.

Warum? Ich versuche eine Spalte zwischen den einzelnen Zeichen leer 
zulassen aber dies will mir partout nicht gelingen. Ich sitze seit 3 
Tagen an diesem Problem und mittlerweile bin ich ratlos. Vielleicht kann 
sich jemand dem Code bzw. dem Problem mal annehmen. Vielleicht hat der 
ein oder andere das Problem schon gelöst...

Bin für jede Hilfe dankbar...
Viele Grüße
Yves

Hier der Code:
1
#define NUM_ROWS 7                   // Single sign number rows
2
#define NUM_COLS 5          // Single sign number cols
3
char bitmask = 0b00000001;           //bitmask for row setup
4
  
5
6
void print_run_hor_charstring_5x7( char text_string[])
7
{
8
  for (int s = 0; s < ((strlen(text_string))*NUM_ROWS*4)-NUM_COLS; s++)
9
        {  
10
         // showtime for single characters
11
         for (int j = 0; j < 20; j++)
12
         {
13
      // for every col c...                           
14
          for(int c = 0; c < NUM_COLS; c++)               
15
          {
16
                col_com74hc595_setBit( c );                    
17
18
              // for every row r...
19
              for(int r = 0; r < NUM_ROWS; r++)           
20
              {
21
                      
22
              // check which row from which character
23
              if((font5x7[text_string[(c+(s/NUM_COLS))/NUM_COLS]-ASCI_OFFSET][(c+(s/NUM_COLS))%NUM_COLS] >> r) & bitmask)               
24
      
25
            row_com74hc595_setBit( r );          
26
               }
27
28
              // switch off the rows
29
            for(int r = 0; r < NUM_ROWS; r++)           
30
              {
31
          row_com74hc595_unsetBit( r );    
32
              }
33
34
              // switch off cols
35
              col_com74hc595_unsetBit( c );   
36
    
37
38
          } // END for(int c = 0; c < NUM_COLS; c++
39
      
40
    } //END for (int j = 0; j < 20; j++)
41
42
  } // END for (int i = 0; i < strlen(string); i++)
43
44
} // END void print_textstring_5x7( char string[])

Der Aufruf würde dann so aussehen...
1
print_run_hor_charstring_5x7("mikrocontroller.net")

Der font sieht folgendermaßen aus:
1
#ifndef _font5x7_H_
2
#define _font5x7_H_
3
4
#define ASCI_OFFSET 32 
5
6
const char font5x7[][5]=   {                    
7
                {0x00,0x00,0x00,0x00,0x00},   //   0x20 32
8
              {0x00,0x00,0x6f,0x00,0x00},   // ! 0x21 33
9
              {0x00,0x07,0x00,0x07,0x00},   // " 0x22 34
10
              {0x14,0x7f,0x14,0x7f,0x14},   // # 0x23 35
11
              {0x00,0x07,0x04,0x1e,0x00},   // $ 0x24 36
12
              {0x23,0x13,0x08,0x64,0x62},   // % 0x25 37
13
              {0x36,0x49,0x56,0x20,0x50},   // & 0x26 38
14
              {0x00,0x00,0x07,0x00,0x00},   // ' 0x27 39
15
              {0x00,0x1c,0x22,0x41,0x00},   // ( 0x28 40
16
              {0x00,0x41,0x22,0x1c,0x00},   // ) 0x29 41
17
              {0x14,0x08,0x3e,0x08,0x14},   // * 0x2a 42
18
              {0x08,0x08,0x3e,0x08,0x08},   // + 0x2b 43
19
              {0x00,0x50,0x30,0x00,0x00},   // , 0x2c 44
20
              {0x08,0x08,0x08,0x08,0x08},   // - 0x2d 45
21
              {0x00,0x60,0x60,0x00,0x00},   // . 0x2e 46
22
              {0x20,0x10,0x08,0x04,0x02},   // / 0x2f 47
23
              {0x3e,0x51,0x49,0x45,0x3e},   // 0 0x30 48
24
              {0x00,0x42,0x7f,0x40,0x00},   // 1 0x31 49
25
              {0x42,0x61,0x51,0x49,0x46},   // 2 0x32 50
26
              {0x21,0x41,0x45,0x4b,0x31},   // 3 0x33 51
27
              {0x18,0x14,0x12,0x7f,0x10},   // 4 0x34 52
28
              {0x27,0x45,0x45,0x45,0x39},   // 5 0x35 53
29
              {0x3c,0x4a,0x49,0x49,0x30},   // 6 0x36 54
30
              {0x01,0x71,0x09,0x05,0x03},   // 7 0x37 55
31
              {0x36,0x49,0x49,0x49,0x36},   // 8 0x38 56
32
              {0x06,0x49,0x49,0x29,0x1e},   // 9 0x39 57
33
              {0x00,0x36,0x36,0x00,0x00},   // : 0x3a 58
34
              {0x00,0x56,0x36,0x00,0x00},   // ; 0x3b 59
35
              {0x08,0x14,0x22,0x41,0x00},   // < 0x3c 60
36
              {0x14,0x14,0x14,0x14,0x14},   // = 0x3d 61
37
              {0x00,0x41,0x22,0x14,0x08},   // > 0x3e 62
38
              {0x02,0x01,0x51,0x09,0x06},   // ? 0x3f 63
39
              {0x3e,0x41,0x5d,0x49,0x4e},   // @ 0x40 64
40
              {0x7e,0x09,0x09,0x09,0x7e},   // A 0x41 65
41
              {0x7f,0x49,0x49,0x49,0x36},   // B 0x42 66
42
              {0x3e,0x41,0x41,0x41,0x22},   // C 0x43 67
43
              {0x7f,0x41,0x41,0x41,0x3e},   // D 0x44 68
44
              {0x7f,0x49,0x49,0x49,0x41},   // E 0x45 69
45
              {0x7f,0x09,0x09,0x09,0x01},   // F 0x46 70
46
              {0x3e,0x41,0x49,0x49,0x7a},   // G 0x47 71
47
              {0x7f,0x08,0x08,0x08,0x7f},   // H 0x48 72
48
              {0x00,0x41,0x7f,0x41,0x00},   // I 0x49 73
49
              {0x20,0x40,0x41,0x3f,0x01},   // J 0x4a 74
50
              {0x7f,0x08,0x14,0x22,0x41},   // K 0x4b 75
51
              {0x7f,0x40,0x40,0x40,0x40},   // L 0x4c 76
52
              {0x7f,0x02,0x0c,0x02,0x7f},   // M 0x4d 77
53
              {0x7f,0x04,0x08,0x10,0x7f},   // N 0x4e 78
54
              {0x3e,0x41,0x41,0x41,0x3e},   // O 0x4f 79
55
              {0x7f,0x09,0x09,0x09,0x06},   // P 0x50 80
56
              {0x3e,0x41,0x51,0x21,0x5e},   // Q 0x51 81
57
              {0x7f,0x09,0x19,0x29,0x46},   // R 0x52 82
58
              {0x46,0x49,0x49,0x49,0x31},   // S 0x53 83
59
              {0x01,0x01,0x7f,0x01,0x01},   // T 0x54 84
60
              {0x3f,0x40,0x40,0x40,0x3f},   // U 0x55 85
61
              {0x0f,0x30,0x40,0x30,0x0f},   // V 0x56 86
62
              {0x3f,0x40,0x30,0x40,0x3f},   // W 0x57 87
63
              {0x63,0x14,0x08,0x14,0x63},   // X 0x58 88
64
              {0x07,0x08,0x70,0x08,0x07},   // Y 0x59 89
65
              {0x61,0x51,0x49,0x45,0x43},   // Z 0x5a 90
66
              {0x3c,0x4a,0x49,0x29,0x1e},   // [ 0x5b 91
67
              {0x02,0x04,0x08,0x10,0x20},   // \ 0x5c 92
68
              {0x00,0x41,0x7f,0x00,0x00},   // ] 0x5d 93
69
              {0x04,0x02,0x01,0x02,0x04},   // ^ 0x5e 94
70
              {0x40,0x40,0x40,0x40,0x40},   // _ 0x5f 95
71
              {0x00,0x00,0x03,0x04,0x00},   // ` 0x60 96
72
              {0x20,0x54,0x54,0x54,0x78},   // a 0x61 97
73
              {0x7f,0x48,0x44,0x44,0x38},   // b 0x62 98
74
              {0x38,0x44,0x44,0x44,0x20},   // c 0x63 99
75
              {0x38,0x44,0x44,0x48,0x7f},   // d 0x64 100
76
              {0x38,0x54,0x54,0x54,0x18},   // e 0x65 101
77
              {0x08,0x7e,0x09,0x01,0x02},   // f 0x66 102
78
              {0x0c,0x52,0x52,0x52,0x3e},   // g 0x67 103
79
              {0x7f,0x08,0x04,0x04,0x78},   // h 0x68 104
80
              {0x00,0x44,0x7d,0x40,0x00},   // i 0x69 105
81
              {0x20,0x40,0x44,0x3d,0x00},   // j 0x6a 106
82
              {0x00,0x7f,0x10,0x28,0x44},   // k 0x6b 107
83
              {0x00,0x41,0x7f,0x40,0x00},   // l 0x6c 108
84
              {0x7c,0x04,0x18,0x04,0x78},   // m 0x6d 109
85
              {0x7c,0x08,0x04,0x04,0x78},   // n 0x6e 110
86
              {0x38,0x44,0x44,0x44,0x38},   // o 0x6f 111
87
              {0x7c,0x14,0x14,0x14,0x08},   // p 0x70 112
88
              {0x08,0x14,0x14,0x18,0x7c},   // q 0x71 113
89
              {0x7c,0x08,0x04,0x04,0x08},   // r 0x72 114
90
              {0x48,0x54,0x54,0x54,0x20},   // s 0x73 115
91
              {0x04,0x3f,0x44,0x40,0x20},   // t 0x74 116
92
              {0x3c,0x40,0x40,0x20,0x7c},   // u 0x75 117
93
              {0x1c,0x20,0x40,0x20,0x1c},   // v 0x76 118
94
              {0x3c,0x40,0x30,0x40,0x3c},   // w 0x77 119
95
              {0x44,0x28,0x10,0x28,0x44},   // x 0x78 120
96
              {0x0c,0x50,0x50,0x50,0x3c},   // y 0x79 121
97
              {0x44,0x64,0x54,0x4c,0x44},   // z 0x7a 122
98
              {0x00,0x08,0x36,0x41,0x41},   // { 0x7b 123
99
              {0x00,0x00,0x7f,0x00,0x00},   // | 0x7c 124
100
              {0x41,0x41,0x36,0x08,0x00},   // } 0x7d 125
101
              {0x04,0x02,0x04,0x08,0x04},   // ~ 0x7e 126
102
              };
103
104
#endif /* _font5x7_ */

: Bearbeitet durch User
von Georg (Gast)


Lesenswert?

Hallo,

warum änderst du nicht einfach deinen Code von 5x7 auf 6x7?

Georg

von Yves K. (yves_k)


Lesenswert?

Georg schrieb:
> Hallo,
>
> warum änderst du nicht einfach deinen Code von 5x7 auf 6x7?
>
> Georg

Hallo Georg,

Vielen Dank für deine Hilfe!

Manchmal denkt man halt viel zu kompliziert...

Komme gerade aus dem Hobbykeller und siehe da, es funktionierte auf 
Anhieb!

Ich trink heut einen auf dich!

Nochmals danke

Viele Grüße Yves

Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.