error: 'class Temperature' has no member named 'temp_bed'

Oprogramowanie sterownika drukarki i do łączenia komputera z drukarką
DesertCamo
Konto z ograniczeniami
Postów w temacie: 6
Posty: 6
Rejestracja: 20 cze 2020, 09:16

error: 'class Temperature' has no member named 'temp_bed'

Post autor: DesertCamo »

Cześć :wave: .
Na wstępie napiszę, że jestem świeżak :sorry: Niedawno zacząłem upgrade mojej starej drukarki 3D od Omni3D model Architect i pojawił się problem, którego nie umiem przeskoczyć. Mianowicie, przy kompilacji wyskakuje błąd:

Marlin\src\lcd\menu\menu_temperature.cpp: In function 'void menu_temperature()':

Marlin\src\lcd\menu\menu_temperature.cpp:288:26: error: 'class Temperature' has no member named 'temp_bed'

if (thermalManager.temp_bed.target) has_heat = false;

^

*** [.pio\build\mega2560\src\src\lcd\menu\menu_temperature.cpp.o] Error 1

Oczywiście jeśli pozbędę się lcd z oprogramowania to błąd znika.

Upgrade polegał na instalacji wyświetlacza z czytnikiem SD RepRapDiscount Full Graphic Smart Controller.
Konfiguarcja drukarki:

-arduino mega 2560 + ramps 1.4 + rozszerzenie do grzanego stołu
-2 głowice
-wentylaror do chłodzenia druku
-RepRapDiscount Full Graphic Smart Controller

Hotend0 wpięty pod pin D10, hotend1 pin D9, wentylator pin D8, stół pin D4

Firmware który próbuję zainstalować to marlin 2.0.5.3. Wcześniej wgrałem repetiera i wszystko działa bez problemu, ale jakoś nie leży mi ten firmware.
Awatar użytkownika
Olson
Postów w temacie: 1
Posty: 236
Rejestracja: 06 gru 2017, 05:20
Lokalizacja: Gdańsk
Drukarka: OCHC CoreXY DIY
x 99

Re: error: 'class Temperature' has no member named 'temp_bed'

Post autor: Olson »

Jaką płytę masz podaną w configu ? RAMPS_14_EEF ? Jeśli tak to spróbuj RAMPS_14_EEB
DesertCamo
Konto z ograniczeniami
Postów w temacie: 6
Posty: 6
Rejestracja: 20 cze 2020, 09:16

Re: error: 'class Temperature' has no member named 'temp_bed'

Post autor: DesertCamo »

Płyta ustawiona na EEF

Na EEB już leci taka litania:

In file included from Marlin\src\inc/../pins/pins.h:73:0,

from Marlin\src\inc/MarlinConfig.h:32,

from Marlin\src\MarlinCore.h:24,

from Marlin\src\MarlinCore.cpp:31:

Marlin\src\MarlinCore.cpp: In function 'bool pin_is_protected(pin_t)':

Marlin\src\inc/../pins/ramps/pins_RAMPS.h:220:37: error: 'RAMPS_D4_PIN' was not declared in this scope

#define HEATER_BED_PIN RAMPS_D4_PIN

^

Marlin\src\pins/sensitive_pins.h:437:21: note: in expansion of macro 'HEATER_BED_PIN'

#define _BED_PINS HEATER_BED_PIN, analogInputToDigitalPin(TEMP_BED_PIN),

^

Marlin\src\pins/sensitive_pins.h:650:75: note: in expansion of macro '_BED_PINS'

_E0_PINS _E1_PINS _E2_PINS _E3_PINS _E4_PINS _E5_PINS _E6_PINS _E7_PINS _BED_PINS \

^

Marlin\src\MarlinCore.cpp:294:49: note: in expansion of macro 'SENSITIVE_PINS'

static const pin_t sensitive_pins[] PROGMEM = SENSITIVE_PINS;

^

Compiling .pio\build\mega2560\src\src\feature\bedlevel\mbl\mesh_bed_leveling.cpp.o

Compiling .pio\build\mega2560\src\src\feature\bedlevel\ubl\ubl.cpp.o

