Forum: Mikrocontroller und Digitale Elektronik Mehrere Arrays zusammenfügen AVR GCC


von Phil Malessa (Gast)


Angehängte Dateien:

Lesenswert?

Hey,

ich hoffe ihr könnt mir helfen.
ich bastel derzeit eine Art SpokePOV mit RGB-LEDs. Gefunden habe ich 
dies bei instructables.com als "RGBike Open Project".

Jetzt bin ich dabei, den Code so umzuschreiben, dass dieser Buchstaben 
darstellen kann, bzw. dass der µC eine Alphabet-Library besitzt, aus der 
er selber wählen kann.

Es sind insgesamt 16 LEDs, die angesteuert werden, ich möchte daraus 
aber 2 Zeilen zu je 8 LEDs für die Buchstaben basteln.
Nun sind die Arrays, in denen die "Bilddaten" gespeichert sind so 
aufgebaut, dass man alle 16 LEDs hintereinander ansteuern muss.

Lange Rede, kurzer Sinn, ich möchte 2 8-LEDs Arrays so zusammenfügen, 
dass diese ein 16-LED-Array bilden. Somit wird jeder Zeile des einen 
Arrays die Daten des anderen Arrays angefügt...
Ich hoffe ihr versteht, was ich meine...

Ich habe 2 Screenshots beigefügt. der 1. zeigt, wie die Arrays später an 
die Funktion übergeben werden muss, als 16-LED-Array in einer Reihe.
Der 2. zeigt, wie die Arrays in der Library aussehen, nämlich als 
8-LED-Arrays.

Vielen Dank für eure Hilfe!

L.G. Phil Malessa

von Erich (Gast)


Lesenswert?

Was war noch mal die Frage ?

von Phil Malessa (Gast)


Lesenswert?

Hey Erich!
Danke für deine Antwort! :-)

Phil Malessa schrieb:
> Lange Rede, kurzer Sinn, ich möchte 2 8-LEDs Arrays so zusammenfügen,
>
> dass diese ein 16-LED-Array bilden. Somit wird jeder Zeile des einen
>
> Arrays die Daten des anderen Arrays angefügt...
>
> Ich hoffe ihr versteht, was ich meine...

es sollen 2 [8][12] Arrays zu einem [8][24]Array zusammengefügt 
werden... und das am besten direkt im Programm.

von Phil Malessa (Gast)


Lesenswert?

1
/**************************************************
2
* Send GS data
3
* ---------------------
4
* Should receive a 24 byte array adress in program
5
* memory, to send 192 bits
6
***************************************************/
7
void TLC_Send_GS(uint8_t *data) {
8
  uint8_t i;
9
  for(i=0; i<24; i++){
10
    SPDR = pgm_read_byte(data);  //start sending
11
    while (!(SPSR & (1<<SPIF))); //wait until not sent  
12
    data++;
13
  }
14
}
Dieser Funktion muss ein 24 Byte Array übergeben werden, und dieses soll 
erst aus 2 12 Byte Arrays zusammengefügt werden. (2 Buchstaben)
Kann man die einfach mit +-Operator "addieren", oder wie macht man das?
Kann es nämlich derzeit nicht durch Try and Fail ausprobieren, deshalb 
wende ich mich an euch!

L.G. Phil

von Ingo (Gast)


Lesenswert?

Dann übergib doch einfach zwei Pointer, erst ratterst du das eine Array 
durch, anschließend das Andere. Du brauchst doch das zeuch nicht 
zusammenfügen, du kannst die doch dann direkt hintereinander ausgeben!?


Ingo

von Ingo (Gast)


Lesenswert?

Phil Malessa schrieb:
> //wait until not sent

Eh, sollte es nicht besser heißen: "Wait until send" ? Nur mal so am 
Rande...

von Phil Malessa (Gast)


Lesenswert?

Hey Ingo,
Danke für deine Atnwort!
Es ist mal wieder ein Beweis dafür, dass man selbst die einfachsten 
Sachen manchmal nicht selber lösen kann!!
Vielen Dank!

PS: Der Code ist nicht von mir, ich schreibe ihn nur um. Deshalb hab ich 
die Comments nicht auf Rechtschreibfehler überprüft xD

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.