• Herzlich willkommen!

    Das Team von »Doctor Brick« heißt Euch herzlich willkommen und wünscht Euch viel Spaß hier!
    »Doctor Brick« ist eine anerkannte Community (RLOC) für erwachsene LEGO Enthusiasten, auch AFOLs (= Adult Fans Of LEGO) genannt.
    Wir können uns hier über alle Belange des LEGO Hobbys austauschen wie z.B. Set- und Teilefragen, Vorstellung und Rezensionen von Legobauten.
    Bitte beachtet die Nutzungsbedingungen und den Verhaltensleitfaden.

[WIP] Eisenbahn Sammelthread für 1:16,5 Technic Lokomotiven und Waggons

grawuli

Urgestein
Registriert
2 Mai 2018
Beiträge
1.524
Ort
Minga
Kann ich machen, aber wie soll es das Hub merken, 9v sind doch immer 9v?
Das ist richtig, aber mit Batterien oder Akkus sacken die Spannungswerte ganz schnell unter 8 V und mit externer Stromquelle (3s-LiPo) bleiben 9 V eben 9V und das über die gesamte Zeit.

Hallo Simon aka @Functional Technic ,

mit welcher Geschwindigkeit (= Wert für dc) sind deine Züge unterwegs und wie groß sind die Fliesen?

Edit: Wie groß ist der Abstand zwischen Sensor und Fliesen?
 
Zuletzt bearbeitet:

Functional Technic

Urgestein
Registriert
21 März 2017
Beiträge
830
@grawuli meine züge fuhren mit dem city motor, 7.2 v (nimh akku) mit dc wert 60 - 70. die fliesen sind 8 noppen lang und distanz zur schiene ca. 4-5 plattenhöhen, müsste ich aber nachschauen und kann ich nicht, weil ich gerade im urlaub bin. durch den hsv wertebereich pro farbe kann die distanz zur schiene ca. 3 plattenhöhe abweichen. ich habe auch immer das licht des sensors auf standardwert an gebabt. damit konnte ich auch im dunkeln fahren. bei huwis technikeisenbahn würde ich die tiles auf der schiene noch etwas länger machen, dann funktioniert es sicher besser.
@Lok24 kannst du deinen hsv code ev. nochmals hier posten? konnte den code nicht mehr finden. ich habe die hsv werte anpassen müssen aber sonst funktioniert das ganz gut. einzig braucht es etwas viele programmzeilen, was beim speicherplatz der hubs ein problem sein kann.
 

grawuli

Urgestein
Registriert
2 Mai 2018
Beiträge
1.524
Ort
Minga
@Lok24 kannst du deinen hsv code ev. nochmals hier posten? konnte den code nicht mehr finden. ich habe die hsv werte anpassen müssen aber sonst funktioniert das ganz gut. einzig braucht es etwas viele programmzeilen, was beim speicherplatz der hubs ein problem sein kann.
Den Code kenne ich. Da nur 2 Werte berücksichtigt werden, ist der nicht für jede Farbe anwendbar.
 

Lok24

Elektronikbahner
Registriert
11 Sep. 2019
Beiträge
1.843
Den Code kenne ich. Da nur 2 Werte berücksichtigt werden, ist der nicht für jede Farbe anwendbar.
Hallo,

Die Farben werden in der Zeile 3 definiert mit im Stand gemessenen Standardwerten, hier sind es 6 Farben und je zwei Werte (h und v).
Wenn ich mich recht erinnere hatte die erste Version noch alle drei Werte, aber es hat sich rausgestellt, dass die beiden genügen.
Es wird jeweils nur ein Bereich (+/- offset) zu den beiden Standardwerden gebildet.

Abstand Sensor zu Fliese im Gleis: 2 Plattenstärken.
Eneloop Akkus, also 7,2 V

Zu den "Fehl"farben: ich schiebe die Lok langsam über das Gleis, dann bekomme ich auch die seltsamsten Ergebnisse beim Übergang von Untergrund zu Fliese, Mischfarben also

Eine ungeprüfte Idee: Einleitend eine Fliese "schwarz", dann doppelt so lang die Farbe.
Wird schwarz erkannt wird über die Tacho-Info die gefahrene Strecke berechnet (Rad und Getriebe einberechnen), bis der Sensor sicher über der Farbe steht, dann erst gemessen.
Spannend wäre, ob ein Ultraschallsensor zuverlässig den Höhenunterschied meldet.


Ps.: vielleicht doch nochmal hinterfragen ob nicht eine Farbe genügt?

Python:
# set all values : h,v, name of color

l=[357,86,"red",141,55,"green",222,83,"blue",55,99,"white",50,99, "yellow",40,55,"dark tan"]
none = "xx"     #if nocolor detected
o = 3           #+/- range

# scan
def exe(sensor):
    color = sensor.hsv()
    h = color.h
    v = color.v
    s = color.s
    p = none
  
    for i in range (0, len(l)/3):       
        if h < l[0+3*i] + o  and h > l[0+3*i]  -o  and v < l[1+3*i] + o and v >  l[1+3*i] - o:
            p = (l[2+3*i])
 
    return p

