EV3 (Lego Roboter) richtige programmierung?

Link zum EV3 den wir nutzen: https://education.lego.com/de-de/products/lego-mindstorms-education-ev3-pakete/45544

Wir bräuchten ein wenig Hilfe bei einer Hausaufgabe die ein bisschen übertrieben gestellt wurde... PS: Ich nutze gutefrage.net normalerweise NIE für Hausaufgaben oder ähnliches, aber das hier ist auf längere Sicht was anderes (lange story). Außerdem sollte man bedenken, dass meine Gruppe und ich mit dem Programm bis jetzt am weitesten gekommen sind!

Unser Programm könnt ihr euch unten angucken :) (Das beigelegte Bild)

Wir sind schon ziemlich weit gekommen, aber es gibt noch einen kleinen Fehler und wir begreifen nicht, was wir ändern müssen.

Arbeitsauftrag:

Der Roboter soll entlang einer Wand laufen: - Die Wand ist immer rechts - Es gibt Abbiegungen von 90° - Es können Wände vorne auftauchen. Dann soll ein akustischer Hinweis ertönen und der Roboter eine 90°-Drehung nach links aufführen. - Das Ende ist erreicht, wenn rechts keine Wand mehr ist. Dann soll der Roboter stehen bleiben und einen weiteren akustischen Hinweis geben. - Auf dem Boden können Farbmarkierungen aufgeklebt sein. Abhängig von der Farbe soll der Roboter folgendes tun: o Er soll bei jeder Farbe auf der Anzeige die Farbe schreiben o Bei Rot soll er sich einmal um sich selbst drehen o Bei Grün soll er eine Melodie abspielen o Bei Blau soll er drei Sekunden stehen bleiben

Bitte vergleicht dies mit dem Bild und helft uns D: D:

:(

DANKE & LG!

Bild zum Beitrag
Programm, Lego, programmieren, Mindstorms
Hilfe bei C# Taschenrechner?

Hallo Community, ich programmiere derzeit einen Taschenrechner in C# für den Unterricht, und bin an folgendem hängengeblieben, und zwar brauche ich die vier Grundrechenarten und Quadratwurzel & Potenzen. Die Grundrechenarten und Potenzen hab ich hinbekommen, aber die Quadratwurzeln bringen mich zum verzweifeln. Nämlich verlangt der Rechner zwei Zahlen, obwohl man für die Wurzeln ja bekanntlich nur eine benötigt.

static void Main(string[] args) { int num_1; int num_2; string op;

        Console.ForegroundColor = ConsoleColor.Cyan;

        Console.WriteLine("Gib die erste (ganze) Zahl ein!");
        num_1 = Convert.ToInt32(Console.ReadLine());

        Console.WriteLine("Gib die zweite (ganze) Zahl (oder Potenz) ein!");
        num_2 = Convert.ToInt32(Console.ReadLine());

        while (num_2 <= 0)
        {
        Console.WriteLine("Gib die zweite (ganze) Zahl (oder Potenz) nochmal ein!");
        num_2 = Convert.ToInt32(Console.ReadLine());
        }
        Console.WriteLine("Gib einen Operator an. (+, -, *, /, p, s)");
        op =(Console.ReadLine());

        if (op.Equals("+"))
        {
            Console.WriteLine("Dein Ergebnis lautet:");
            Console.WriteLine(num_1 + num_2);
        }
        if (op.Equals("-"))
        {
            Console.WriteLine("Dein Ergebnis lautet:");
            Console.WriteLine(num_1 - num_2);
        }
        if (op.Equals("*"))
        {
            Console.WriteLine("Dein Ergebnis lautet:");
            Console.WriteLine(num_1 * num_2);
        }
        if (op.Equals("/"))
        {
            Console.WriteLine("Dein Ergebnis lautet:");
            Console.WriteLine(num_1 / num_2);
        }
        if (op.Equals("p"))
        {
            Console.WriteLine("Dein Ergebnis lautet:");
            Console.WriteLine(Math.Pow(num_1, num_2));
        }
        if (op.Equals("s"))
        {
            Console.WriteLine("Dein Ergebnis lautet:");
            Console.WriteLine(Math.Sqrt(num_1));
        }
        Console.ReadLine();
    }

}

}

Hier wär der Quellcode, bin leider ein absoluter Anfänger also bitte nehmt es mir nicht übel. Bin auch für Verbesserungsvorschläge offen. Danke :)

programmieren
LCD4884 Arduino Laufschrift?

Habe mir letztens ein neues LCD4884 Display zugelegt. Nun steh ich aber vor folgenden "Denkfehler", und zwar wird in dem Beispiel bei Einfache Laufschrift auf LCD4884 bei http://www.arduinospielwiese.de/ das so beschrieben (kleiner Ausschnitt) :

