-
-
Neuer Benutzer
Öfters hier
Ok, ja ich wusste nicht ob mein post übernommen wurde
Lösche die anderen gleich also hier kommt der Code:
#include <avr/io.h> // Headerdatei des Controllers
#include <zeit.h> // Headerdatei für Zeitverzögerungen
#include <adc.h> // Headerdatei des Analog-Digital-Wandlers
#include <myLcd.h> // Headerdatei des LC-Displays
unsigned int t_on; // Variablen für die Dauer des t_on - Anteils
unsigned int t_off = 15; // Variable für die Dauer des t_off - Anteils
unsigned int aktuell;
unsigned int alterwert ;
unsigned int postion_hell;
unsigned int maximum;
unsigned int adcwert; // Variable für den gewandelten Analogwert
#define smin 300 //Impulsdauer min 0,6ms (Endstellung links)
#define smax 1350 //Impulsdauer max 2,5ms (Endstellung rechts)
int main(void)
{
DDRB |= 0b00000010; // Port B Pin 1 als Ausgang festlegen
adc_initialisieren (); // AD-Wandler vorbereiten
lcd_initialisieren ();
t_on = smin; // t_on wird zu smin
while(1)
{
if (t_on < smax) // wenn Maximalwert noch nicht überschritten
{
t_on++; // Timer-Vergleichwert vergrößern
aktuell = adc_lesen(5); // aktuell ist der aktuelle AdcWert
lcd_zahl(1,0,aktuell,5);
alterwert = aktuell;
PORTB |= (1<<PB1);
zeit(t_on);
PORTB &= ~(1<<PB1);
zeit(t_off);
if (aktuell > alterwert) //aktueller Wert größer als Alterwert
{
maximum = aktuell; // Das Maximum ist dann der Aktuelle Wert
postion_hell = t_on; // Hellste Postion ist dann t_on
}
}
if (t_on >= smax) // Wenn T_on größer/gleich smax ist starte
{
while(1)
{
PORTB |= (1<<PB1);
zeit(postion_hell);
PORTB &= ~(1<<PB1);
zeit(t_off);
}
}
}
}
Berechtigungen
- Neue Themen erstellen: Nein
- Themen beantworten: Nein
- Anhänge hochladen: Nein
- Beiträge bearbeiten: Nein
-
Foren-Regeln
Lesezeichen