Hardware Button für Start / Stop / Dock

Ich bin gerade dabei einen zweiten Ardumower für ein Vereinsgelände zu bauen. Der Mäher soll drei Taster bekommen mit denen man Start / Stop / Dock auslösen kann. Dies ist ja prinzipiell über den vorhanden Taster möglich, jedoch nicht unbedingt intuitiv.
Ich nehme an, dass man die User Switches dafür nehmen kann.
Hat das schonmal jemand realisiert oder kann mir einen Hinweis geben, wo im Code man da ansetzen würde?

PS: Gibt es eigentlich eine Möglichkeit in allen Dateien des Sunray Codes nach einem Begriff (z.B. Dock) zu suchen, oder muss man immer alle Dateien einzeln durchsuchen?
 
Note++ ist auch eine Lösung, in dem Texteditor kannst du alles suchen im Verzeichnis machen.
 
Notepadd++ ist die Lösung, vielen Dank.

Hab die Files mal durchsucht und glaube folgendes herausgefunden zu haben:

Die UserSwitches sind nur Pinseitig definiert, werden aber sonst nicht verwendet.

In der Robot.cpp kann man mit:

setOperation(OP_DOCK, false);
setOperation(OP_IDLE, false);
setOperation(OP_MOW, false);

Den Mäher in den jeweiligen Betriebsmodus versetzen.

Also mit einer Pinabfrage in der robot.cpp die die entsprechenden Befehle auslöst müsste es gehen?
 
Die Funktion ist umgesetzt. Ich hab das am Ende aber nicht selber gemacht. Ich hab den Kollegen aber angeschrieben, der es gemacht hat, ob er mir die entsprechenden Code Stellen schicken kann. Melde mich dann wieder.
 
Bei uns wurde einfach die sunray.ino so ergänzt:

Code:
#include "config.h"  // see note above if you get an error here!

#include "robot.h"
#define USER_SWITCH_1_PIN 46 //Knopf
#define USER_SWITCH_2_PIN 48 //Knopf
#define USER_SWITCH_3_PIN 47 //Knopf

void setup(){
  start();
  pinMode(USER_SWITCH_1_PIN, INPUT); //Knopf
  pinMode(USER_SWITCH_2_PIN, INPUT); //Knopf
  pinMode(USER_SWITCH_3_PIN, INPUT); //Knopf
   // Initialize the button pins as input with pullup resistor
 
}

void loop(){
  bool userSwitch1State = digitalRead(USER_SWITCH_1_PIN); //Knopf
  bool userSwitch2State = digitalRead(USER_SWITCH_2_PIN); //Knopf
  bool userSwitch3State = digitalRead(USER_SWITCH_3_PIN); //Knopf

  if (userSwitch1State == LOW) {
    setOperation(OP_MOW, true);
  }

  if (userSwitch2State == LOW) {
    setOperation(OP_IDLE, true);
  }

  if (userSwitch3State == LOW) {
    setOperation(OP_DOCK, true);
  }
  run();
  }
 
Oben