Gast
#4783838
Hallo, ich bin grade in der Praxisphase und komme immernoch nicht weiter mit meinem Projekt. Deswegen brauche ich unbedingt Hilfe. ) Programmiere grad in C mit der 32x16 LED_ Matrix(aus China, ist nicht arduino) 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. Schaffe es derzeit mit dem Code nur so wie auf dem Bild die dargestellten Zahlen sind zu durchlaufen, so funktioniert auch die Matrix und so ist Sie aufgebaut. Wie kann ich nun den Pixel erst komplett durch die Reihen schieben?? Also(Die Zahlen 0 bis 7, dann 32 bis 39, dann 64 bis 71, dann 96 bis 103) und dann so weiter??? Iwie mit Schleifen oder evtl Funktionen? #define F_CPU 14745600 //Quarz mit 14.745 MHz #include <avr/io.h> #include <inttypes.h> #include <util/delay.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){ //PORTB = Ausgang DDRB = 0xff; // Ausgangswerte auf 0 initialisieren, Reihe 1, 5, 9, 13 PORTB = 0xE7; _delay_ms(10); // Den Wert des ersten Pixels reinschieben. PORTB |= (1<<PB2); _delay_ms(10); //Taktflanke erzeugen PORTB |= (1<<PB4); _delay_ms(10); //fallende Flanke PORTB &= ~(1<<PB4); _delay_ms(10); // Ausgangsposition alle drei Speicher werden auf 0 gesetzt PORTB &= ~(1<<PB2); _delay_ms(10); // Latchflanke wird erzeugt PORTB |= (1<<PB3); _delay_ms(10); while(1){ PORTB &= ~(1<<PB4); _delay_ms(10); PORTB &= ~(1<<PB2); _delay_ms(10); PORTB &= ~(1<<PB3); _delay_ms(10); PORTB |= (1<<PB2); _delay_ms(10); PORTB |= (1<<PB4); _delay_ms(10); PORTB &= ~(1<<PB4); _delay_ms(10); PORTB &= ~(1<<PB2); _delay_ms(10); PORTB |= (1<<PB3); _delay_ms(10); } }
