Show Posts
Pages: 1 ... 73 74 [75] 76 77 ... 94
1111  International / Deutsch / Re: Programierung für RBG Led´s on: April 09, 2012, 11:34:54 am
Das "intensitaet" ist eine Variable, die den aktuellen Helligkeitswert (PWM-Wert für den PWM-Ausgang) mit dem Du die entsprechende Farbe dimmst, speichert.
1112  International / Deutsch / Re: Projektvorstellung Holzvergaser on: April 09, 2012, 10:01:25 am
Dann würde ich das Ethernet-Shield empfehlen, da hat auch gleich den SD-Slot eingebaut.
1113  International / Deutsch / Re: array verbesserung on: April 09, 2012, 09:59:48 am
row ist eine Variable die ich in der Schleife definiert habe, um die einzelnen "Zeilen" des Arrays zu zählen. Das Array kannst Du im Prinzip wie eine Tabelle betrachten. Der erste Wert steht für die Zeile und der zweite Wert für die Spalte. Arrays können auch mehr als 2 Dimensionen haben, wenn es notwendig ist. z.b. für Koordinaten mit x,y und z Wert.
1114  International / Deutsch / Re: array verbesserung on: April 09, 2012, 09:16:47 am
Wie wäre es mit einem mehrdimensionalen Array?
Code:
const int values[5][24] = {   { 4095, 4095, 4095, 4095, 4095, 4095, 4095, 4095, 3500, 1500,    0,    0,    0,    0,    0,    0,    0,    0,    0, 1500, 3500, 4095,    0,    0} ,
                                    { 4095, 4095, 4095, 4095, 4095, 4095, 4095, 4095, 3500, 1500,    0,    0,    0,    0,    0,    0,    0,    0,    0, 1500, 3500, 4095,    0,    0} ,
                                    { 4095, 4095, 4095, 4095, 4095, 4095, 4095, 4095, 3500, 1500,    0,    0,    0,    0,    0,    0,    0,    0,    0, 1500, 3500, 4095,    0,    0} ,
                                    { 4095, 4095, 4095, 4095, 4095, 4095, 4095, 4095, 3500, 1500,    0,    0,    0,    0,    0,    0,    0,    0,    0, 1500, 3500, 4095,    0,    0} ,
                                    { 4095, 4095, 4095, 4095, 4095, 4095, 4095, 4095, 3500, 1500,    0,    0,    0,    0,    0,    0,    0,    0,    0, 1500, 3500, 4095,    0,    0} };

Der Zugriff erfolgt dann z.b. über values[1][12]

