- Akku Tests und Balkonkraftwerk Speicher         
Ergebnis 1 bis 10 von 20

Thema: Brauche dringend hilfe!TV remote mit linienverfolgung einprogrammieren

Hybrid-Darstellung

Vorheriger Beitrag Vorheriger Beitrag   Nächster Beitrag Nächster Beitrag
  1. #1
    Neuer Benutzer Öfters hier
    Registriert seit
    18.05.2011
    Ort
    Mannheim
    Beiträge
    11
    Hier ist der gesamte code scheint noch ein fehler drin zu sein.
    Code:
    #include "RP6RobotBaseLib.h" 
    
    #define RC_PROMO8
    
    
    #ifdef RC_PROMO8
    
    
    #define RC5_KEY_vorwaertsm		2
    #define RC5_KEY_rueckwaertsm	8
    #define RC5_KEY_linksm			4
    #define RC5_KEY_rechtsm			6
    #define RC5_KEY_Ledanm			32
    #define RC5_KEY_Ledausm			33 
    #define RC5_KEY_modus1fernbedienung	7
    #define RC5_KEY_modus2linieverfolgen 9
    
    
    #endif
    
    
    uint8_t vorwaertsm;
    uint8_t rueckwaertsm;
    uint8_t rechtsm;
    uint8_t linksm;
    uint8_t	Ledanm;
    uint8_t	Ledausm;
    uint8_t	Resetm;
    uint8_t mleftptmp;
    uint8_t mrightptmp;
    uint8_t power_links; 
    uint8_t power_rechts;
    uint8_t mleft_ptmp; 
    uint8_t mright_ptmp;
    
    uint8_t modus1fernbedienung;
    uint8_t modus2linieverfolgen;
    
    
    
    void ruecksetzen(void)
    			{
    				if(getStopwatch2() > 200)
    					{
    					vorwaertsm=0;
    					rueckwaertsm=0;
    					linksm=0;
    					rechtsm=0;
    				
    					setStopwatch2(0);
    					}
    			
    			}
    
    
    void receiveRC5Data(RC5data_t rc5data)
    
    	
    		{writeString_P("Toggle Bit:");
    		writeChar(rc5data.toggle_bit + '0');
    		writeString_P(" | Device Address:");
    		writeInteger(rc5data.device, DEC);
    		writeString_P(" | Key Code:");
    		writeInteger(rc5data.key_code, DEC);
    		writeChar('\n');
            
            
            
    		
    		switch(rc5data.key_code)
    		
    			{
    			case RC5_KEY_vorwaertsm:
    					writeString_P("vorwaertsm: ");
    					writeIntegerLength(vorwaertsm, DEC, 4);
    					writeChar('\n');
    					writeChar('\n');
    					vorwaertsm=1;								//vorwärts fahren
    					if(vorwaertsm==1&&modus1fernbedienung==1)
    					{
    					move(200,FWD,DIST_MM(150),0);
    					}
    					break;
    			case RC5_KEY_rueckwaertsm:
    					writeString_P("rueckwaertsm: ");
    					writeIntegerLength(rueckwaertsm, DEC, 4);
    					writeChar('\n');
    					writeChar('\n');
    					rueckwaertsm=1;								//rückwärts fahren
    					if(rueckwaertsm==1&&modus1fernbedienung==1)
    					{
    					move(200,BWD,DIST_MM(150),0);
    					}
    					break;
    			case RC5_KEY_rechtsm:
    					writeString_P("rechtsm: ");
    					writeIntegerLength(linksm, DEC, 4);
    					writeChar('\n');
    					writeChar('\n');
    					rechtsm=1;								//rechts fahren
    					if(rechtsm==1&&modus1fernbedienung==1)
    					{
    					rotate(50, RIGHT, 55, 0);
    					}
    					break;
    			case RC5_KEY_linksm:
    					writeString_P("linksm: ");
    					writeIntegerLength(linksm, DEC, 4);
    					writeChar('\n');
    					writeChar('\n');
    					linksm=1;								//links fahren
    					if(linksm==1&&modus1fernbedienung==1)
    					{
    					rotate(50, LEFT, 55, 0);
    					}
    					break;
    			case RC5_KEY_Ledanm:
    					writeString_P("Ledanm: ");
    					writeIntegerLength(linksm, DEC, 4);
    					writeChar('\n');
    					writeChar('\n');
    					Ledanm=1;									// Ledan:
    					if(Ledanm==1&&modus2linieverfolgen==1)
    					{
    					DDRA|=(E_INT1);
    					PORTA|=E_INT1;
    					}
    					break;
    			case RC5_KEY_Ledausm:
    					writeString_P("Ledausm: ");
    					writeIntegerLength(linksm, DEC, 4);
    					writeChar('\n');
    					writeChar('\n');
    					Ledausm=1;
    					if(Ledausm==1&&modus2linieverfolgen==1)
    					{											// Ledaus:
    					DDRA|=(E_INT1);
    					PORTA &= ~E_INT1;
    					}
    					break;
    			case RC5_KEY_modus1fernbedienung:	
    					writeString_P("modus1fernbedienung: ");
    					writeIntegerLength(modus1fernbedienung,DEC, 4);
    					writeChar('\n');
    					writeChar('\n');											//Fernbedienung
    					modus1fernbedienung=1;
    					modus2linieverfolgen=0;
    					break;	
    				
    			case RC5_KEY_modus2linieverfolgen:	
    					writeString_P("modus2linieverfolgen: ");
    					writeIntegerLength(modus2linieverfolgen,DEC, 4);
    					writeChar('\n');
    					writeChar('\n');		                                   //Linieverfolgen
    					modus2linieverfolgen=1;
    					modus1fernbedienung=0;
    					break;
    			
    					
    				}
    
    			}
    			
    			
    			
    					
    	
    				
    				
    				
    				void lichtsensoren (void)
    				
    				{					  
    				writeInteger(readADC(ADC_LS_L), 10);
    				writeString_P(" - ");
    				writeInteger(readADC(ADC_LS_R), 10);
    				writeString_P("\n\r");
    				if (readADC(ADC_LS_L) > readADC(ADC_LS_R))
    				{
    				setLEDs(4);
    				moveAtSpeed(100,50);
    				}
    				else
    				{
    				setLEDs(32);
    				moveAtSpeed(50,100);
    				}
    				mSleep(0);
    				}
    				
    
    			
    
    
    			
    			
    					
    				
    
    			
    			int main(void)
    {
    	initRobotBase(); 
    	
    	setLEDs(0b111111);
    	writeChar('\n');
        writeString_P("RP6 controlled by RC5 TV Remote\n");
    	writeString_P("___________________________\n");
    	mSleep(500);	 
    	setLEDs(0b000000); 
    	powerON();
    	
    	
    	startStopwatch2();// Stopuhr 2 wird gestartet
    	
    	// Set the RC5 Receive Handler:
    	IRCOMM_setRC5DataReadyHandler(receiveRC5Data);
    	
    	
    	// Main loop 
    	while(true) 
    	{
    	if(modus2linieverfolgen==1)
    		{
    		
    		lichtsensoren();
    		
    		}
    	
    		task_RP6System();
    		
    		// Motion Control tasks etc.
    	}	  // "
    		//Reset();	
    	
    	return 0;
    }

  2. #2
    Neuer Benutzer Öfters hier
    Registriert seit
    18.05.2011
    Ort
    Mannheim
    Beiträge
    11
    Keiner eine Idee es kommt immer nach einer hewissen zeit motor current weis nicht was noch sich stören soll auser moveAtSpeed ist ja nichts mehr drin?
    Werde die nächsten tagen mich mal dran verweilen.

  3. #3
    Erfahrener Benutzer Roboter Genie Avatar von SlyD
    Registriert seit
    27.11.2003
    Ort
    Paderborn
    Alter
    40
    Beiträge
    1.516
    So hab mir das jetzt mal angeschaut - das Problem ist hier das Du readADC verwendest.
    Das funkt in das task System rein, da das dort schon anders für alle ADC Kanäle erledigt wird.
    Du musst readADC gar nicht verwenden Du kannst stattdessen direkt Variablen abfragen in die die ADC Werte sowieso schon periodisch eingelesen werden.
    Der Overcurrent Fehler kommt da genau deswegen weil die Fehlerüberwachung da dann falsche ADC Werte bekommt.

    Hier ein Minimalbeispiel:

    Code:
    #include "RP6RobotBaseLib.h" 
    
    void lichtsensoren (void)
    {                      
      if(getStopwatch2() > 100) 
      {
          writeInteger(adcLSL, DEC);
          writeString_P(" - ");
          writeInteger(adcLSR, DEC);
          writeString_P("\n");
          
          if (adcLSL > adcLSR)
          {
            setLEDs(4);
            moveAtSpeed(100,50);
          }
          else
          {
            setLEDs(32);
            moveAtSpeed(50,100);
          }
          setStopwatch2(0);
      }
    }
                    
    int main(void)
    {
        initRobotBase(); 
        
        setLEDs(0b111111);
    
        writeString_P("Test\n");
        mSleep(500);     
        setLEDs(0b000000); 
        powerON();
        
        startStopwatch2();
        
        while(true) 
        {
            lichtsensoren();
            task_RP6System();
        }      
        return 0;
    }
    Das ist übrigens auch ein guter Tipp für alles andere - immer ein sehr kleines Programm schreiben in dem genau die Sache getestet wird die im größeren Programm nicht funktioniert.

    MfG,
    SlyD

    PS:
    Wenn Du das jetzt noch mit kontinuierlichem Übergang und Anzeige hinbekommen willst, schau Dir das RP6Base_LightDetection Beispiel an.

  4. #4
    Neuer Benutzer Öfters hier
    Registriert seit
    18.05.2011
    Ort
    Mannheim
    Beiträge
    11
    Danke dir slyd werde es heute abend gleich mal testen,deine Anweisung ist mir jetzt verständlich mein problem ist das ich
    ins kalte wasser gefallen bin sprichwörtlich.
    Du bist ziemlich fit in der Sache wenn ich dein Roboter da sehe da fällt mir kein wort mehr ein.
    task_RP6System ruft halt diverse funktionen auf.
    Danke nochmals Slyd

  5. #5
    Erfahrener Benutzer Roboter-Spezialist
    Registriert seit
    21.04.2009
    Beiträge
    523
    Ich sags mal so.... SlyD hat den RP6 entwickelt
    Wenn sich hier einer damit auskennt, dann er

  6. #6
    Neuer Benutzer Öfters hier
    Registriert seit
    18.05.2011
    Ort
    Mannheim
    Beiträge
    11
    Hast du recht wäre auch so fit wie er aber dem Bäcker wie ich kann mann das halb sehr schwer erklären.
    Hat jemand eine Ahnung wie groß die LDR'S beim RP6 sind?
    bei mir ist der eine naya er hängt so am seidenen faden.
    Noch was linienverfolgung funkt leider wie gesagt hat sich ein beinchen vom ausrichten verabschiedet muss mal morgen zum Conrad.
    Danke nochmal SlyD

Ähnliche Themen

  1. Brauche Dringend HILFE!!!!
    Von RP6 Noob im Forum Robby RP6
    Antworten: 16
    Letzter Beitrag: 14.08.2009, 19:48
  2. Linienverfolgung... brauche hilfe
    Von Fouwe im Forum Asuro
    Antworten: 12
    Letzter Beitrag: 21.06.2009, 17:49
  3. Brauche dringend Hilfe!!!!!!!!!!
    Von leuchti im Forum Asuro
    Antworten: 10
    Letzter Beitrag: 26.06.2007, 12:21
  4. Brauche dringend Hilfe!!!!!! Linienverfolgung
    Von astrotiger im Forum Asuro
    Antworten: 5
    Letzter Beitrag: 12.04.2007, 12:34
  5. Brauche dringend hilfe!!!!!
    Von Swaliste im Forum PIC Controller
    Antworten: 1
    Letzter Beitrag: 15.01.2007, 11:12

Stichworte

Berechtigungen

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

Labornetzteil AliExpress