Hallo liebe Forenmitglieder,
in Form einer Schularbeit haben wir die Aufgabe einen LEGO EV3 mithilfe von Java zu programmieren.
Unser Projekt soll später ein Greifarm werden. Da unser Lehrer derzeit krank ist und wir unser Projekt zeitnah abgeben müssen brauchen wir eure Unterstützung.
Verwendet haben wir folgende Sensoren und Motoren:
Großer Motor auf A
Großer Motor auf B
Mittlerer Motor auf C
Farbsensor auf 1
Drucksensor auf 2
Hat schon einmal jemand von euch solch ein Programm geschrieben und könnte uns helfen?
Vielen Dank für eure Unterstützung
Saluton!
Lok24 hat geschrieben:
„Altgrau“ facere necesse est.
Wer Rechtschreibfehler findet, darf sie mir nennen. Ich lerne nämlich gerne dazu (ich bin allerdings „Altschreiber“).
... schade dass hier nichts mehr kommt, ich hatte mich fast zwei Stunden mit der Frage befasst....
Thomas52xxx , n3t3rb gefällt das
Hallo Lok24,
tut uns leid, wir hatten die letzten Wochen Ferien und konnten daher nicht an dem EV3 weiterarbeiten.
Motor C ist für die Rotation des Greifarms zuständig.
Der Touch-Sensor am Port 1, gibt Auskunft wie weit sich der Arm drehen darf (bei berühren muss der Motor C stoppen).
Motor B ist für die Auf- und Abbewegung des Greifarms zuständig.
Motor A öffnet und schließt den Greifer um Gegenstände aufzunehmen.
Wird der Touch-Sensor dann aktiviert soll Motor B den Greifarm öffnen, damit der Gegenstand in einen "Korb" fallen kann.
Der Farbsensor soll erkennen welche Farbe der Gegenstand hat.
Beispielsweise sollen nur blaue Gegenstände vom Greifer aufgenommen werden.
Grüße
HSEV3
Hallo,
schön wieder von Euch zu hören, ihr seid ja jetzt ausgeruht.....
HSEV3 hat geschrieben:
Hallo,
ja das Problem mit dem Farbsensor haben wir auch schon erkannt, wir werden ihn noch umbauen und zwar direkt an den Greifer
Welchen "Ablauf" gibt es für den Greifer?
1.) Greifer auf
2.) Arm nach unten
3.) Greifer zu
4.) Arm hoch
5.) Arm zur Seite (über den Korb)
6.) Greifer auf (Gegenstand in den Korb fallen lassen)
7.) In Ausgangsposition zurückfahren
Das was wir schreiben ist die Vorgabe unseres Lehrers.
Grüße
HSEV3-Team
Moin,
Ah, der Lehrer.
Nun, das wird so nicht funktionieren
Bitte: denkt nochmal drüber nach, was der Sensor im Original für eine äußerst wichtige Funktion hat.
Dann müssen wir uns überlegen, wie wir das mit den Anforderungen des Lehrers in Einklang bringen.
Nur wenn ihr wirklich verstanden habt, was das Ding mechanisch macht könnt ihr ein gutes Programm schreiben.
Hallo,
leider wissen wir nicht was der Sensor für eine Funktion hat, kannst du uns dieses bitte mitteilen?
Die Vorgabe unseres Lehrers ist das der Roboter nachher funktioniert.
Hallo,
so, es wird ja Zeit mal was zu programmieren.
Wie wir gleich sehen werden bekommt das Programm durch die geplante Änderung auch auch plötzlich eine andere Programmstruktur.
Wir werden also mal mit dem Drehen des Arms anfangen.
Generell kann man die Motoren in verschiedenen Modi betreiben:
Drehen bis Stop-Befehl kommt....
Drehen für n sec ....
Drehen der Achse um x°
So: Batterien einlegen, der Roboter steht irgendwo, drehen um 847°, das kann das komplette Ding zerlegen, weil es nicht aufhört, wenn es am Ende der mechanisch vorgegeben Möglichkeiten ist.
Ebenso bei x Sekunden
Wir müssen also beim Einschalten(=Starten des Programms) langsam bis zum Anschlag drehen.
Das kommt also in den Konstruktor.
Wir bauen uns also eine Klasse, die Drehmotor und Touch-Sensor beinhaltet. Als Parameter übergeben wir ... Was meint ihr? ich komme auf vier Parameter .
Außerdem hat sie einen Konstruktor und eine Methode "drehe um x°.
Und merkt sich die vier Parameter in Variablen.
public class xxx {
public xxx() { // Konstruktor
Drehe Motor bis Schalter geschlossen wird
merke die Übergeben Parameter
}
Public yyyy
{
drehe um motor um x °
}
}
Am Ende sollte ihr eine Klasse haben, deren Konstruktor vier(?) Parameter liest, und ein Main-Programm, das aus zwei Zeilen besteht:
ein neues Objekt der Klasse erzeugen
mit dem Objekt eine Drehung um x° ausführen.
Ihr könnt den Code hier posten.
Und bevor ihr den EV3 einschaltet:
Was müsst ihr bei den Parametern bedenken (Werte)?
Und immer den Finger auf dem Knopf links oben haben, um das Programm sofort zu unterbrechen.
Grüße
Werner
Aloha,
zusammen mit dem weißen Winkel oben in dem Arm (das Teil bei 64):
Der schiebt sich immer näher an den Sensor und meldet wenn der Arm seinen oberen Punkt erreicht hat, er sorgt also, wie der Touch-Sensor beim Drehmotor, für eine Normierung der Bewegung des Arms!
Er wird hier nicht als Farb-, sondern als Abstandsensor eingesetzt.
Das ist nicht meine Interpetation, es gibt zu dem Modell auch ein Programm von LEGO, da kann man das ablesen.
Wie sollte man sonst wissen, wo der Arm gerade steht?
Auf dem Viedo sieht man das ganz gut.
Da denken wir nachher drüber nach.
Baut erstmal die Klasse zum Drehen, dann kommen noch zwei, aber das ist Copy & Paste
Hallo,
dann hier mal unser Versuch.
package org.lejos.ev3.projects.gruppe4;
import java.awt.Color;
import lejos.hardware.BrickFinder;
import lejos.hardware.Button;
import lejos.hardware.Sound;
import lejos.hardware.lcd.Font;
import lejos.hardware.lcd.GraphicsLCD;
import lejos.utility.Delay;
import lejos.hardware.motor.*;
import lejos.hardware.port.MotorPort;
import lejos.hardware.port.SensorPort;
import lejos.hardware.port.UARTPort;
import lejos.hardware.sensor.EV3ColorSensor;
import lejos.robotics.RegulatedMotor;
public class EV3HelloWorld
{
public static void main(String[] args)
{
RegulatedMotor motor3 = new EV3LargeRegulatedMotor(MotorPort.A); //Hoch- und Runter
RegulatedMotor motor4 = new EV3LargeRegulatedMotor(MotorPort.D); //links rechts
EV3TouchSensor sensor1 = new EV3TouchSensor (SensorPort.S1); //Farbsensor 1
motor3.backward();
Delay.msDelay(1000);
motor4.backward();
Delay.msDelay(150);
motor3.stop();
motor4.stop();
Delay.msDelay(1000);
motor4.forward();
Delay.msDelay(200);
motor3.forward();
Delay.msDelay(1250);
motor3.close();
motor4.close();
}
}
Mit diesem Code lässt sich der Greifarm bereits drehen und auf- und abbewegen.
Leider wissen wir nicht wie wir den Sensor ansteuern können.