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

Thema: Probleme bei Programmierung der Snake Vision für ASURO

Hybrid-Darstellung

Vorheriger Beitrag Vorheriger Beitrag   Nächster Beitrag Nächster Beitrag
  1. #1
    Neuer Benutzer Öfters hier
    Registriert seit
    10.05.2011
    Beiträge
    7
    @SprinterSB

    Leider hat sich weder mit ADC noch mit ADCW etwas verändert. Außerdem bin ich mir recht sicher, dass das Einlesen der Messwerte funktioniert, da ich diesen Teil des Programms aus dem Standartprogramm aus "Mehr Spaß mit ASURO 2" übernommen habe.

    Hier mal das Standartprogramm:
    Code:
    #include "asuro.h"
    
    // Schwellen für die intensitätsabhängige Geschwindigkeit
    
    #define THRESH1 20
    #define THRESH2 80
    #define THRESH3 200
    
    
    void ThermalData(unsigned int *data)
    {
    	// ThermalData() funktioniert genauso, wie LineData(), ...
    	// ... nur dass dabei die interne Spannungsreferenz als ...
    	// ... AD-Wandlerreferenz verwendet wird.
    	
    	// Prozessorinterne Referenz verwenden
    	// Multiplexer auf linken Sensor schalten
    	ADMUX = (1 << REFS0) | (1 << REFS1) | IR_LEFT;	
    	// Wandlung starten
    	ADCSRA |= (1 << ADSC);
    	// Warten, bis Wandlung beendet			        
    	while (!(ADCSRA & (1 << ADIF)));	                
    	// ADCIF zurücksetzen
    	ADCSRA |= (1 << ADIF);			        
    	// ADC-Wert auslesen
    	data[0] = ADCL + (ADCH << 8);
    
    	// Prozessorinterne Referenz verwenden
    	// Multiplexer auf rechten Sensor schalten
    	ADMUX = (1 << REFS0) | (1 << REFS1) | IR_RIGHT;
    	// Wandlung starten
    	ADCSRA |= (1 << ADSC);
    	// Warten, bis Wandlung beendet		
    	while (!(ADCSRA & (1 << ADIF)));	
    	// ADCIF zurücksetzen
    	ADCSRA |= (1 << ADIF);
    	// ADC-Wert auslesen
    	data[1] = ADCL + (ADCH << 8);
    }
    
    
    int main(void)
    {
    	// Speicher für die Messwerte bereitstellen
        	unsigned int tdata[2];
    	unsigned int speed;
    	signed int diff,sum;
        	Init();
    	// Motoren immer auf vorwärts
    	MotorDir(FWD,FWD);
    	while(1)
        	{
    		// Messwerte einlesen
            	ThermalData(tdata);
    		// Die Summe der Werte wird für die Berechnung der ...
    		// ... Geschwindigkeit genutzt
    		sum=tdata[0]+tdata[1];
     		// Signal stark genug?
    		if (sum>THRESH1) {
    			StatusLED(GREEN);
    			speed=140;
    			// Ziemlich stark?
    			if (sum>THRESH2) {
    				StatusLED(YELLOW); 
    				speed=200;
    			}
    			// Sehr stark?
    			if (sum>THRESH3) {
    				StatusLED(RED); 
    				speed=255;
    			}
    			// Richtung bestimmen
    			diff=((signed)tdata[0]-(signed)tdata[1])*32/sum;
    			if (diff>4) {
    				// Links deutlich wärmer? Nach links fahren!
    				BackLED(ON,OFF); 
    				MotorSpeed(0,speed);
    			}
    			else if (diff<-4) {
    				// Rechts deutlich wärmer? Nach rechts fahren!
    				BackLED(OFF,ON); 
    				MotorSpeed(speed, 0);
    			}
    			else {
    				// Sonst geradeaus!
    				BackLED(OFF,OFF); 
    				MotorSpeed(speed, speed);
    			}
    		}
    		else {
    			// Keine Wärmequelle in Sicht? Stehen bleiben!
    			StatusLED(OFF);
    			BackLED(OFF,OFF);
    			MotorSpeed(0,0);
    
    		}
        	}     
    	return 0;
    }
    ich glaube nun ist auch zu erkennen, dass ich dieses Programm einfach modifizieren wollte...
    Mein Grundgedanke ist, dass ich if(sum>THRESH1) einfach durch if(PollSwitch()==0) ersetze, so dass ASURO anhält sobald ein Taster gedrückt wird.
    Doch nicht mal so was funktioniert -.-

  2. #2
    Neuer Benutzer Öfters hier
    Registriert seit
    10.05.2011
    Beiträge
    7
    @KR-500

    Dein Programm hört sich sehr gut an. Allerdings glaub ich, dass so etwas für mein Verständnis um einiges zu hoch ist. Außerdem bekomm ich viele Promblemmeldungen bei deinem Programm ,da Befehle wie adc1 oder pir nicht definiert sind.

    Ich vermute, dass mein Problem in der while-Schleife sitzt.

Ähnliche Themen

  1. Projekt: RP6 mit Snake Vision
    Von Thund3r im Forum Robby RP6
    Antworten: 10
    Letzter Beitrag: 21.09.2011, 19:58
  2. Snake Vision
    Von Mangoon im Forum C - Programmierung (GCC u.a.)
    Antworten: 7
    Letzter Beitrag: 12.05.2010, 17:51
  3. Taster auf ASURO Snake Vision-Platine ansprechen
    Von Zehplusplus im Forum Asuro
    Antworten: 3
    Letzter Beitrag: 04.04.2010, 13:53
  4. Snake Vision will nicht.
    Von Obi-Wan1234 im Forum Asuro
    Antworten: 2
    Letzter Beitrag: 18.06.2008, 13:19
  5. Asuro "Snake Vision"
    Von Alina89 im Forum Asuro
    Antworten: 18
    Letzter Beitrag: 21.01.2008, 20:30

Stichworte

Berechtigungen

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

Labornetzteil AliExpress