*** [.pio\build\mega2560\src\src\MarlinCore.cpp.o] Error 1
Awatar użytkownika
Cosik
Konto z ograniczeniami
Postów w temacie: 1
Posty: 907
Rejestracja: 09 gru 2017, 10:12
Lokalizacja: Wrocław
Drukarka: HEVO DC, Mikrus
x 281
Kontakt:

Re: error: 'class Temperature' has no member named 'temp_bed'

Post autor: Cosik »

Podeślij plik z configiem. Wiesz co oznacza EEB? - Extruder Extruder Bed. I podaj jaką masz tam płytkę sterującą dokładnie i jak podpiętą.
Wolność wariacie w swoim warsztacie...
HEVO DC - wciąż wiele pomysłów na usprawnienia :D
Mikrus - moje szaleństwo -> viewtopic.php?f=10&t=6880
Moje projekty 3D

https://discord.gg/cBYzhm2 -> RepRapy PL
Awatar użytkownika
JGFTW
Drukarz
Postów w temacie: 1
Posty: 1294
Rejestracja: 14 sie 2019, 05:19
Lokalizacja: Wrocław
Drukarka: DIY Prusa Bear
x 701

Re: error: 'class Temperature' has no member named 'temp_bed'

Post autor: JGFTW »

Napisało Ci, gdzie przerwała się kompilacja, ale tam rozwiązania nie znajdziesz.

Kod: Zaznacz cały

Marlin\src\lcd\menu\menu_temperature.cpp:288:26: error: 'class Temperature' has no member named 'temp_bed'

if (thermalManager.temp_bed.target) has_heat = false;


U mnie ten fragment wygląda tak:

Kod: Zaznacz cały

    //
    // Cooldown
    //
    bool has_heat = false;
    HOTEND_LOOP() if (thermalManager.temp_hotend[HOTEND_INDEX].target) { has_heat = true; break; }
    #if HAS_TEMP_BED
      if (thermalManager.temp_bed.target) has_heat = true;
    #endif
    if (has_heat) ACTION_ITEM(MSG_COOLDOWN, lcd_cooldown);

  #endif // HAS_TEMP_HOTEND
Zmieniałeś tego boola na false, nie? ;)
Niepotrzebnie, bo cała afera dotyczy stołu.

Jak ustawisz płytę na MOTHERBOARD BOARD_RAMPS_14_EEB tak jak kolega olson napisał to powinno zadziałać - u mnie przynajmniej się udało.

Więc jak nie grzebałeś w pins_RAMPS.h to powinno się chociaż skompilować.


Nie rozwiązuję Ci to problemu z podłączeniem elementów wykonawczych. Taka konfiguracja (EEB), która się kompiluję ma podłączony stół do D8, a nie wentylator.

Co masz na myśli pisząc "rozszerzenie do grzanego stołu"?
Chodzi Ci o jakiś zewnętrzny moduł mosfet? Masz taki jeszcze jeden?

Jakbyś zamienił miejscami podłączenie stołu i wentylatora na jakimś module typu mosfet albo IRF520 to sprawa byłaby załatwiona.

W pliku pins_RAMPS.h (domyślnie) jest taki fragment:

Kod: Zaznacz cały

#elif ENABLED(IS_RAMPS_EEB)                     // Hotend, Hotend, Bed
    #define FAN_PIN                            4  // IO pin. Buffer needed


Nic nie musiałbyś zmieniać podłączając wentylator (z modułem) do pinu D4.
DesertCamo
DesertCamo
Konto z ograniczeniami
Postów w temacie: 6
Posty: 6
Rejestracja: 20 cze 2020, 09:16

Re: error: 'class Temperature' has no member named 'temp_bed'

Post autor: DesertCamo »

Tak wiem co to oznacza. Z góry założyłem, że powinno być EEF, ponieważ tak poszło w Repetierze i tak mam podpięte w płycie :unknown: .
Płytka to Arduino Mega 2560 (tyle z niej wyczytałem), na tym Ramps 1.4.
Załączniki
Beznazwy-1.jpg
Configuration.h
(80.56 KiB) Pobrany 123 razy
DesertCamo
Konto z ograniczeniami
Postów w temacie: 6
Posty: 6
Rejestracja: 20 cze 2020, 09:16

