fix ai shit!

This commit is contained in:
Mobkom21 2026-05-12 22:10:13 +02:00
parent e8cedc7de1
commit a98d9ecd54
3 changed files with 39 additions and 80 deletions

View File

@ -12,7 +12,7 @@ from gps_hat import GPS_DATA
from sens_hat import SENS_HAT from sens_hat import SENS_HAT
from selecta_mode import SelectaMode from selecta_mode import SelectaMode
selecta = None # selecta = None
def update_hat_data(): def update_hat_data():
if 0: if 0:
# if gps.get_gps_info(): # if gps.get_gps_info():
@ -166,13 +166,13 @@ if __name__ == "__main__":
sens.led_set_pixel(1, 0, 255, 0, 0) sens.led_set_pixel(1, 0, 255, 0, 0)
# if not gps.enter_sim_pin(): if not gps.enter_sim_pin():
# exit(1) exit(1)
#
# sens.led_set_pixel(2, 0, 255, 0, 0) sens.led_set_pixel(2, 0, 255, 0, 0)
#
# if not gps.LTE_hat_start(): if not gps.LTE_hat_start():
# exit(1) exit(1)
sens.led_set_pixel(3, 0, 255, 0, 0) sens.led_set_pixel(3, 0, 255, 0, 0)
@ -197,10 +197,19 @@ if __name__ == "__main__":
update_hat_data() update_hat_data()
update_timer = time.time() update_timer = time.time()
if selecta is not None:
selecta.update() selecta.update()
run = not sens.detect_long_press() for event in sens.sense.stick.get_events():
if event.direction == "middle":
run = not sens.detect_long_press(event)
if event.direction == "up":
if event.action == "pressed":
print("start selecta_mode")
selecta.activate()
if event.direction == "down":
if event.action == "pressed":
print("stop selecta_mode")
selecta.deactivate()
time.sleep(0.01) time.sleep(0.01)
@ -211,5 +220,5 @@ if __name__ == "__main__":
t.join() # warten bis der thread fertig ist t.join() # warten bis der thread fertig ist
gps.ser.close() gps.ser.close()
client.disconnect() client.disconnect()
# subprocess.run(["sudo", "shutdown", "-h", "0"]) subprocess.run(["sudo", "shutdown", "-h", "0"])
sys.exit(0) sys.exit(0)

View File

@ -14,9 +14,6 @@ Usage from main.py:
... ...
selecta.update() selecta.update()
Controls:
Sense HAT joystick UP -> activate Selecta mode
Sense HAT joystick DOWN -> deactivate Selecta mode
MQTT topics: MQTT topics:
MOBKOM/SELECTA/state MOBKOM/SELECTA/state
@ -124,10 +121,6 @@ class SelectaMode:
self.forward_ready = True self.forward_ready = True
self.forward_neutral_angle = 0.0 self.forward_neutral_angle = 0.0
self._pending_activate = False
self._pending_deactivate = False
self._install_joystick_callbacks()
# ------------------------- # -------------------------
# Setup / subscriptions # Setup / subscriptions
# ------------------------- # -------------------------
@ -140,38 +133,6 @@ class SelectaMode:
for topic in self.mqtt_topics(): for topic in self.mqtt_topics():
c.subscribe(topic) c.subscribe(topic)
def _install_joystick_callbacks(self):
stick = self.sens.stick
# stick = None
#
# # Prefer the SenseHat object inside your wrapper if it exists.
# if hasattr(self.sens, "sense") and hasattr(self.sens.sense, "stick"):
# stick = self.sens.sense.stick
# elif hasattr(self.sens, "stick"):
# stick = self.sens.stick
# else:
# try:
# from sense_hat import SenseHat
# stick = SenseHat().stick
# except Exception as e:
# print("Selecta: joystick callbacks not available:", e)
# return
def on_up(event):
if getattr(event, "action", "pressed") == "pressed":
self._pending_activate = True
def on_down(event):
if getattr(event, "action", "pressed") == "pressed":
self._pending_deactivate = True
try:
stick.direction_up = on_up
stick.direction_down = on_down
print("Selecta: UP aktiviert, DOWN deaktiviert")
except Exception as e:
print("Selecta: could not assign joystick callbacks:", e)
# ------------------------- # -------------------------
# Stock persistence # Stock persistence
# ------------------------- # -------------------------
@ -548,14 +509,6 @@ class SelectaMode:
# Called from main loop # Called from main loop
# ------------------------- # -------------------------
def update(self): def update(self):
if self._pending_activate:
self._pending_activate = False
self.activate()
if self._pending_deactivate:
self._pending_deactivate = False
self.deactivate()
if self.active: if self.active:
self.handle_tilt() self.handle_tilt()
self.render() self.render()

View File

@ -71,13 +71,10 @@ class SENS_HAT:
for x, col in enumerate(row): for x, col in enumerate(row):
self.sense.set_pixel(x, y, col[0], col[1], col[2]) self.sense.set_pixel(x, y, col[0], col[1], col[2])
def detect_long_press(self): def detect_long_press(self, event):
""" """
Returns True wenn der Taster für 4 Sekunden gedrückt werde. Returns True wenn der Taster für 4 Sekunden gedrückt werde.
""" """
for event in self.sense.stick.get_events():
if event.direction == "middle":
if event.action == "pressed": if event.action == "pressed":
self.time_down = time.time() self.time_down = time.time()