AndiIsl
October 27, 2015, 10:43am
1
hey Leute ich hab ein kleines Problem.
Leider komm ich einfach nicht drauf wie ich den Code verändern muss das es nur bis 255 zählt und dort dann bleibt.
Ich möchte eine LED beim start von 0 auf 255 faden und sobald das commando kommt wieder von 255 auf 0.
hab da ein sketch im internet gefunden wo mir das faden sehr gut gefällt, nur zählt der kontinuierlich von 0 - 255 und 255 - 0.
kann mir wer helfen?
value = 128+127*cos(2*PI/periode*time1);
ardubu
October 27, 2015, 11:00am
2
evtl. so:
const int led_pin =3;
byte fadeValue;
int commando;
void setup() {
// put your setup code here, to run once:
}
void loop() {
fade_up();
if(commando){fade_down();}
}
void fade_up()
{
if (fadeValue <255) fadeValue ++;
else fadeValue=255;
analogWrite(led_pin, fadeValue);
}
void fade_down()
{
if ( fadeValue >0)fadeValue --;
else fadeValue=0;
analogWrite(led_pin, fadeValue);
}
Vergess die Funktion gleich wieder. Für einen Fade von einer LED braucht das viel zu viel Rechenleistung auf einem AVR.
https://www.mikrocontroller.net/articles/LED-Fading
Arbeite mit Lookup-Tabellen.
AndiIsl
October 27, 2015, 11:20am
4
danke schonmal für die Hilfe!
ardubu leider funktioniert das nicht. und linear gefällt es mir nicht
sschultewolter: Leistung auf dem Arduino brauch ich nicht für mein Projekt. es soll einfach schick aussehen wie es mit dem code von mir oben ist. nur leider nicht fade in und out sondern nur in oder out.
AndiIsl
October 27, 2015, 11:57am
5
danke habs!
float value ;
int led=3;
long time1=0;
int periode=2000;
int displace=0;
void setup()
{
Serial.begin(9600);
delay(4000);
}
void loop()
{
static boolean fadein = 0;
if (!fadein)
{
time1 = millis();
value = 127.5+127.5*cos(2*PI/periode*(displace-time1));
Serial.println(value);
analogWrite(led, 255-value);
fadein = (value <= 1);
}
}