PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : font.h und led matrix einbinden



feinhalb
30.09.2013, 10:33
Hallo,
ich habe eine 12x10 LED Matrix. Dort möchte ich erstmal nur einzelne Buchstaben anzeigen lassen (später eine Laufschrift). Allerdings finde ich kaum Erklärungen/Tutorials wie man eine font.h einbindet bzw abruft (im "main") und dann auf der Matrix ausgibt.

Ich habe schon mir Beispielprogramme angeschaut, jedoch erfolglos. (http://www.elo-web.de/elo/mikrocontroller-und-programmierung/ping-pong/laufschrift)
Die .hex Datei kann reingeladen werden und alles klappt. Wenn die Datein ein Atmel Studio 6 geöffnet werden bekomme ich immer die Fehlermeldungen von "prog_uint8_t" und von "SIGNAL (SIG_OVERFLOW0)". Bei dem "Signal" habe ich schon in ISR (TIMER0_OVF_vect) geändert sowie das "prog_" vor uint8 weggelassen. In der font.h Datei habe ich "uint8_t font[128][10] " in "uint8_t font[12][10]" geändert da mir sonst gesagt wird, dass der Atmega mit 150,1% überfüllt wäre. Trozdem ist die Ausgabe sinnlos und nichts zu erkennen außer ein paar frei gelassene LED´s.

Ich wäre dankbar über jeden Beitrag, welcher mir dabei hilft zu verstehen, wie font.h's programmiert werden und unter welchem Muster diese dann vom AVR bzw Atmega ,,verstanden" werden.

danke schonmal ;-)

radbruch
30.09.2013, 12:09
Hallo

"sowie das "prog_" vor uint8 weggelassen" ist schlecht, weil dann die Werte ins RAM geladen werden und nicht in das Flash. Möglicherweise fehlt dir diese Zeile:

#include <avr/pgmspace.h>

In font.h werden die Punktematrixen für die ascii-Zeichen 0 bis 127 definiert. Jede Zeile in der Datei besteht aus 10 Werten die für die 10 Zeilen stehen mit denen ein Zeichen dargestellt wird. Ganz hinten steht jeweils die Hexnummer des Zeichens:

https://www.google.de/search?q=asciitabelle

Hier ein Beispiel mit dem 'R' (das eine eindeutige Orientierung besitzt). Mit etwas Übung kann man Hex auch im Kopf ganz einfach nach Binär umwandeln, den die linke Ziffer steht für hochwertigen vier Bits (die linken 4), die rechte Ziffer für die niederwertigen Bits:


{0x3F,0x66,0x66,0x66,0x3E,0x36,0x66,0x66,0x67,0x00 }, // 0x52

3f 00111111
66 01100110
66 01100110
66 01100110
3e 00111110
36 00110110
66 01100110
66 01100110
67 01100111
00 00000000

Mit etwas Phantasie kann man das R tatsächlich erkennen. :)

Übrigends konnte ich das Beispielprogramm fehlerfrei übersetzen:


http://www.youtube.com/watch?v=MRRoa1hpnMQ
(Aus https://www.roboternetz.de/community/threads/50954-Ping-Pong-umprogrammieren?p=492046&viewfull=1#post492046)

Gruß

mic

feinhalb
30.09.2013, 12:40
Danke für deine Schnelle Antwort.
Wenn ich das Programm welches du verlinkt hast, genauso lade bekomme ich diese Fehler:

26479

der pgm_space ist in der font.h sowie in der.c datei includet.

edit: ich habe jetzt mal avr studio 5.1 installiert, da kann ich genau das gleiche projekt laden und auch ohne probelme übersetzten und auf den atmega8 bringen... irgendwas muss in den versionen anders sein.

feinhalb
11.10.2013, 09:21
Ich habe momentan aber noch folgendes Problem, dass ich nicht ganz das hinbekomme, einfach einen Buchstaben aus der font.h Datei zu lesen, ohne eine Laufschrift zu erzeugen. Gibt es da irgendwelche Tutorials aus einer .h Datei mit einem Pointer Zeichen auszulesen und auf der Matrix dann auzgeben?

lg feinhalb