Finde Draht geht nicht Modus 4

Alles was nicht in eines der anderen Foren passt.
Antworten
dasgute
Beiträge: 19
Registriert: 2. Jun 2023, 09:59

Finde Draht geht nicht Modus 4

Beitrag von dasgute »

Hallo Edma-Freunde,

Bei mir funktioniert Fahrmodus 4 (Finde Draht) nicht. Edma bleibt einfach stehen. Egal ob ich Modus 4 manuell in den Konfigurationswerten eingebe oder die Batterie den Niedrigstand erreicht. Da sollte Edma ja dann am Draht entlang fahren bis Hindernis.

Danke für Tipps.

Viele Grüße

bkramer
Site Admin
Beiträge: 248
Registriert: 14. Mai 2020, 16:48

Re: Finde Draht geht nicht Modus 4

Beitrag von bkramer »

Hi,
ich glaube, beim aktuellen Sofwarestand gibt es keinen Modus 4 - Finde Draht (mehr).
drive_mode.jpg
drive_mode.jpg (68.54 KiB) 5495 mal betrachtet
Gruß

Bastian

dasgute
Beiträge: 19
Registriert: 2. Jun 2023, 09:59

Re: Finde Draht geht nicht Modus 4

Beitrag von dasgute »

Hallo,

das ist aber sehr schade, da ich eine Ladestation benötige.

Habe mir die Datei edma.ccp angesehen. Der Suchmodus ist etwas weiter unten da

Code: Alles auswählen

			//Wenn Automodus
			case HS_AUTO:
				switch (edma->gDrive_Mode)
				{
					case DRIVE_QUADER:				
						Drive_Quader();
					break;
					
					case DRIVE_HINHER:				
						
					break;
					
					case DRIVE_CHAOSM:			
						Drive_Chaos();
					break;
					
					case DRIVE_CHAOSO:	
						Drive_Chaos();
					break;
					
				}
				
			break;
			
			case HS_SOLAR_LADEN:
				SolarLaden();
			break;
			
			case HS_LADE_SUCH:
				StationSuchen();	
			break;
			
			case HS_LADEN:
				edma->PWM(0,0,0);
			break;
			
			
		}
...

weiter unten ist der Modus auskommentiert.

Code: Alles auswählen


//EdMa fährt zum Draht, dreht dann etwas links oder rechts, fährt dann am Draht entlang, bis 
//der Gegenfahrsensor auslöst.
	
	if (edma->gSchritt == 0) edma->gSchritt = ST_FAHREN_BIS_HINDERNIS;	
	
	switch(edma->gSchritt)
	{
		case ST_FAHREN_BIS_HINDERNIS:								
			edma->PWM(edma->gPWM_Vor, edma->gPWM_Vor, 0);			//Um das Mähwerk abzuschalten.
			if (edma->FahrenBisHindernis())
				edma->gSchritt = ST_FAHRE_LEICHT_L;
		break;
		
/*		case ST_ZURUECK:
			if (edma->Zurueck())
			{
				edma->NeueRichtungZufall();
				edma->gSchritt = ST_DREHEN;
			}
		break;
		
		case ST_DREHEN:
			if (edma->Drehen(1500,1)) //Links drehen
			{
				edma->gSchritt = ST_FAHRE_LEICHT_R;
				sprintf(edma->gZS_Text,"leicht rechts");
			}
		break;*/
		
		case ST_FAHRE_LEICHT_L:
			edma->PWM(edma->gPWM_Dreh_Vor / (-2), edma->gPWM_Dreh_Vor, 0);		//20% weniger bei rechts
			if (edma->AntL() == 2) 
			{
				edma->gSchritt = ST_FAHRE_LEICHT_R;
				sprintf(edma->gZS_Text,"leicht rechts");
			}
			if (edma->Gegen())
			{
				sprintf(edma->gZS_Text,"gegen");
				edma->PWM(0,0,0);
				edma->gSchritt = 0;
				edma->gHStatus = HS_LADEN;
			}
		break;



Lässt sich das durch Entfernen der Auskommentierung wiederbeleben? Wenn ich die Datei editiere muss ich da einen make im root-Verzeichnis machen?

Viele Dank für Hilfe / Infos

Chris

bkramer
Site Admin
Beiträge: 248
Registriert: 14. Mai 2020, 16:48

Re: Finde Draht geht nicht Modus 4

Beitrag von bkramer »

Hallo Chris,
sorry für die späte Antwort.
Musste mir das erst einmal wieder ansehen.

Den Code in der edma.cpp kannst du so lassen.
In der tedma.hpp wird ab Zeile 315 das Laden behandelt.

In der ini muss bei SolarLaden eine 0 stehen. (Dann sucht er die Ladestation.)

Code: Alles auswählen

315	//if (this->gHStatus != HS_LADEN && this->gHStatus == HS_AUTO) this->gHStatus = HS_LADE_SUCH;
316	//Batteriespannung prüfen.
317	
318	if (this->zBatterie->AbgelaufenSek(30))
319	{	
320		if(this->gBatt <= this->gBattLeer && this->gBattLaden == 0 && this->gHStatus == HS_AUTO)
321			lBattLeerCnt++;
322		else
323			lBattLeerCnt = 0;
324		
325		if(this->gBatt >= this->gBattVoll && this->gBattLaden == 1)
326			lBattVollCnt++;
327		else
328			lBattVollCnt = 0;
329		
330		printf("Batt: %i V: %i L: %i\n", gBatt, lBattVollCnt, lBattLeerCnt);
331		sprintf(this->gZS_Text, "Batt: %i V: %i L: %i\n", gBatt, lBattVollCnt, lBattLeerCnt);
332	}
333	
334	if (lBattLeerCnt >= 3)
335	{
336		this->gBattLaden = 1;
337		lBattLeerCnt = 0;
338		lHStatus_Rett = this->gHStatus;
339		
340		if (this->gSolarladen) 
341		{
342			//Solar laden aktivieren
343			this->gHStatus = HS_SOLAR_LADEN;
344		}
345		else 
346		{
347			//Stationsladen aktivieren
348			this->gHStatus = HS_LADE_SUCH;
349		}
350	}
351		
352	if (lBattVollCnt >= 3)
353	{
354		lBattVollCnt = 0;
355		this->gBattLaden = 0;
356		this->zTotmann->Reset();	//Zeit zurücksetzen
357		sprintf(this->gZS_Text, "BattVoll - Totmann reset");
358		this->gHStatus = lHStatus_Rett;
359		
360	}
Falls du was am Code änderst:
Dann ins Verzeichhnis /root wechseln und make eingeben.
Dann kompiliert er alle Dateien und führt einen Neustart aus.

Gruß

Bastian

dasgute
Beiträge: 19
Registriert: 2. Jun 2023, 09:59

Re: Finde Draht geht nicht Modus 4

Beitrag von dasgute »

Hallo vielen herzlichen Dank,

das werde ich ausprobieren und hoffe das bekomme ich hin.

Danke und viele Grüße

Chris

Antworten