fix ai shit!
This commit is contained in:
parent
e8cedc7de1
commit
a98d9ecd54
33
src/main.py
33
src/main.py
@ -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)
|
||||||
|
|||||||
@ -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()
|
||||||
|
|||||||
@ -71,37 +71,34 @@ 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.
|
||||||
"""
|
"""
|
||||||
|
if event.action == "pressed":
|
||||||
for event in self.sense.stick.get_events():
|
self.time_down = time.time()
|
||||||
if event.direction == "middle":
|
|
||||||
if event.action == "pressed":
|
|
||||||
self.time_down = time.time()
|
|
||||||
|
|
||||||
|
|
||||||
if event.action == "released":
|
if event.action == "released":
|
||||||
self.time_down = time.time()
|
self.time_down = time.time()
|
||||||
self.led_restore_matrix()
|
self.led_restore_matrix()
|
||||||
|
|
||||||
|
|
||||||
if self.time_down + 0.5 < time.time():
|
if self.time_down + 0.5 < time.time():
|
||||||
self.sense.clear()
|
self.sense.clear()
|
||||||
|
|
||||||
button_down_time = time.time() - self.time_down
|
button_down_time = time.time() - self.time_down
|
||||||
if button_down_time >= 4:
|
if button_down_time >= 4:
|
||||||
print("shutdown")
|
print("shutdown")
|
||||||
return True
|
return True
|
||||||
|
|
||||||
if button_down_time <= 7:
|
if button_down_time <= 7:
|
||||||
button_down_time_int = int(button_down_time * 2)
|
button_down_time_int = int(button_down_time * 2)
|
||||||
else:
|
else:
|
||||||
button_down_time_int = 7
|
button_down_time_int = 7
|
||||||
|
|
||||||
for y in range(8 - button_down_time_int):
|
for y in range(8 - button_down_time_int):
|
||||||
self.sense.set_pixel(7, 7 - y, 255, 0, 0)
|
self.sense.set_pixel(7, 7 - y, 255, 0, 0)
|
||||||
return False
|
return False
|
||||||
|
|
||||||
|
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user