Hallo, ich bin totaler Anfänger im Programmieren und Schreibe gerade einen kleinen C-Code für eine Fußraumbeleuchtung im LKW und komme einfach nicht weiter..
Meine Plan ist Led's mit einem Pwm Signal an zu steuern, sie sollen wenn das Abblendlicht eingeschaltet ist mit ca 30 % leuchten, sobalt eine Tür geöffnet wird (high signal) sollen die Led's Langsam auf 100% faden und umgekehrt...
Bis jetzt habe ich es geschafft sie auf ca 30% leuchten zu lassen und dass das Signal erkannt wird und die Led auf ca 100% faded, leider bleibt es dann nicht bei den 100% sondern es startet immer wieder neu quasi wie ein Blinklicht.. Huh Huh
Das Ganze soll nachher auf einem Attiny 13a Laufen..
Kann mir jemand weiter Helfen??
Danke...
Code:
#include <avr/io.h>
#define F_CPU 1200000UL // 1,2 MHz
#include <util/delay.h>
int main (void)
{
DDRB =(1<<PB0); // Ausgang PB0
TCCR0A=(1<<COM0A1) | (1<<WGM00) | (1<<WGM01); // PWM Phase Korrigieren, OCR0A an TOP setzen
TCCR0B=_BV(CS01) ; // Prescaler 8
int a=255; // Max Wert für Lichtstärke
int b=10; // Min Wert für Lichtstärke
while (1) {
OCR0A = b; // Startpunkt mit Min Lichtstärke
_delay_ms(500);
a--;
if (PINB & (1<<PB3)) // Prüfe auf High Signal an PB3
{
b++; // Wenn Wahr dann erhöhe in 500 ms auf den Wert "a"
_delay_ms(500);
OCR0A = a;
}
else if (!(PINB & (1<<PB3))) // Prüfe ob PB3 Low wenn Wahr zurück zu "b"
{
return b;
}
}
return 0;
}
Lesezeichen