Klipper Firmware

Oprogramowanie sterownika drukarki i do łączenia komputera z drukarką
Awatar użytkownika
atom1477
Postów w temacie: 39
Posty: 814
Rejestracja: 17 paź 2023, 18:21
x 173

Re: Klipper Firmware

Post autor: atom1477 »

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ć.
Awatar użytkownika
Jarewa
Drukarz
Postów w temacie: 15
Posty: 2082
Rejestracja: 26 sty 2021, 22:16
Lokalizacja: Głogów
x 496

Re: Klipper Firmware

Post autor: Jarewa »

Po 15 bo nie mam w tej chwili dostępu do swojej konfiguracji
Awatar użytkownika
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

Post autor: cyfron »

Nie wiem co chcesz osiągnąć. Może wystarczy napisać rozszerzenie w Python'ie z nową komendą?
Awatar użytkownika
atom1477
Postów w temacie: 39
Posty: 814
Rejestracja: 17 paź 2023, 18:21
x 173

Re: Klipper Firmware

Post autor: atom1477 »

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.
Awatar użytkownika
Jarewa
Drukarz
Postów w temacie: 15
Posty: 2082
Rejestracja: 26 sty 2021, 22:16
Lokalizacja: Głogów
x 496

Re: Klipper Firmware

Post autor: Jarewa »

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"

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
Awatar użytkownika
atom1477
Postów w temacie: 39
Posty: 814
Rejestracja: 17 paź 2023, 18:21
x 173

Re: Klipper Firmware

Post autor: atom1477 »

Dzięki. Ale muszę powiedzieć że nie wygląda to zachęcająco. No nic, jakoś sobie będę radził.
rzorzo1
Postów w temacie: 1
Posty: 44
Rejestracja: 25 lut 2024, 13:37
x 4

Re: Klipper Firmware

Post autor: rzorzo1 »

atom1477 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ę?
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 instalacja
Awatar użytkownika
Jarewa
Drukarz
Postów w temacie: 15
Posty: 2082
Rejestracja: 26 sty 2021, 22:16
Lokalizacja: Głogów
x 496

Re: Klipper Firmware

Post autor: Jarewa »

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.
mie3yslav
Postów w temacie: 8
Posty: 132
Rejestracja: 05 cze 2018, 21:13
x 18

Re: Klipper Firmware

Post autor: mie3yslav »

atom1477 pisze: 03 gru 2024, 13:08 .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.
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 %}

i M808 działa - sprawdzone.
Awatar użytkownika
atom1477
Postów w temacie: 39
Posty: 814
Rejestracja: 17 paź 2023, 18:21
x 173

Re: Klipper Firmware

Post autor: atom1477 »

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).
ODPOWIEDZ

Wróć do „Firmware'y i hosty”