Re: error: 'class Temperature' has no member named 'temp_bed'

Post autor: DesertCamo »

JGFTW pisze:Napisało Ci, gdzie przerwała się kompilacja, ale tam rozwiązania nie znajdziesz.

Kod: Zaznacz cały

Marlin\src\lcd\menu\menu_temperature.cpp:288:26: error: 'class Temperature' has no member named 'temp_bed'

if (thermalManager.temp_bed.target) has_heat = false;


U mnie ten fragment wygląda tak:

Kod: Zaznacz cały

    //
    // Cooldown
    //
    bool has_heat = false;
    HOTEND_LOOP() if (thermalManager.temp_hotend[HOTEND_INDEX].target) { has_heat = true; break; }
    #if HAS_TEMP_BED
      if (thermalManager.temp_bed.target) has_heat = true;
    #endif
    if (has_heat) ACTION_ITEM(MSG_COOLDOWN, lcd_cooldown);

  #endif // HAS_TEMP_HOTEND
Zmieniałeś tego boola na false, nie? ;)
Niepotrzebnie, bo cała afera dotyczy stołu.

Jak ustawisz płytę na MOTHERBOARD BOARD_RAMPS_14_EEB tak jak kolega olson napisał to powinno zadziałać - u mnie przynajmniej się udało.

Więc jak nie grzebałeś w pins_RAMPS.h to powinno się chociaż skompilować.


Nie rozwiązuję Ci to problemu z podłączeniem elementów wykonawczych. Taka konfiguracja (EEB), która się kompiluję ma podłączony stół do D8, a nie wentylator.

Co masz na myśli pisząc "rozszerzenie do grzanego stołu"?
Chodzi Ci o jakiś zewnętrzny moduł mosfet? Masz taki jeszcze jeden?

Jakbyś zamienił miejscami podłączenie stołu i wentylatora na jakimś module typu mosfet albo IRF520 to sprawa byłaby załatwiona.

W pliku pins_RAMPS.h (domyślnie) jest taki fragment:

Kod: Zaznacz cały

#elif ENABLED(IS_RAMPS_EEB)                     // Hotend, Hotend, Bed
    #define FAN_PIN                            4  // IO pin. Buffer needed


Nic nie musiałbyś zmieniać podłączając wentylator (z modułem) do pinu D4.
Najwyżej tak będe musiał zrobić, aczkolwiek wcześniej działało na marilinie 1.0.x. Ale może czas w końcu to zrobić po Bożemu :)
DesertCamo
Konto z ograniczeniami
Postów w temacie: 6
Posty: 6
Rejestracja: 20 cze 2020, 09:16

Re: error: 'class Temperature' has no member named 'temp_bed'

Post autor: DesertCamo »

A mogą być jakieś problemy z podpięciem dwóch mat grzewczych pod pin D8?
DesertCamo
Konto z ograniczeniami
Postów w temacie: 6
Posty: 6
Rejestracja: 20 cze 2020, 09:16

Re: error: 'class Temperature' has no member named 'temp_bed'

Post autor: DesertCamo »

Piszę dla potomnych, którzy mogą mieć podobny problem.

Zrobiłem tak jak pisaliście i wszystko działa jak należy. Wywaliłem te 2 mosfety, (swoją drogą niezła lepianka tam była i jeszcze płytki z podpisem Omni3D :fool: ) stół podłączyłem pod D8, a wiatrak pójdzie pod zamówiony już IRF520 na pin D4. Marlin ustawiony na płytę Ramps 1.4 EEB.

Okazało się jeszcze, że jeden przewód plusowy nie był podpięty pod wejście 11A+, dlatego też po wpięciu grzałek pod D8 początkowo nie działało. Szybka diagnoza, lutowanie i śmiga jak marzenie.

Dzięki za fachową pomoc :git:
ODPOWIEDZ

Wróć do „Firmware'y i hosty”