Hallo Zusammen,
ich habe mich die letzten Wochen intensiver mit pyBricks beschäftigt und möchte hier meine Programme in lockerer Folge vorstellen.
Für die Programmierung und den Download der Programme auf einen PU-Hub verwende ich Visual Studio Code von Microsoft, da diese IDE einfach mehr Funktionen für die Bearbeitung mehrerer Module bereit stellt. Die Web-App von pyBricks verwende ich zum Laden der Firmware und zum testen.
Wie man Visual Studio Code für die Benutzung mit pyBricks einrichtet > Klick mich
Der Download von Programmen auf einen TechnicHub macht noch Probleme > Klick mich Hier muss man einfach stur bleiben und den Download immer wieder anstossen.

Als erstes ein Programm zur Steuerung von maximal 4 Motoren an einem PU-Hub.
In dem Programm verwende ich Routinen aus der Dokumentation von pyBricks.
- Remote > Namen vergeben, LED-Farbe setzen, gedrückten Button ermitteln > Klick mich
- Hub mit Remote verbinden > Klick mich
- Angeschlossene Motoren überprüfen, Parameter > Klick mich
Die Funktionen/Klassen/Variablen sind in Module aufgeteilt um das steuernde Modul übersichtlicher zu halten.
- Steuerung > main_technichub_with_4_engines.py > Keine Änderung notwendig
- Programm initialisieren > myCfgProgramm.py
Änderungen sind eventuell in der Funktion _create_devices notwendig:
Die Bedeutung der Parameter kann der Dokumention auf der pyBricks-Seite nachgelesen werden.
- Klasse DCMotor
- Klasse Motor
Werden weniger als 4 Motoren angeschlossen, muss die Variable _cnt_devices entsprechend angepasst werden.
Werden weniger als 4 Motoren angeschlossen, müssen die Parameter device_1 bis device_4 entsprechend entfernt werden.
- Klassen > myClasses.py > Keine Änderung notwendig
- Modulübergreifende Definitionen > myGlobals.py
Block > Gültige Buttons
In diesem Block werden die benutzten Buttons definiert.
Da ich schon immer mit der linken Hand die Geschwindigkeit für RC-Modelle reguliere, habe ich auch hier die linken Buttons definiert.
- Geschwindigkeit erhöhen > linker Plus-Button
- Geschwindigkeit verringern > linker Minus-Button
- Richtung ändern > linker Button (rot)
Wenn irgendetwas schief geht, kann mit dem grünen Button das Modell gestoppt werden.
Wird der grüne Button ein zweitesmal gedrückt, wird das Programm beendet.
Die Buttons können hier nach belieben geändert werden. Ein Button darf nur einmal vergeben werden.
Block > Farben für Hub/Remote
Die Farben sollen dem Anwender ein Feedback geben, welche Taste zuletzt gedrückt wurde.
Block > Remote definieren
Damit sich das Programm immer mit der richtigen Fernsteuerung verbindet, sucht es nach einer Fernsteuerung mit dem Namen MBr_Rmt_1. Gerade bei Ausstellungen wichtig, aber auch zu Hause, wenn mehrere Modelle gleichzeitig bewegt werden sollen. Die nächsten beiden Einstellungen werden für den Parameter time_out verwendet.
Block > Einstellungen für die Motoren
Die Einstellungen für die Motoren sind abhängig vom benutzten Modell und den eingesetzten Motoren und der verwendeten Parameter.
Block > Variablen, die während der Laufzeit geändert werden
In diesem Block sollten keine Änderungen gemacht.
Bei Fehlern in der Definition gibt es entsprechende Hinweise.

Der Kontakt zu Remote MBr_Rmt_1 hat nicht geklappt

Meldungen, wenn alles ok ist/war.
Keine Angst, nicht alle Meldungen und Kommentare sind in der Sprache meiner Eltern. Alle Doc-Strings sind in der ersten Fremdsprache, die ich gelernt habe, verfasst.
Im Anhang ist das Programm zu finden.
Und jetzt viel Spass beim Erforschen des Programmes.
Im nächsten Programm dreht sich alles um LEDs und wie die aktuellen Einstellungen im Hub-Speicher abgelegt werden und beim nächsten Start des Programms die LEDs wieder eingeschaltet werden.
ich habe mich die letzten Wochen intensiver mit pyBricks beschäftigt und möchte hier meine Programme in lockerer Folge vorstellen.
Für die Programmierung und den Download der Programme auf einen PU-Hub verwende ich Visual Studio Code von Microsoft, da diese IDE einfach mehr Funktionen für die Bearbeitung mehrerer Module bereit stellt. Die Web-App von pyBricks verwende ich zum Laden der Firmware und zum testen.
Wie man Visual Studio Code für die Benutzung mit pyBricks einrichtet > Klick mich
Der Download von Programmen auf einen TechnicHub macht noch Probleme > Klick mich Hier muss man einfach stur bleiben und den Download immer wieder anstossen.