Code:
void fadeLight() {
    if (hour<23) {
      for(row=0;row<5;row++)
          i[row] =values[row][hour] + ((3600000 - (3600000 - ((mins * 60000) + (sec * 1000)))) / (3600000 / (Blau1[hour+1] - Blau1[hour])));
1115  International / Deutsch / Re: Programierung für RBG Led´s on: April 09, 2012, 04:42:26 am
Poste doch mal den Code, den Du schon hast. Dann schauen wir was fehlt und wie Du Dein Problem lösen kannst. Bite verwende beim Code posten die "#" Tags oben in der Editorleiste. Das macht das Lesen für alle einfacher.
Mario.
1116  International / Deutsch / Re: Linux auf ATMega 1284p laufen lassen on: April 08, 2012, 11:43:28 am
Eben genau das meinte ich damit. "Lösung" sollte in diesem Zusammenhang auf die Lösung des Problems "Kann da Linux drauf laufen?" bezogen sein.
Mario.
1117  International / Deutsch / Re: Interrupt Service Routine: Verzögerungen und Entprellung? on: April 08, 2012, 09:13:19 am
Innerhalb einer ISR sollte immer so wenig Code wie möglich ausgeführt werden. Da Du ja innerhalb der ISR Interrupts verhinderst, werden auch alle anderen Intteruptgetriebenen Dinge (z.B. Serielle Kommunikation, Timer etc.) auch nicht ausgeführt. Es reicht doch, innerhalb der ISR ein Flag zu setzen, das dann in der "normalen" Loop ausgewertet wird.
Auf was reagiert denn Deine ISR? genereller Flankenwechsel, oder wechsel von HIGH auf LOW, bzw. umgekehrt? Das würde sicher das doppelte Ausführen erklären.
Mario.
1118  International / Deutsch / Re: Linux auf ATMega 1284p laufen lassen on: April 08, 2012, 07:46:23 am
Ok. Dann Hut ab! :-)
Aber wenn das Dingens mehrere Stunden zum booten braucht, hat diese Lösung eher esotherischen Character.
1119  International / Deutsch / Re: String in Char ohne Bufferoverflow on: April 08, 2012, 07:45:28 am
Für diesen Fall mag das richtig sein. Allerdings gibt es keine Angaben zu den Längen der Strings, daher sollte man gut überlegen wieviel "wertvollen" RAM man fix an ein Array bindet. Zum anderen wollte ich nur eine alternative Lösungsmöglichkeit aufzeigen, die sicher in andreren Situationen hilfreich sein kann. Wir sind ja schliesslich alle daran interessiert zu lernen.
Mario.
1120  International / Deutsch / Re: Projektvorstellung Holzvergaser on: April 08, 2012, 06:21:05 am
Für ein
Code:
if(tempSpeicher_oben == tempSpeicher_unten)
geht auch ein
Code:
if (abs(tempSpeicher_oben - tempSpeicher_unten) <= 0.5)
Wobei die "0.5" nur ein Beispiel ist. Hier legst Du quasi die "Genauigkeit" der Vergleichs fest. Also wie weit dürfen beide Werte voneinander abweichen, um als "Gleich" betrachtet zu werden.
Das hat zusätzlich den Vorteil, das Du hier auch die zwangsläufig vorhandenen Messfehler mit ausgleichst. Denn selbst wenn beide "realen" Temperaturen gleich sind, müssen nicht beide Sensoren einen identischen Messwert liefern.
Mario.
1121  International / Deutsch / Re: String in Char ohne Bufferoverflow on: April 08, 2012, 06:10:44 am
void* malloc(int size) und free(void*) sind in diesem Fall Dein Freund. Damit reservierst Du dynamisch Speicher und gibst ihn wieder frei.
Soweit ich weiss, klappt das auch bei der avr-libc.
Mario.
1122  International / Deutsch / Re: Licht auf bestimmte Musik !!! on: April 08, 2012, 01:42:46 am
Dann hast Du ein grundsätzliches Problem. Tritt das nur auf, wenn Du mehr als 7 LEDs betreibst, oder ist es egal wieviele LEDs angesteuert werden.
Um dem Problem auf die Schliche zu kommen, würde ich schrittweise vorgehen.
Also erstmal nur eine einzige LED ansteuern mit einer bestimmten Blinksequenz, die Du auch prüfen kannst. (z.b. 1 sekunde an, 1 sekunde aus, 0,5 sekunden an, 0.5 sekunden aus -> langes blinken, kurzes blinken)
Dann siehst Du, das die Sequenz korrekt übertragen wird. Das Ganze dann mit unterschiedlichen LEDs und Channel probieren. Wenn das einzeln auf allen Channels klappt, dann mit 2 LEDs weitermachen.
1123  International / Deutsch / Re: Licht auf bestimmte Musik !!! on: April 07, 2012, 06:45:25 am
Quote
MIt " for (int i=0; i<9; i++) {" liest Du aber 9 Byte ein nicht 8 und hast einen Array-Überlauf.
Gut aufgepasst Uwe :-)
Der Punkt im neuen Code war mir gar nicht aufgefallen, da er ja vorher schon richtig war und erst im neuen Code falsch. :-)
Anstatt ein Byte zuwenig zu lesen, wird nun ein Byte zuviel gelesen, das dann noch nicht mal verwendet wird.
Zumindest sollte sich aber die Blinksequenz geändert haben. ;-)

Achso, das wäre im übrigen eine "einfache" Methode zum debuggen. Erzeuge eine Sequenz in Vixen die immer nur eine LED eine Sekunde schaltet. Die Sequenz sollte bei der ersten LED starten und bis zur letzten durchlaufen. Anhand der "fehlenden" LEDs die nicht leuchten, kann man dann zumindest vermuten wo ein Fehler sein könnte. Nicht schön, aber besser als nix.
1124  International / Deutsch / Re: Licht auf bestimmte Musik !!! on: April 07, 2012, 06:23:53 am
Es wäre aber z.B. gut zu wissen, das Du das bereits probiert hast. Wie sollen wir Dir effektiv helfen, wenn wir raten müssen.
Wenn Du den Code schon bereinigt hast, würde ich eher auf ein Problem bei der übermittelten Sequenz vermuten. Da ich das Protokoll nicht kenne, kann ich dazu aber nicht viel schreiben.
Leider ist das debugging hier ein wenig schwierig, da die serielle Verbindung die man normalerweise für Ausgaben verwendet, bereits blockiert ist. Schau Dir daher evtl. nochmal genau die definierten Channels und Sequenzen im Vixen an, vielleicht steckt da ja ein kleiner Fehler drin. (Channel vertauscht o.ä.)
Der Code sieht aus meiner Sicht zumindest erstmal sauber aus.
1125  International / Deutsch / Re: Linux auf ATMega 1284p laufen lassen on: April 07, 2012, 06:10:13 am
Ich halte das eher für einen Aprilscherz. Wenn auch ein gut gemachter. Sollte das tatsächlich echt sein, dann Hut ab. :-)
Pages: 1 ... 73 74 [75] 76 77 ... 94