- 3D-Druck Einstieg und Tipps         
Ergebnis 1 bis 2 von 2

Thema: Odometrie - Anfängerproblem

  1. #1
    Neuer Benutzer Öfters hier
    Registriert seit
    18.03.2006
    Beiträge
    24

    Odometrie - Anfängerproblem

    Anzeige

    Praxistest und DIY Projekte
    Hi,

    tausend Dank für eure Hilfe bei meinem letzen Problem . Hab jetzt aber schon wieder ein neues. Wollte mal ein kleines Programm schreiben was einfach die FrontLED einschaltet wenn ein Odometriesensor hell bzw. Dunkel wird. Also das man an dem Rad dreht und die FrontLED geht an und aus. Hab jetzt schon stundenlang damit rumgemacht und bekomms einfach nicht hin
    Vielleicht weiß ja jemand von euch Rat...

    Code:
    #include <avr/io.h>
    #include <avr/interrupt.h>
    
    volatile uint16_t speicher = 0x0000;
    	
    void init(void) {
    	DDRD |= (1<<DD7);						//PD7 wird Ausgang
    	DDRD |= (1<<DD6);						//PD6 wird Ausgang
    	PORTD |= (1<<PD7);						//PD7 wird 1 gesetzt -> Odometrie LEDs an
    	
    	ADMUX |= (1<<0) | (1<<REFS0);			//ADC0 als eingang, Kondensator an AREF benutzen
    	//ADMUX |= (1<<ADLAR);
    	ADCSRA |= (1<<ADEN);					//ADC enablen
    	ADCSRA |= (1<<2) | (1<<1) | (1<<0);	//Presacler auf 128 einstellen
    }
    
    
    int main(void) {
    		
    	init();
    	while(1){ 
    		ADCSRA |= (1<<ADSC);				//Messung starten
    		while (! (ADCSRA & (1<<ADIF)))	//Warten bis Messung fertig ist
    		speicher = ADCL + (ADCH<<8);		//Messwert in Speicher schreiben
    		
    		if (speicher < 600) {
    			PORTD |= (1<<PD6);				//PD6 auf 1 setzen -> FrontLED an
    			ADCSRA |= (1 << ADIF);
    		}
    		else {
    			PORTD &= ~(1<<PD6);			//PD6 auf 0 setzen -> FrontLED aus
    			ADCSRA |= (1 << ADIF);
    		}
    		
    		speicher = 0x0000;					//Speicher löschen
    	}
    return 0;
    }
    lg Katja

  2. #2

    Re: Odometrie - Anfängerproblem

    Zitat Zitat von Katja
    while (! (ADCSRA & (1<<ADIF))) //Warten bis Messung fertig ist
    speicher = ADCL + (ADCH<<; //Messwert in Speicher
    Probier doch mal
    Code:
    while ( (ADCSRA & (1<<ADSC)));	//Warten bis Messung fertig ist
    - Semikoleon am Ende nicht übersehen.
    - ADIF ist jetzt ADSC
    - ! am Anfang rausgenommen

Berechtigungen

  • Neue Themen erstellen: Nein
  • Themen beantworten: Nein
  • Anhänge hochladen: Nein
  • Beiträge bearbeiten: Nein
  •  

Solar Speicher und Akkus Tests