Changed BB2B into a Thing class

This commit is contained in:
Pascal Serrarens 2025-05-03 09:53:43 +02:00
parent 58b4d2cada
commit cd76da6a7d
2 changed files with 40 additions and 22 deletions

View File

@ -1,31 +1,37 @@
using System.Threading; 
using RoboidControl; using RoboidControl;
class BB2B { class BB2B : Thing {
static void Main() { readonly DifferentialDrive drive;
readonly TouchSensor touchLeft;
readonly TouchSensor touchRight;
public BB2B() : base(128) { // thingType = 128
// The robot's propulsion is a differential drive // The robot's propulsion is a differential drive
DifferentialDrive bb2b = new(); drive = new();
// Is has a touch sensor at the front left of the roboid // Is has a touch sensor at the front left of the roboid
TouchSensor touchLeft = new(bb2b); touchLeft = new(drive);
// and other one on the right // and other one on the right
TouchSensor touchRight = new(bb2b); touchRight = new(drive);
}
// Do forever: public override void Update(ulong currentTimeMs, bool recurse = true) {
while (true) {
// The left wheel turns forward when nothing is touched on the right side
// and turn backward when the roboid hits something on the right
float leftWheelSpeed = touchRight.touchedSomething ? -600.0f : 600.0f;
// The right wheel does the same, but instead is controlled by
// touches on the left side
float rightWheelSpeed = touchLeft.touchedSomething ? -600.0f : 600.0f;
// When both sides are touching something, both wheels will turn backward
// and the roboid will move backwards
bb2b.SetWheelVelocity(leftWheelSpeed, rightWheelSpeed);
// Update the roboid state // The left wheel turns forward when nothing is touched on the right side
bb2b.Update(true); // and turn backward when the roboid hits something on the right
// and sleep for 100ms float leftWheelSpeed = touchRight.touchedSomething ? -600.0f : 600.0f;
Thread.Sleep(100);
} // The right wheel does the same, but instead is controlled by
// touches on the left side
float rightWheelSpeed = touchLeft.touchedSomething ? -600.0f : 600.0f;
// When both sides are touching something, both wheels will turn backward
// and the roboid will move backwards
drive.SetWheelVelocity(leftWheelSpeed, rightWheelSpeed);
base.Update(currentTimeMs, recurse);
} }
} }

12
Examples/BB2B/Program.cs Normal file
View File

@ -0,0 +1,12 @@
using System.Threading;
class Program {
static void Main() {
BB2B bb2b = new();
while (true) {
bb2b.Update();
Thread.Sleep(100);
}
}
}