void loop() { lcd.LCD_write_string( 78, 3, "M", MENU_NORMAL); delay(200); lcd.LCD_write_string( 70, 3, "MA", MENU_NORMAL); delay(200); lcd.LCD_write_string( 65, 3, "MAR", MENU_NORMAL ); delay(200); lcd.LCD_write_string( 60, 3, "MART", MENU_NORMAL ); delay(200); lcd.LCD_write_string( 53, 3, "MARTI", MENU_NORMAL ); delay(200); lcd.LCD_write_string( 48, 3, "MARTIN", MENU_NORMAL ); delay(200); lcd.LCD_write_string( 42, 3, "MARTIN ", MENU_NORMAL ); delay(200);
lcd.LCD_write_string( 35, 3, "MARTIN K", MENU_NORMAL ); delay(200); lcd.LCD_write_string( 30, 3, "MARTIN KU", MENU_NORMAL ); delay(200); lcd.LCD_write_string( 23, 3, "MARTIN KUP", MENU_NORMAL ); delay(200); lcd.LCD_write_string( 18, 3, "MARTIN KUPK", MENU_NORMAL ); delay(200); lcd.LCD_write_string( 12, 3, "MARTIN KUPKA", MENU_NORMAL ); delay(200); lcd.LCD_write_string( 12, 3, " ", MENU_NORMAL ); lcd.LCD_write_string( 8, 3, "MARTIN KUPKA", MENU_NORMAL ); delay(200); lcd.LCD_write_string( 8, 3, " ", MENU_NORMAL ); lcd.LCD_write_string( 3, 3, "MARTIN KUPKA", MENU_NORMAL ); delay(200); lcd.LCD_write_string( 3, 3, " ", MENU_NORMAL ); lcd.LCD_write_string( 0, 3, "MARTIN KUPKA", MENU_NORMAL ); delay(200); lcd.LCD_write_string( 0, 3, " ", MENU_NORMAL ); lcd.LCD_write_string( 0, 3, "ARTIN KUPKA", MENU_NORMAL ); delay(200); lcd.LCD_write_string( 0, 3, " ", MENU_NORMAL ); lcd.LCD_write_string( 0, 3, "RTIN KUPKA", MENU_NORMAL ); delay(200); lcd.LCD_write_string( 0, 3, " ", MENU_NORMAL ); lcd.LCD_write_string( 0, 3, "TIN KUPKA", MENU_NORMAL ); delay(200);

etc..

Ich jedoch habe das mit einer for-Schleife gelöst(bei mir dient Hallo als Laufschrift): "Es stehen Spalte 0...83 und Zeile 0...5 zur Textpositionierung zur Verfügung."

void loop() {

for(i = 0 ;i < 54; i++) { lcd.LCD_write_string(i, 1, "HALLO", MENU_NORMAL ); delay(100); lcd.LCD_write_string(i, 1, " ", MENU_NORMAL );

}

for(i = 54 ;i > 0; i--) { lcd.LCD_write_string(i, 1, "HALLO", MENU_NORMAL ); delay(100); lcd.LCD_write_string(i, 1, " ", MENU_NORMAL );

}

}

Alles hat wunderbar geklappt, aber ich verstehe es nicht warum es 54 hier i = 0 ;i < 54; i++ heißen muss.

PS: Habe es durch Probieren geschafft auf diese Nummer zu kommen

Freue mich auf Antworten!

programmieren, Arduino, Aufschrift, For-Schleife
Winkel Berechnung bei Spiele Programmierung, Winkel ohne rechtem Dreieck mit bekannten Seitenlängen berechnen?

Ich entwickle aktuell mein erstes Spiel und benötige mathematische Unterstützung bei der Winkelberechnung. Dabei ist das Bild, was ich auf die schnelle in Paint gezeichnet habe, wichtig. Auf dem zweiten seht ihr das Spiel, man muss Coins einsammeln, dann kommt man in den nächsten level, hat 5 leben, 15 sekunden zeit pro level...ist halt mein erstes spiel :) die texturen/sprites sind auch erst einmal testweise drin und teilweise noch nicht selber gemacht, um erst einmal die Möglichkeiten zu testen, also nicht wundern ^^

Wir haben eine Kugel bei C, die auf Spieler bei A abgeschossen wird. Nun ist es keine Kugel, sondern eine Patrone. Somit muss das Image gedreht werden, damit die Spitze der Patrone in schussrichtung zeigt (eine Patrone die Quer geschossen wird, sieht uncool aus ;)).

Das Image kann ich nach Grad drehen. Rechts ist 0°, oben 90°, links 180° usw., wie auf dem Bild zu sehen und durch den grauen Kreis dargestellt. Wenn die Kugel horizontal von rechts nach links geschossen wird, benötigt sie die Angabe 180°, um in Schussrichtung ausgerichtet zu sein.

Alles was ich benötige, ist der Winkel gamma (außer ich mache einen Denkfehler? müsste aber funktionieren, auch wenn ich ab einem bestimmten Wert die andere Seite des Winkels benötige). Dadurch dass ich die Position der Kugel und des Spielers im Raum weiß, kann ich die Seitenlängen a, b, c berechnen. Wahrscheinlich kann ich auch c1 und c2 berechnen, falls es mich weiterbringen sollte, bin mir da aber noch nicht sicher.

Ich habe eine hilfslinie eingezeichnet, um rechte Winkel zu bekommen. Dadurch könnte ich gamma1 und gamma2 berechnen, diese addieren und dadurch hätte ich das, was ich benötige. Aber ich weiß nicht wie und sitze schon ein paar stunden daran.

Soweit meine recherchen ergaben, kann ich mit den aktuellen Informationen diese Aufgabe nicht lösen.Welche Werte benötige ich, um gamma herausfinden zu können? Eventuell kann ich diese Werte programmiertechnisch herausfinden. Allerdings beschränkt es sich eher auf entfernungen (längen), außer ich übersehe etwas.

Kann mir jemand helfen? :)

Beim schreiben ist mir aufgefallen, dass wenn ich c1 und c2 habe, ich tatsächlich gamma1 und gamma2 berechnen und addieren kann. Das müsste soweit laufen. Dann muss ich jetzt herausfinden, wie ich an c1 und c2 komme. Gibt es eventuell einen einfacheren Weg? Die Berechnung wird sonst immer komplexer und somit ressourcenfressender

Bild zum Beitrag
Mathematik, programmieren, Winkel

Meistgelesene Beiträge zum Thema Programmieren