Hallo, ich bin grade in der Praxisphase und komme nicht weiter mit meinem Projekt. Deswegen brauche ich unbedingt Hilfe. Wie kann ich Zeichen oder ein Wort(zum Beispiel Hallo) in C auf der 32x16 LED_ Matrix(aus China, ist nicht arduino) darstellen? Kann mir jemand mit den unten aufgeführten C- Code mit einem Beispielprogramm dies erläutern? Brauche ich eine Header- Datei, wie sieht Sie aus? Als Prozessor benutze ich den ATMEGA32 auf einer extra Platine und steuer damit das Modul an. Dieser untenaufgeführte Code ist mein Beispielprogramm wie ich ein Pixel durch das ganze Modul als eine Art Lauflicht darstelle. Mein C- Code: #define F_CPU 14745600 #include <avr/io.h> #include <util/delay.h> //#include "thin_ss.h" #define KANAL_A_DDR DDRB #define KANAL_A_PORT PORTB #define KANAL_A_NUMBER PB7 #define KANAL_B_DDR DDRB #define KANAL_B_PORT PORTB #define KANAL_B_NUMBER PB6 #define KANAL_C_DDR DDRB #define KANAL_C_PORT PORTB #define KANAL_C_NUMBER PB5 #define CLK_DDR DDRB #define CLK_PORT PORTB #define CLK_NUMBER PB4 #define LATCH_DDR DDRB #define LATCH_PORT PORTB #define LATCH_NUMBER PB3 #define REDDATA_DDR DDRB #define REDDATA_PORT PORTB #define REDDATA_NUMBER PB2 #define KANAL_D_DDR DDRB #define KANAL_D_PORT PORTB #define KANAL_D_NUMBER PB1 #define OUTPUTENABLE_DDR DDRB #define OUTPUTENABLE_PORT PORTB #define OUTPUTENABLE_NUMBER PB0 int main(void){ // Alle Ports als Ausgänge konfigurieren. KANAL_A_DDR |= (1<<KANAL_A_NUMBER); KANAL_B_DDR |= (1<<KANAL_B_NUMBER); //KANAL_C_DDR |= (1<<KANAL_C_NUMBER); CLK_DDR |= (1<<CLK_NUMBER); LATCH_DDR |= (1<<LATCH_NUMBER); REDDATA_DDR |= (1<<REDDATA_NUMBER); //KANAL_D_DDR |= (1<<KANAL_D_NUMBER); OUTPUTENABLE_DDR |= (1<<OUTPUTENABLE_NUMBER); // OE auf 1 setzen. Ansonsten leuchtet gar keine LED auf der Matrix OUTPUTENABLE_PORT |= (1<<OUTPUTENABLE_NUMBER); // Ausgangswerte auf 0 initialisieren KANAL_A_PORT |= (1<<KANAL_A_NUMBER); KANAL_B_PORT |= (1<<KANAL_B_NUMBER); CLK_PORT &= ~(1<<CLK_NUMBER); REDDATA_PORT &= ~(1<<REDDATA_NUMBER); LATCH_PORT &= ~(1<< LATCH_NUMBER); _delay_ms(10); // Den Wert des ersten Pixels reinschieben. REDDATA_PORT |= (1<<REDDATA_NUMBER); _delay_ms(10); // Taktflanke(CLK) erzeugen, damit der erste Pixel in das Schieberegister uebernommen wird. // Alle Pixelwerte in den Schieberegistern rutschen dann nach rechts. // Latchflanke(LATCH) erzeugen, damit alle Pixel von den Schieberegistern in die Anzeige uebernommen(kopiert) werden. //Taktflanke erzeugen CLK_PORT |= (1<<CLK_NUMBER); _delay_ms(10); //fallende Flanke CLK_PORT &= ~(1<<CLK_NUMBER); _delay_ms(10); // Ausgangsposition alle drei Speicher werden auf 0 gesetzt REDDATA_PORT &= ~(1<<REDDATA_NUMBER); _delay_ms(10); // Latchflanke wird erzeugt, die gespeicherten Daten in REDDATA werden in das Schieberegister ubernommen(kopiert). LATCH_PORT |= (1<< LATCH_NUMBER); _delay_ms(10); while(1){ CLK_PORT &= ~(1<< CLK_NUMBER); _delay_ms(10); REDDATA_PORT &= ~(1<< REDDATA_NUMBER); _delay_ms(10); LATCH_PORT &= ~(1<< LATCH_NUMBER); _delay_ms(10); REDDATA_PORT |= (1<<REDDATA_NUMBER); _delay_ms(10); CLK_PORT |= (1<<CLK_NUMBER); _delay_ms(10); CLK_PORT &= ~(1<<CLK_NUMBER); _delay_ms(10); REDDATA_PORT &= ~(1<< REDDATA_NUMBER); _delay_ms(10); LATCH_PORT |= (1<<LATCH_NUMBER); _delay_ms(10); } }
Besorg dir nen Zeichensatz und schalt eben die Pixel ein welche der Zeichensatz vorgibt.
Hier gibt es ein Beispiel, wie man Text in eine Matrix schreibt, inc. Scrolling. Beitrag "Re: ATMEGA8(Pong) - Grundsatzfrage bzgl. Überschreiben des alten Zustands der LED"
Ohne das Display zu kennen, sind das alles nur unverständliche IO-Zugriffe in Deinem Code. Ja, man darf hier Links zu Datenblättern und Schaltpläne posten. Schau Dir beliebige Beispielroutinen für GLCDs an.
Philipp K. schrieb: > Wie kann ich Zeichen oder ein > Wort(zum Beispiel Hallo) in C auf der 32x16 LED_ Matrix(aus China, ist > nicht arduino) darstellen? In der Praxis nimmt man häufig ein 2D Feld (Canvas), in das man "malt" (auch die Buchstaben). Im nächsten Schritt werden die Daten aus dem Feld in einem Rutsch an die Dot Matrix übertragen. Um Buchstaben zu "malen" benötigt man einen Font. Viele der Fonts die mit Linux kommen sind frei. Wenn sie im BDF Format vorliegen, sind sie auch recht einfach einzulesen. Hier zwei Projekte mit Fonts, wo du dich weiter durchklicken kannst: https://github.com/hzeller/rpi-rgb-led-matrix/tree/master/fonts https://github.com/ma16/rpio/tree/release.2/script/Max7219 (oder irgend ein anderes der vielen Projekte die man Online findet)
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
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.