Gast
#1092935
Hallo zusammen! Ich habe den ASURO-Roboter mit einem ATMEGA2560 und einem 4x20 LCD display erweitert. Die Grundfunktionen (Vorwärtsfahren, Linie folgen,...) funktionieren alle einwandfrei. Nun bin ich an einem Menu, in welchem man das Programm anwählen kann. Den Menubaum habe ich einmal gemacht und die Navigation funktioniert. Jedoch will ich jetzt, dass unter den einzelnen Menupunkten eine Funktion (zB folge Line) ausgeführt wird. Soweit ich mich in das Thema eingelesen habe, muss es mit einem Funktionspointer geschen, jedoch dort happert es ein bisschen. (Das ganze ist noch relativ primitiv aber soll zu Verständingung dienen.) Hier die Code-Schnipsel struct FSM_TAG { char * menutext; int up, right, left, down, south, north;}; struct FSM_TAG watchmenu[20] = { {"ASURO", 2, 1, 0, 14, 0, 0}, {"Version 2.0", 1, 1, 0, 1, 1, 1, }, {"Follow Line", 5, 3, 2, 0, 2, 2}, {"Press Up\nfor Start", 3, 3, 2, 3, 3,4}, {"Follow Line\n running", 4, 4, 4, 4, 3,4}, {"Make Square", 8, 6, 5, 2, 5, 5}, {"Press Up \nfor Start", 6, 6, 5, 6, 6,7}, {"MakeSquare is running", 7, 7, 7, 7, 6,7}, {"Go Distance", 11, 9, 8, 5, 8, 8}, {"Press Up for Start",9, 9, 8, 9, 9, 10}, {"GoDist\nis running", 10, 10, 10, 10, 9,10}, ............ }; Meine Frage ist nun: wie kann ich den Code erweitern, dass meine Funktionen (folloLine(), goDist()) beim Anwählen des jeweiligen Menus ausgeführt werden? Zb Untermenupunkt "Follow Line" soll die Funktion followLine(intspeed); ausgefürt werden. Oder "goDist" soll die Funktion goDist(int speed, int length) ausgeführt werden. grüsse stibe