Mtf.Lego.Mindstorms.EV3
1.0.5
Prefix Reserved
dotnet add package Mtf.Lego.Mindstorms.EV3 --version 1.0.5
NuGet\Install-Package Mtf.Lego.Mindstorms.EV3 -Version 1.0.5
<PackageReference Include="Mtf.Lego.Mindstorms.EV3" Version="1.0.5" />
paket add Mtf.Lego.Mindstorms.EV3 --version 1.0.5
#r "nuget: Mtf.Lego.Mindstorms.EV3, 1.0.5"
// Install Mtf.Lego.Mindstorms.EV3 as a Cake Addin #addin nuget:?package=Mtf.Lego.Mindstorms.EV3&version=1.0.5 // Install Mtf.Lego.Mindstorms.EV3 as a Cake Tool #tool nuget:?package=Mtf.Lego.Mindstorms.EV3&version=1.0.5
Lego Mindstorms EV3 (Firmware: V1.09H)
This application uses DirectInput API however can be disabled by editing the Joystick and MindstromController project properties or changing the configuration to ReleaseWithoutJoystick. Just remove the Conditional Compilation Symbol USE_JOYSTICK on the Build tab.
For those who want to contribute, please read the CONTRIBUTING.md in the root folder of the solution.
Using the code in another solution shouldn't be hard. Just reference the MindstormCore project and use the following code snippet.
It also uses ChatGPT to communicate with. In order to obtain a valid OpenAI API Key, you need to create one at https://platform.openai.com/account/api-keys, and set it as an environment variable called OpenAI:ApiKey. Developers can use this command to create a secret in developer console: dotnet user-secrets set "OpenAI:ApiKey" "openai-api-key"
Connect to brick
var brick = new Brick("COM1"); // Note that you need to find the correct COM port to connect.
brick.Connect();
Using the speaker
Play a melody
brick.PlayMusic(new KisKeceLányom());
Turn on the speaker
brick.Beep(frequecncy, durationInMs);
Turn off the speaker
brick.Silence();
Play embedded sounds
brick.PlaySound(EmbeddedSound.ElephantCall, PlayType.PlayOnce);
Using the motors
Set motors
brick.SetMotors(OutputPort.B, OutputPort.C, OutputPort.D);
Start motors with different speed
var leftMotorSpeed = 100; // Minimum: -100, maximum: 100
var rightMotorSpeed = -100;
brick.SetMediumMotorSpeed(DaisyChainLayer.EV3, new SetMotorSpeedParams(brick.LeftMotor, leftMotorSpeed), new SetMotorSpeedParams(brick.RightMotor, rightMotorSpeed));
Stop Motors
brick.SetMediumMotorSpeed(DaisyChainLayer.EV3, new SetMotorSpeedParams(brick.Motors, 0));
or
brick.StopMotor(DaisyChainLayer.EV3, brick.Motors, BreakType.Break);
Using the screen
Clear the screen
brick.ClearScreen();
Any drawing will be shown after this command is called
brick.UpdateScreen();
Put a pixel on the screen
brick.PutPixel(10, 10, LCDColor.Black);
or
brick.PutPixel(new EV3Point(10, 10), LCDColor.Black);
Draw text on screen
brick.DrawString(10, 10, "Hello World!", LCDColor.Black, FontType.Normal);
or
brick.DrawString(new EV3Text(new EV3Point(10, 10), "Hello World!"));
Create an IEV3DrawingElement
IEV3DrawingElement element = new EV3Circle(50, 50, 20, true);
or
IEV3DrawingElement element = new EV3Line(50, 50, 100, 100);
or
IEV3DrawingElement element = new EV3Point(10, 10);
or
IEV3DrawingElement element = new EV3Rectangle(10, 10, 90, 90, false);
or
IEV3DrawingElement element = new EV3Text(10, 10, "Hello World!");
Draw an IEV3DrawingElement on the screen
brick.Draw(element, LCDColor.Black);
Start a game
var snakeGameEngine = new SnakeGameEngine(brick);
snakeGameEngine.GameLoop();
or
var circlesGameEngine = new CirclesGameEngine(brick);
circlesGameEngine.GameLoop();
Note that if something goes wrong, press the Back, Left, and Center buttons on your EV3 device to restart it.
Product | Versions Compatible and additional computed target framework versions. |
---|---|
.NET | net7.0-windows7.0 is compatible. net8.0-windows was computed. |
-
net7.0-windows7.0
- System.IO.Ports (>= 9.0.0)
NuGet packages
This package is not used by any NuGet packages.
GitHub repositories
This package is not used by any popular GitHub repositories.
Lego Mindstorms EV3 NuGet package.
1.0.5: Fix NuGet package dependencies.
1.0.4: Minor fixes. Package rename.
1.0.3: Copy Resources content into consuming project bin folder.
1.0.2: NuGet package extended with Mindstorms.Game assembly and Utils depenedency assembly.
1.0.1: Wrong package - DO NOT USE IT!
1.0.0: Contains only Mindstorms.Core assembly.