dimmen eines LED Cubes

Gast #5728690
Lesenswert?

Hallo zusammen ich bin gerade dabei meinen RGB-LED Cube zu 
programmieren.
jetzt wollte ich die Funktion programmieren dass er langsam heller wird 
und danach langsam dunkler.
nun ist meine Idee gewesen.
int i;
int Zeit = 0;
for(i=0; i<10;i++)
{Zeit = Zeit +1
   for(i=0;i<50;i++)
         {PORTB=0xFF
          _delay_ms(Zeit)
          PORTB=0x00
          _delay_ms(10)
         }
 }

aber dieses Funktioniert nicht kann es sein dass ich die _delay_(Zeit) 
nicht abhängig machen kann ??
muss diese immer eine Konstante Zahl sein ??


für Lösungsvorschläge wäre ich sehr sehr dankbar
Gast #5728732
Lesenswert?

Die Grundidee wäre in deinem Fall, dass du einen Wert nimmst und diesen 
auf 0 setzt.

In einer for-Schleife erhöhst du dann den Wert zb um +5.
Wenn du die Höchstzahl erreicht hast, muss du wieder herunterzählen.

Um eine LED zu dimmen brauchst du übrigens auch eine PWM. Am Besten du 
wählst den variablen Wert auch in der gleichen Range der Periode deines 
Timercounters für das PWM Signal, um die Rechnung einfach zu halten.
Persönliche Seite #5729252
Lesenswert?

Meines wissens nach (ist schon ne weile her das ich das nachgeschaut 
hab) funktioniert die delay_(us/ms) auf dem AVR nur mit konstanten 
Werten.

Ich empfehle dir, dir die Zeit zu nehmen und dich in PWM oder die Timer 
einzulesen und diese Optimaler weise über Interrupte auszuwerten.

Hierzu gibt es auch auf dieser Seite entsprechende Tutorials:

https://www.mikrocontroller.net/articles/AVR-GCC-Tutorial/Die_Timer_und_Z%C3%A4hler_des_AVR

https://www.mikrocontroller.net/articles/AVR_PWM
https://www.mikrocontroller.net/articles/AVR-Tutorial:_PWM


viel Erfolg :)
Gast #5729354
Lesenswert?

Mustafa Meyer schrieb:
> Delay(Variable) funktioniert nur bei höheren Sprachen wie Arduino.
Interessante Sicht..
Aber leider knapp daneben.

Arduino ist keine Sprache.
Es nutzt C++.
Und C++ kennt erst mal auch kein Delay(Variable).

Es ist also eher keine Spracheigenschaft, sondern ein Feature der 
Umgebung.

Punktum:
Wenn man ein flexibles delay() braucht, dann baut man sich eins.

Und wenn das zu Problemen führt, dann sind die eigentlichen 
Schwierigkeiten ganz woanders

Antwort schreiben

Bitte melde dich an, um einen Beitrag zu schreiben.

oder

Mit Google-Account einloggen

Die Registrierung ist kostenlos und dauert nur eine Minute.

Jetzt registrieren