def test(sensor):
    return sensor.hsv()
 
Zuletzt bearbeitet:

grawuli

Urgestein
Registriert
2 Mai 2018
Beiträge
1.524
Ort
Minga
Hallo Chris,

so wie es aussieht ist die Farbe Weiß für die Wendemarken (aus meiner Sicht die wichtigste Funktion für den Modus automatic) nicht wirklich geeignet.

Auswertung für HSV-Farben 2025-07-04 um 16.52.13.png

Weiß liefert einfach nur schlechte Werte. Wenn ich die "Lok" mit der Hand bewege, wird die Farbe nicht erkannt. Selbst im Stillstand werden nicht alle Messungen richtig erkannt.

Rot ist etwas besser, aber auch nicht gut. Wird aber für den Modus automatic nicht wirklich benötigt.

Gelb liefert gute Werte. Gute Werte liefern auch Orange und Dark Azure, konnte ich aber nur im Stand testen.

Du/ihr solltet die Farben für die Funktionen noch mal überdenken.

Eventuell auch eigene Farben, fern von Lego, verwenden.

Peter aka @GBCPeter > Wie sieht es mit deinen Erfahrungen mit der Feldbahn aus.
 

GBCPeter

Herr der Bälle
Teammitglied
Registriert
21 Apr. 2012
Beiträge
3.552
Ort
Wuppertal
@grawuli Hallo Markus
Ich habe Die Farben Rot für Stop und Grün für die Fahrbefehle genommen. Funktioniert im Testbetrieb bis Dato gut, muss aber noch den Ausstellungsbetrieb abwarten und Testen. Kann aber daran liegen, das ich dafür den Prime Hub aus dem 50515 Set genommen habe. Der hat ja einen eingebauten Lipo und ist daher gegen Spannungschwankungen nicht empfänglich.

mfg GBCPeter
 

Functional Technic

Urgestein
Registriert
21 März 2017
Beiträge
830
so wie es aussieht ist die Farbe Weiß für die Wendemarken (aus meiner Sicht die wichtigste Funktion für den Modus automatic) nicht wirklich geeignet.
ja, weiss eignet sich nicht.

ich meinte folgenden Code von @Lok24, welchen ich angepasst habe.

from pybricks.hubs import CityHub
from pybricks.pupdevices import DCMotor, Light
from pybricks.parameters import Button, Color, Direction, Port, Side, Stop
from pybricks.robotics import DriveBase
from pybricks.tools import wait, StopWatch
from pybricks.pupdevices import ColorSensor
from pybricks.parameters import Port, Color
from pybricks.tools import wait
hub_t1 = CityHub()
hub_t1 = CityHub(broadcast_channel=1)
hub_t1 = CityHub(observe_channels=[4])
#trainmotor = DCMotor(Port.A)
sensor = ColorSensor(Port.:cool1:
hgr1 = 180 # Grey h1
hgr2 = 215 # Grey h2
vgr1 = 60 # Grey v1
sgr1 = 30 # Grey s1
hr1 = 340 # Red h1
hr2 = 370 # Red h2
vr1 = 45 # Red v1
sr1 = 60 # Red s1
hy1 = 40 # Yellow h1
hy2 = 70 # Yellow h2
vy1 = 70 # Yellow v1
sy1 = 35 # Yellow s1
hb1 = 200 # Blue h1
hb2 = 230 # Blue h2
vb1 = 30 # Blue v1
sb1 = 70 # Blue s1
hg1 = 135 # Green h1
hg2 = 170 # Green h2
vg1 = 45 # Green v1
ho1 = 0 # Orange h1
ho2 = 15 # Orange h2
vo1 = 70 # Orange v1
hv1 = 235 # Violet h1
hv2 = 250 # Violet h2
vv1 = 35 # Violet v1
vv2 = 70 # Violet v2
sv1 = 40 # Violet s1
while True:
color = sensor.hsv()
h = color.h
v = color.v
s = color.s
p ="--"
if h > hgr1 and h < hgr2 and v > vgr1 and s < sgr1: p = "grey"
if h > hr1 and h < hr2 and v > vr1 and s > sr1 :p ="red"
if h > hy1 and h < hy2 and v > vy1 and s > sy1 :p = "yellow"
if h > hb1 and h < hb2 and v > vb1 and s > sb1 :p = "blue"
if h > hg1 and h < hg2 and v > vg1 :p ="green"
if h > ho1 and h < ho2 and v > vo1: p = "orange"
if h > hv1 and h < hv2 and v > vv1 and v < vv2 and s > sv1: p = "violet"
#trainmotor.dc(20)
print(p, color)
wait(100)


Aber ich nehme an, dass @grawuli schon sowas verwendet, um die Tabelle mit den HSV-Werten zu erstellen.
 
Oben