Als erstes ein Programm zur Steuerung von maximal 4 Motoren an einem PU-Hub.
In dem Programm verwende ich Routinen aus der Dokumentation von pyBricks.
- Remote > Namen vergeben, LED-Farbe setzen, gedrückten Button ermitteln > Klick mich
- Hub mit Remote verbinden > Klick mich
- Angeschlossene Motoren überprüfen, Parameter > Klick mich
Die Funktionen/Klassen/Variablen sind in Module aufgeteilt um das steuernde Modul übersichtlicher zu halten.
- Steuerung > main_technichub_with_4_engines.py > Keine Änderung notwendig
- Programm initialisieren > myCfgProgramm.py
Änderungen sind eventuell in der Funktion _create_devices notwendig:
Code:
# Attribute für Motoren definieren
# Erlaubt sind Motoren mit
# - gleicher Übersetzung ins Langsame oder Schnelle und
# - vom gleichen Typ
_dict_device_1 = {"port": "A", "direction": "+", "gear": [12, 36], "type": 47}
_dict_device_2 = {"port": "B", "direction": "-", "gear": [12, 36], "type": 47}
_dict_device_3 = {"port": "C", "direction": "-", "gear": [12, 36], "type": 47}
_dict_device_4 = {"port": "D", "direction": "+", "gear": [12, 36], "type": 47}
- Klasse DCMotor
- Klasse Motor
Code:
# Anzahl angeschlossener Motoren
_cnt_devices = 4
Code:
# Instanz erstellen
myGlobals.myModell = myModel(myGlobals.max_steps,
myGlobals.max_speed,
myGlobals.time_4_stop,
device_1 = _dict_device_1,
device_2 = _dict_device_2,
device_3 = _dict_device_3,
device_4 = _dict_device_4)
- Klassen > myClasses.py > Keine Änderung notwendig
- Modulübergreifende Definitionen > myGlobals.py
Block > Gültige Buttons
Code:
# Im Programm benutzte Remote-Buttons
BTN_INCREASE_SPEED = {Button.LEFT_PLUS}
BTN_CHANGE_DIRECTION = {Button.LEFT}
BTN_DECREASE_SPEED = {Button.LEFT_MINUS}
BTN_EMERGENCY = {Button.CENTER}
Da ich schon immer mit der linken Hand die Geschwindigkeit für RC-Modelle reguliere, habe ich auch hier die linken Buttons definiert.
- Geschwindigkeit erhöhen > linker Plus-Button
- Geschwindigkeit verringern > linker Minus-Button
- Richtung ändern > linker Button (rot)
Wenn irgendetwas schief geht, kann mit dem grünen Button das Modell gestoppt werden.
Wird der grüne Button ein zweitesmal gedrückt, wird das Programm beendet.
Die Buttons können hier nach belieben geändert werden. Ein Button darf nur einmal vergeben werden.
Block > Farben für Hub/Remote
Code:
# Farben für Hub-/Remote-LED
COLOR_HUB_DEFAULT = Color.BLUE
COLOR_MAX_SPEED = Color.BLUE
COLOR_MIN_SPEED = Color.BLUE
COLOR_FORWARD = Color.CYAN
COLOR_BACKWARD = Color.VIOLET
COLOR_BTN_NOT_USED = Color.WHITE
COLOR_EMERGENCY = Color.MAGENTA
COLOR_RED_BUTTON = Color.RED
COLOR_BTN_ERROR = Color.ORANGE
COLOR_EVERYTHING_IS_OK = Color.GREEN
Block > Remote definieren
Code:
# Remote
REMOTE_NAME = "MBr_Rmt_1" # = Name des Remote-Controllers
REMOTE_TIME_2_CONNECT = 10000 # = Wartezeit für den 1-ten Versuch in ms
REMOTE_TIME_2_RECONNECT = 5000 # = Wartezeit für den 2-ten Versuch in ms
connect_remote = StopWatch() # = Timer
COLOR_TIMER_COUNTDOWN = Color.MAGENTA # = Farbe wird immer heller
Block > Einstellungen für die Motoren
Code:
# Werte zur Motorsteuerung
max_steps = 20 # = Anzahl Stufen um die maximale Geschwindigkeit zu erreichen
max_speed = 400 # = maximale Geschwindigkeit
time_4_stop = 900 # = Zeitspanne für das normale Anhalten in ms
dsp_speed_4_engines = False # = aktuelle Geschwindigkeit der Motoren anzeigen > True/False
Block > Variablen, die während der Laufzeit geändert werden
Code:
# ###################################################################
# Ab hier bitte nur noch schauen und nichts ändern
# ###################################################################
ERROR = -99999 # = allgemeiner Fehler
# Variablen, die während der Laufzeit geändert werden
myHub = None # = pyBricks-Objekt
myHubName = "" # = Hub-Bezeichnung
myModell = None # = Instanz der Klasse myModel
Remote = None # = pyBricks-Objekt
emergency_btn_pressed = False # = Center-Button wurde gedrückt > alle Motoren sofort stoppen
red_button = False # = Notfall > alles stoppen > Hub ausschalten
forward = True # = Modell fährt vorwärts > True/False
backward = False # = Modell fährt rückwärts > True/False
color_change_direction = Color.BROWN # = Fahrtrichtung an Remote-LED anzeigen
Bei Fehlern in der Definition gibt es entsprechende Hinweise.

Der Kontakt zu Remote MBr_Rmt_1 hat nicht geklappt

Meldungen, wenn alles ok ist/war.
Keine Angst, nicht alle Meldungen und Kommentare sind in der Sprache meiner Eltern. Alle Doc-Strings sind in der ersten Fremdsprache, die ich gelernt habe, verfasst.
Im Anhang ist das Programm zu finden.
Und jetzt viel Spass beim Erforschen des Programmes.
Im nächsten Programm dreht sich alles um LEDs und wie die aktuellen Einstellungen im Hub-Speicher abgelegt werden und beim nächsten Start des Programms die LEDs wieder eingeschaltet werden.