Klipper Firmware
Re: Klipper Firmware
Możesz podać przykład jak wykonać to delayed macoro tak żeby było kilka powtórzeń?
Ta 1 ms mi nie będzie przeszkadzać.
Ta 1 ms mi nie będzie przeszkadzać.
- cyfron
- Postów w temacie: 37
- Posty: 1508
- Rejestracja: 30 sty 2019, 09:28
- Lokalizacja: lubuskie
- Drukarka: na razie 7 sztuk :)
- x 446
Re: Klipper Firmware
Nie wiem co chcesz osiągnąć. Może wystarczy napisać rozszerzenie w Python'ie z nową komendą?
Re: Klipper Firmware
Chcę mieć procedurkę (podprogram, makro, jak zwał tak zwał) która wygeneruje wierszowanie dla podanych współrzędnych.
Np. od X0Y0 do X200Y200, z krokiem co 0.5 mm. Czyli 400 przejazdów obok siebie. Powiedzmy że to taka pierwsza warstwa, ale z moimi udziwnieniami.
Chodzi o to że testuję niekonwencjonalne drukowanie, w taki sposób w jaki żaden slicer mi tego nie wygeneruje. Więc robię g-cody z palca.
Na razie sobie poradziłem wklejając 400 razy kod mojej jednej linii (do pliku). Ale wolałbym wpisać:
"M808 L400", oczywiście w wersji kompatybilnej z Klipperem.
Np. od X0Y0 do X200Y200, z krokiem co 0.5 mm. Czyli 400 przejazdów obok siebie. Powiedzmy że to taka pierwsza warstwa, ale z moimi udziwnieniami.
Chodzi o to że testuję niekonwencjonalne drukowanie, w taki sposób w jaki żaden slicer mi tego nie wygeneruje. Więc robię g-cody z palca.
Na razie sobie poradziłem wklejając 400 razy kod mojej jednej linii (do pliku). Ale wolałbym wpisać:
"M808 L400", oczywiście w wersji kompatybilnej z Klipperem.
- Jarewa
- Drukarz
- Postów w temacie: 15
- Posty: 2082
- Rejestracja: 26 sty 2021, 22:16
- Lokalizacja: Głogów
- x 496
Re: Klipper Firmware
Wycinek z pliku może dojdziesz co i jak zrobiona "pętla" by powtarzać insert/out, insert z uzależnieniem czujników i to nawet z przerwaniem "counter_out" jakby "for"
W skrócie to masz tak
Kod: Zaznacz cały
[gcode_macro Home_E0]
variable_counter: 0 # Inicjalizacja zmiennej licznika
gcode:
{% set extruder_tool = printer["gcode_macro _TOOL_CHANGE"].get("extruder_tool", 0) %}
SET_GCODE_VARIABLE MACRO=Home_E0 VARIABLE=counter VALUE=0
{% if (extruder_tool|int)%2 == 1 %}
{% if printer["gcode_button OPT_E0"].state == "PRESSED" %}
UPDATE_DELAYED_GCODE ID=Out_E0 DURATION=0.1
{% else %}
UPDATE_DELAYED_GCODE ID=Insert_E0 DURATION=0.1
{% endif %}
{% else %}
{% if ((extruder_tool|int)//2)%2 == 1 %}
M118 Aktywny extruder E{(extruder_tool)-1}
{% else %}
M118 Brak aktywnego extrudera
{% endif %}
{% endif %}
[delayed_gcode Insert_E0]
gcode:
{% set movement_length = 0.5 %}
{% set feedrate = 600 %}
{% set duration = ((movement_length / feedrate) * 60) %} # Przeliczony czas w sekundach
{% set counter_out = 35 %} # dystans w mm pokonania filamentu radelko/czujnik
{% set counter = printer["gcode_macro Home_E0"].get("counter", 0) %}
{% if counter < counter_out and printer["gcode_button OPT_E0"].state != "PRESSED" %} #RELEASED
M83
G1 E{ movement_length } F{ feedrate }
G4 P{ duration }
SET_GCODE_VARIABLE MACRO=Home_E0 VARIABLE=counter VALUE={counter + 1}
UPDATE_DELAYED_GCODE ID=Insert_E0 DURATION={ duration }
{% elif counter >= counter_out %}
M118 Brak filanamentu E0
{% else %}
UPDATE_DELAYED_GCODE ID=Out_Low_E0 DURATION={ duration }
{% endif %}
[delayed_gcode Out_E0]
gcode:
{% set movement_length = 0.5 %}
{% set feedrate = 600 %}
{% set duration = ((movement_length / feedrate) * 60) %}
{% if printer["gcode_button OPT_E0"].state == "PRESSED" %}
M83
G1 E-{ movement_length } F{ feedrate }
G4 P{ duration }
UPDATE_DELAYED_GCODE ID=Out_E0 DURATION={ duration }
{% else %}
UPDATE_DELAYED_GCODE ID=Insert_E0 DURATION={ duration }
{% endif %}
[delayed_gcode Out_Low_E0]
gcode:
{% set movement_length = 0.1 %}
{% set feedrate = 40 %}
{% set duration = ((movement_length / feedrate) * 60) %}
{% if printer["gcode_button OPT_E0"].state == "PRESSED" %}
M83
G1 E-{ movement_length } F{ feedrate }
G4 P{ duration }
UPDATE_DELAYED_GCODE ID=Out_Low_E0 DURATION={ duration }
{% else %}
M118 Home E0: OK
{% endif %}
W skrócie to masz tak
Kod: Zaznacz cały
[delayed_gcode]¶
Execute a gcode on a set delay. See the command template guide and command reference for more information.
[delayed_gcode my_delayed_gcode]
gcode:
# A list of G-Code commands to execute when the delay duration has
# elapsed. G-Code templates are supported. This parameter must be
# provided.
#initial_duration: 0.0
# The duration of the initial delay (in seconds). If set to a
# non-zero value the delayed_gcode will execute the specified number
# of seconds after the printer enters the "ready" state. This can be
# useful for initialization procedures or a repeating delayed_gcode.
# If set to 0 the delayed_gcode will not execute on startup.
# Default is 0.
atom1477
Re: Klipper Firmware
Dzięki. Ale muszę powiedzieć że nie wygląda to zachęcająco. No nic, jakoś sobie będę radził.
Re: Klipper Firmware
U mnie binarny miał tyle samo 26kb i działa normalnie, też mam octopusaz STM 446. Na większość fleshowaych płyt tyle ma zazwyczaj waży binarny. Przy instalowaniu firmware w octopusie trzeba odłączyć grzałki bo nie chce załadować pliku jakiś a czemu to nie wiem ale wiem że to mi pomogło. Włożyć micro sd z firmware.bin , przytrzymać reset i podpiąć USB no i najważniejsze zworka żeby nie zapomnieć założyć przed instalacjaatom1477 pisze: ↑25 mar 2024, 12:03 Takie szybkie pytanie:
Czy to normalne że binarka Klippera do wgrania na STM43F429 ma tylko 26 KB?
W wielu poradnikach taką widać:
24 KB.jpg
Tu akurat ma 24 KB dla STM32F103, ale mi dla F429 wychodzi 26 KB (kompiluję z Mainsail-a).
To podejrzanie mało.
No i jak wgram to na płytę BTT OCTOPUS, to oczywiście nie działa. Nawet rezonator kwarcowy nie startuje (sprawdzam oscyloskopem).
Za to jak wgram jakiś swój własny program, to procesor działa. A więc na pewno nie jest to wina uszkodzonego procesora.
Podejrzewam że to wcale nie jest binarka Klippera, tylko sam bootloader.
Jeżeli tak to pytanie gdzie znajdę prawdziwą binarkę?
- Jarewa
- Drukarz
- Postów w temacie: 15
- Posty: 2082
- Rejestracja: 26 sty 2021, 22:16
- Lokalizacja: Głogów
- x 496
Re: Klipper Firmware
Zworka i reset tyczy się zasilenia płyty przez USB. Jak binarka z karty sd "firmware.bin" to działa od strzała bez kombinowania. Kombinować trzeba dopiero jak wgrywamy przez usb.
Re: Klipper Firmware
Można dodać w config-u:
Kod: Zaznacz cały
[sdcard_loop]
[gcode_macro M808]
gcode:
{% if params.K is not defined and params.L is defined %}SDCARD_LOOP_BEGIN COUNT={params.L|int}{% endif %}
{% if params.K is not defined and params.L is not defined %}SDCARD_LOOP_END{% endif %}
{% if params.K is defined and params.L is not defined %}SDCARD_LOOP_DESIST{% endif %}
Re: Klipper Firmware
Właśnie tak zrobiłem i nie działało.
Bezpośrednie komendy SDCARD_LOOP_BEGIN i SDCARD_LOOP_END też nie.
Żadnego błędu nie wywalało, tylko po prostu ignorowało pętlę (wykonywało wnętrze pętli tylko raz).
Bezpośrednie komendy SDCARD_LOOP_BEGIN i SDCARD_LOOP_END też nie.
Żadnego błędu nie wywalało, tylko po prostu ignorowało pętlę (wykonywało wnętrze pętli tylko raz).