Guten Morgen zusammen,
ich bin grade dabei, meinem Mower einen zweiten Perimeterempfänger zu spendieren. Aus dem zweiten Empfänger brauche ich eigentlich nur das Signal (isInside) um im Random Mähbetrieb folgendes zu realisieren:
- wenn der Empfänger "left" getriggert wird (IsInside = 0) dann Fahre Rückwärts und Roll = Right
- wenn der Empfägner "rechts" getriggert wird (IsInsideR = 0) dann Farhe Rückwärts und Roll = Left
Ich möchte damit den Random Roll ersetzten.
Die elektrische Installation ist ja kein Problem. In derSoftware habe ich auch bereits ein paar Parameter angepasst und Variablen hinzugefügt.
z.B.: isInside --> isInsideR / perimeterTriggerTime --> perimeterTriggerTimeR / perimeterMag --> perimeterMagR / ...
Den Code habe ich an den enstprechenden Stellen auch so umgeschrieben, dass die neuen Variablen von dem neuen Receiver kommen wie z.B. hier:
dies funktioniert auch bei den Mag Werten. Leider klappt es nicht bei der Variable "isInsideR". Im Perimeter Plot sowie im Log währed des Radom Mowings reagiert der neue Receiver (right) nicht auf die Schleife bzw. erkennt er nicht wenn wer die PeriSchleife überquert. Der bestehende Sensor (left) reagiert dafür doppelt und triggert laut Log jeweils SEN_PERIM_LEFT und SEN_PERIM_RIGHT.
Ich hoffe mir kann hier ein Azurit Experte helfen. Meine Skills beim Programmieren sind auch sehr sehr begrenzt ;-)
ich bin grade dabei, meinem Mower einen zweiten Perimeterempfänger zu spendieren. Aus dem zweiten Empfänger brauche ich eigentlich nur das Signal (isInside) um im Random Mähbetrieb folgendes zu realisieren:
- wenn der Empfänger "left" getriggert wird (IsInside = 0) dann Fahre Rückwärts und Roll = Right
- wenn der Empfägner "rechts" getriggert wird (IsInsideR = 0) dann Farhe Rückwärts und Roll = Left
Ich möchte damit den Random Roll ersetzten.
Die elektrische Installation ist ja kein Problem. In derSoftware habe ich auch bereits ein paar Parameter angepasst und Variablen hinzugefügt.
z.B.: isInside --> isInsideR / perimeterTriggerTime --> perimeterTriggerTimeR / perimeterMag --> perimeterMagR / ...
Den Code habe ich an den enstprechenden Stellen auch so umgeschrieben, dass die neuen Variablen von dem neuen Receiver kommen wie z.B. hier:
Code:
if ((perimeterUse) && (millis() >= nextTimePerimeter)){
if (stateCurr == STATE_PERI_TRACK) nextTimePerimeter = millis() + 30;
else nextTimePerimeter = millis() + 50; // 50
perimeterMag = readSensor(SEN_PERIM_LEFT);
perimeterMagR = readSensor(SEN_PERIM_RIGHT); // Smi: Hinzu
if (stateCurr == STATE_PERI_FIND)perimeterMagMedian.add(abs(perimeterMag));
if ((perimeter.isInside(0) != perimeterInside)){
perimeterCounter++;
setSensorTriggered(SEN_PERIM_LEFT);
perimeterLastTransitionTime = millis();
perimeterInside = perimeter.isInside(0);
}
if ((perimeter.isInsideR(0) != perimeterInsideR)){
perimeterCounter++;
setSensorTriggered(SEN_PERIM_RIGHT);
perimeterLastTransitionTime = millis();
perimeterInsideR = perimeter.isInsideR(0);
}
dies funktioniert auch bei den Mag Werten. Leider klappt es nicht bei der Variable "isInsideR". Im Perimeter Plot sowie im Log währed des Radom Mowings reagiert der neue Receiver (right) nicht auf die Schleife bzw. erkennt er nicht wenn wer die PeriSchleife überquert. Der bestehende Sensor (left) reagiert dafür doppelt und triggert laut Log jeweils SEN_PERIM_LEFT und SEN_PERIM_RIGHT.
Ich hoffe mir kann hier ein Azurit Experte helfen. Meine Skills beim Programmieren sind auch sehr sehr begrenzt ;-)