C LED Faden (Hoch/Runter)

Janiiix3

Aktives Mitglied
28. Sep. 2013
1.333
10
38
Hannover
Sprachen
  1. ANSI C
  2. C#
Hallo nochmals :p

Ich hätte da noch eine Frage...
Undzwar möchte ich meine LED "hoch / runter" Faden!
Sprich... Hat meine Variable "counter" den Wert "254" erreicht so möchte ich das die LED wieder langsam runter gefadet wird.
Habe mir dazu auch schon so eine Art Status Variable angelegt (PWMStatus) nur weiß ich jetzt nicht so wirklich wie ich das umsetzen soll.. mir fehlt der Anfang...

if (counter == 254)

[
PWMStatus = 1;
}
....


hier ist mein Code der imoment meine LED nur hoch fadet...

Code:
    ISR(TIMER1_OVF_vect) 
	
{	
	TCNT1 = 65000;
	static uint8_t counter = 0;	

	counter++;



		if (counter >= 255) 
		{
			counter = 0;
			PWM0 = PWM0 + 2;
		
			
		if (PWM0 > 0) 
		{ 
			PORTD &= ~(1<<PD7);
		}	 

			
		}// Ende Master if
		
else
			
	{
			
		if (counter == PWM0)
		{
			PORTD |= (1<<PD7);
		}
			

			
			
			
	}// Ende Vergleich (Else)

}// Ende ISR
 
Dort wo Du PWM0 generell um 2 inkrementierst (Überlauf des Counters) könntest Du es auch in Abhängigkeit Deiner Statusvariable inkrementieren ODER dekrementieren. Du könntest dort sogar die Statusvar toggeln...

Hast Du das mit dem PWM jetzt generell erstmal verstanden, sich der andere Topic erübrigt, oder hast Du das hier nur irgendwo zusammenkopiert?

Wahh...
Sprich... Hat meine Variable "counter" den Wert "254" erreicht so möchte ich das die LED wieder langsam runter gefadet wird.
eher letzteres, oder?

Wenn Counter von 0 bis 255 inkrementiert wird (also 255 IRQs=Timerüberläufe), wurde der Pin genau einmal (nämlich bei Counter==PWM0) gesetzt. Bei 255 erzeugst Du einen Überlauf des Counters auf 0, und löschst den Pin.
Du veränderst den DutyCycle also bei jedem Counter-Überlauf - jeder Durchlauf hat'ne andere Pulsweite.
"langsames" faden?
 
Dort wo Du PWM0 generell um 2 inkrementierst (Überlauf des Counters) könntest Du es auch in Abhängigkeit Deiner Statusvariable inkrementieren ODER dekrementieren. Du könntest dort sogar die Statusvar toggeln...

Hast Du das mit dem PWM jetzt generell erstmal verstanden, sich der andere Topic erübrigt, oder hast Du das hier nur irgendwo zusammenkopiert?

Wahh...

eher letzteres, oder?

Wenn Counter von 0 bis 255 inkrementiert wird (also 255 IRQs=Timerüberläufe), wurde der Pin genau einmal (nämlich bei Counter==PWM0) gesetzt. Bei 255 erzeugst Du einen Überlauf des Counters auf 0, und löschst den Pin.
Du veränderst den DutyCycle also bei jedem Counter-Überlauf - jeder Durchlauf hat'ne andere Pulsweite.
"langsames" faden?


Könntest du mir mal ein bsp. nennen ?! Also nen kleinen beispiel Code ?! Das ist ja gerade mein Problem... ich weiß nicht recht wie ich anfangen soll das zu schreiben...
 

Über uns

  • Makerconnect ist ein Forum, welches wir ausschließlich für einen Gedankenaustausch und als Diskussionsplattform für Interessierte bereitstellen, welche sich privat, durch das Studium oder beruflich mit Mikrocontroller- und Kleinstrechnersystemen beschäftigen wollen oder müssen ;-)
  • Dirk
  • Du bist noch kein Mitglied in unserer freundlichen Community? Werde Teil von uns und registriere dich in unserem Forum.
  •  Registriere dich

User Menu

 Kaffeezeit

  • Wir arbeiten hart daran sicherzustellen, dass unser Forum permanent online und schnell erreichbar ist, unsere Forensoftware auf dem aktuellsten Stand ist und der Server regelmäßig gewartet wird. Auch die Themen Datensicherheit und Datenschutz sind uns wichtig und hier sind wir auch ständig aktiv. Alles in allem, sorgen wir uns darum, dass alles Drumherum stimmt :-)

    Dir gefällt das Forum und unsere Arbeit und du möchtest uns unterstützen? Unterstütze uns durch deine Premium-Mitgliedschaft!
    Wir freuen uns auch über eine Spende für unsere Kaffeekasse :-)
    Vielen Dank! :ciao:


     Spende uns! (Paypal)