Ultraschall- und Linefinder Sensor

Beim gleichzeitigen auswerten von Linefinder- und Ultraschallsensor funktioniert immer nur einer von beiden. Entweder er folgt der Linie, aber fährt gegen Hindernisse oder hält bei Hindrnissen, aber kann dafür nicht der Linie folgen. Hilfe wäre toll

187

25.01.23 13:44

Hallo 187,


kannst du mir einmal deinen Code hochladen, den du auf deinem Joy-Car verwendest? Dann kann ich dir bestimmt weiterhelfen. 🙂


Liebe Grüße
Jens

Jens

26.01.23 08:54

Das ist der Code bei dem der Ultraschallsensor funktioniert.


input.onButtonPressed(Button.A, function () {
mode += 1
if (mode > 1) {
mode = 0
}
if (mode == 0) {
basic.showLeds(`
# . . . #
. # . # .
. . # . .
. # . # .
# . . . #
`)
JoyCar.brakelight(ToggleSwitch.On)
JoyCar.stop(StopIntensity.Soft)
} else if (mode == 1) {
basic.showLeds(`
# . # . #
# . # . #
# . # . #
# . # . #
# . # . #
`)
JoyCar.brakelight(ToggleSwitch.Off)
}
})
function lineTracking () {
if (JoyCar.sonar() > 10) {
if (!(JoyCar.linefinder(SensorLCRSelection.Left)) && (!(JoyCar.linefinder(SensorLCRSelection.Center)) && !(JoyCar.linefinder(SensorLCRSelection.Right)))) {
JoyCar.drive(FRDirection.Forward, 50)
JoyCar.brakelight(ToggleSwitch.Off)
JoyCar.hazardlights(ToggleSwitch.Off)
} else if (!(JoyCar.linefinder(SensorLCRSelection.Left)) && (!(JoyCar.linefinder(SensorLCRSelection.Center)) && JoyCar.linefinder(SensorLCRSelection.Right))) {
JoyCar.turn(
FRDirection.Forward,
LRDirection.Left,
50,
2
)
JoyCar.brakelight(ToggleSwitch.Off)
JoyCar.hazardlights(ToggleSwitch.Off)
} else if (!(JoyCar.linefinder(SensorLCRSelection.Left)) && (JoyCar.linefinder(SensorLCRSelection.Center) && !(JoyCar.linefinder(SensorLCRSelection.Right)))) {
JoyCar.stop(StopIntensity.Intense)
JoyCar.brakelight(ToggleSwitch.On)
JoyCar.hazardlights(ToggleSwitch.Off)
} else if (!(JoyCar.linefinder(SensorLCRSelection.Left)) && (JoyCar.linefinder(SensorLCRSelection.Center) && JoyCar.linefinder(SensorLCRSelection.Right))) {
JoyCar.turn(
FRDirection.Forward,
LRDirection.Left,
50,
0
)
JoyCar.brakelight(ToggleSwitch.Off)
JoyCar.hazardlights(ToggleSwitch.Off)
} else if (JoyCar.linefinder(SensorLCRSelection.Left) && (!(JoyCar.linefinder(SensorLCRSelection.Center)) && !(JoyCar.linefinder(SensorLCRSelection.Right)))) {
JoyCar.turn(
FRDirection.Forward,
LRDirection.Right,
50,
2
)
JoyCar.brakelight(ToggleSwitch.Off)
JoyCar.hazardlights(ToggleSwitch.Off)
} else if (JoyCar.linefinder(SensorLCRSelection.Left) && (!(JoyCar.linefinder(SensorLCRSelection.Center)) && JoyCar.linefinder(SensorLCRSelection.Right))) {
JoyCar.drive(FRDirection.Forward, 50)
JoyCar.brakelight(ToggleSwitch.Off)
JoyCar.hazardlights(ToggleSwitch.Off)
} else if (JoyCar.linefinder(SensorLCRSelection.Left) && (JoyCar.linefinder(SensorLCRSelection.Center) && !(JoyCar.linefinder(SensorLCRSelection.Right)))) {
JoyCar.turn(
FRDirection.Forward,
LRDirection.Right,
50,
0
)
JoyCar.brakelight(ToggleSwitch.Off)
JoyCar.hazardlights(ToggleSwitch.Off)
} else if (JoyCar.linefinder(SensorLCRSelection.Left) && (JoyCar.linefinder(SensorLCRSelection.Center) && JoyCar.linefinder(SensorLCRSelection.Right))) {
JoyCar.drive(FRDirection.Forward, 50)
JoyCar.brakelight(ToggleSwitch.Off)
JoyCar.hazardlights(ToggleSwitch.Off)
} else {
JoyCar.stop(StopIntensity.Intense)
JoyCar.brakelight(ToggleSwitch.On)
JoyCar.hazardlights(ToggleSwitch.On)
}
} else {
JoyCar.stop(StopIntensity.Intense)
JoyCar.brakelight(ToggleSwitch.On)
JoyCar.hazardlights(ToggleSwitch.On)
}
}
let mode = 0
mode = 0
basic.showLeds(`
# . . . #
. # . # .
. . # . .
. # . # .
# . . . #
`)
JoyCar.brakelight(ToggleSwitch.On)
basic.forever(function () {
if (mode == 1) {
lineTracking()
} else {
mode = 0
}
})

Wenn ich nun den Ultraschall am Anfang entferne und dafür um jeden Fahrbefehl setze geht die Linienerkennung wieder aber das JoyCar hält nicht an

187

27.01.23 11:09

Hallo 187,


also bei mir funktioniert der von dir angegebene Code ohne Probleme. Verwendest du einen Micro Bit V1, oder V2? Was genau passiert denn, wenn du mit deinem angegebenen Code über eine Linie fährst?


Liebe Grüße
Jens

Jens

30.01.23 09:48

Achtung!

Ihr Webbrowser ist veraltet. Wechseln Sie jetzt zu einem aktuellen Browser für mehr Sicherheit, Geschwindigkeit und den besten Komfort auf dieser Seite.