Prusa i3 firmware – Marlin met RAMPS board
Marlin met RAMPS board
Prusa i3
Deze pagina beschrijft het backuppen, bijwerken of instellen van de software Marlin voor de 3D printer “Prusa i3”, met behulp van de Arduino IDE.
Mijn “Prusa i3” printerconfiguratie (hardware)
– Frame: Prusa i3 Improved for laser cut (wood)
– Controller: Arduino MEGA + RAMPS 1.4 shield + A4988 drivers.
– Stappenmotor X-as: NEMA 17 / 42BYGHW811 / 2.5A(U) / 1.8deg/step / Tandwiel: GT2-20 tands.
– Stappenmotor Y-as: NEMA 17 / 17HS4401 / 1.7A(U) / 1.8deg/step / Tandwiel: GT2-20 tands.
– Stappenmotors Z-as: NEMA 17 / 42BYGHW811 / 2.5A(U) / 1.8deg/step / Stang: M5.
– Extruder: 1 kleur / Bowden Geetech J-head-23QWS.
– Endstops: Makerbot 1.4.
– Heated Bed: MK2B PCB.
– Temperatuursensoren: Weerstand in glas 100K NTC (3950) 1%.
– Display: RepRapDiscount Smart Controller (LCD 4×20 met draaiknop, buzzer en reset).
Wat heb je nodig?
1) Arduino IDE
2) 3D Printer Firmware – Marlin
Backup maken
Firmware backup
Voordat je begint met het updaten van een (goed werkende) printer, is het verstandig om eerst een backup te maken van de firmware van de Prusa i3, onder het RAMPS bord zit een Arduino MEGA, en backup met avrdude.exe is te maken met het commando:
avrdude.exe -v -c stk500v2 -p m2560 -P COM4 -b 115200 -U flash:r:prusa.hex:i
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 |
avrdude: Version 6.0.1, compiled on Apr 15 2015 at 19:59:58 Copyright (c) 2000-2005 Brian Dean, http://www.bdmicro.com/ Copyright (c) 2007-2009 Joerg Wunsch System wide configuration file is "c:\ArduinoIDE\hardware\tools\avr\bin \avrdude.conf" Using Port : COM4 Using Programmer : stk500v2 Overriding Baud Rate : 115200 AVR Part : ATmega2560 Chip Erase delay : 9000 us PAGEL : PD7 BS2 : PA0 RESET disposition : dedicated RETRY pulse : SCK serial program mode : yes parallel program mode : yes Timeout : 200 StabDelay : 100 CmdexeDelay : 25 SyncLoops : 32 ByteDelay : 0 PollIndex : 3 PollValue : 0x53 Memory Detail : Block Poll Page Polled Memory Type Mode Delay Size Indx Paged Size Size #Pages MinW MaxW ReadBack ----------- ---- ----- ----- ---- ------ ------ ---- ------ ----- ----- --------- eeprom 65 10 8 0 no 4096 8 0 9000 9000 0x00 0x00 flash 65 10 256 0 yes 262144 256 1024 4500 4500 0x00 0x00 lfuse 0 0 0 0 no 1 0 0 9000 9000 0x00 0x00 hfuse 0 0 0 0 no 1 0 0 9000 9000 0x00 0x00 efuse 0 0 0 0 no 1 0 0 9000 9000 0x00 0x00 lock 0 0 0 0 no 1 0 0 9000 9000 0x00 0x00 calibration 0 0 0 0 no 1 0 0 0 0 0x00 0x00 signature 0 0 0 0 no 3 0 0 0 0 0x00 0x00 Programmer Type : STK500V2 Description : Atmel STK500 Version 2.x firmware Programmer Model: AVRISP Hardware Version: 15 Firmware Version Master : 2.10 Vtarget : 0.0 V SCK period : 43.5 us avrdude: AVR device initialized and ready to accept instructions Reading | ################################################## | 100% 0.02s avrdude: Device signature = 0x1e9801 avrdude: safemode: lfuse reads as FF avrdude: safemode: hfuse reads as D8 avrdude: safemode: efuse reads as FF avrdude: reading flash memory: Reading | ################################################## | 100% 31.28s avrdude: writing output file "prusa.hex" avrdude: safemode: lfuse reads as FF avrdude: safemode: hfuse reads as D8 avrdude: safemode: efuse reads as FF avrdude: safemode: Fuses OK (H:FF, E:D8, L:FF) avrdude done. Thank you. c:\ArduinoIDE\hardware\tools\avr\bin> |
Of
avrdude.exe -v -c wiring -p m2560 -P COM4 -b 115200 -U flash:r:prusa.hex:i
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 |
avrdude: Version 6.0.1, compiled on Apr 15 2015 at 19:59:58 Copyright (c) 2000-2005 Brian Dean, http://www.bdmicro.com/ Copyright (c) 2007-2009 Joerg Wunsch System wide configuration file is "f:\ArduinoIDE\hardware\tools\avr\bin\avrdude.conf" Using Port : COM12 Using Programmer : wiring Overriding Baud Rate : 115200 AVR Part : ATmega2560 Chip Erase delay : 9000 us PAGEL : PD7 BS2 : PA0 RESET disposition : dedicated RETRY pulse : SCK serial program mode : yes parallel program mode : yes Timeout : 200 StabDelay : 100 CmdexeDelay : 25 SyncLoops : 32 ByteDelay : 0 PollIndex : 3 PollValue : 0x53 Memory Detail : Block Poll Page Polled Memory Type Mode Delay Size Indx Paged Size Size #Pages MinW MaxW ReadBack ----------- ---- ----- ----- ---- ------ ------ ---- ------ ----- ----- --------- eeprom 65 10 8 0 no 4096 8 0 9000 9000 0x00 0x00 flash 65 10 256 0 yes 262144 256 1024 4500 4500 0x00 0x00 lfuse 0 0 0 0 no 1 0 0 9000 9000 0x00 0x00 hfuse 0 0 0 0 no 1 0 0 9000 9000 0x00 0x00 efuse 0 0 0 0 no 1 0 0 9000 9000 0x00 0x00 lock 0 0 0 0 no 1 0 0 9000 9000 0x00 0x00 calibration 0 0 0 0 no 1 0 0 0 0 0x00 0x00 signature 0 0 0 0 no 3 0 0 0 0 0x00 0x00 Programmer Type : Wiring Description : Wiring Programmer Model: AVRISP Hardware Version: 15 Firmware Version Master : 2.10 Vtarget : 0.0 V SCK period : 43.5 us avrdude: AVR device initialized and ready to accept instructions Reading | ################################################## | 100% 0.03s avrdude: Device signature = 0x1e9801 avrdude: safemode: lfuse reads as 0 avrdude: safemode: hfuse reads as 0 avrdude: safemode: efuse reads as 0 avrdude: reading flash memory: Reading | ################################################## | 100% 34.01s avrdude: writing output file "prusa.hex" avrdude: safemode: lfuse reads as 0 avrdude: safemode: hfuse reads as 0 avrdude: safemode: efuse reads as 0 avrdude: safemode: Fuses OK (H:00, E:00, L:00) avrdude done. Thank you. |
Ps. avrdude is te vinden in: ArduinoIDE\hardware\tools\avr\bin\
(eventueel avrdude.conf uit ArduinoIDE\hardware\tools\avr\etc\ ook hierheen kopiëren)
Eeprom en printer instellingen
Als je bijvoorbeeld het softwarepakket Repetier Host hebt geïnstalleerd doe je er goed aan de printer instellingen en Eeprom instellingen te noteren, hieronder een screen van de instellingen van een goed werkende Prusa i3 “Wood” printer:
Installeren van Marlin
Nadat je ArduinoIDE hebt geïnstalleerd installeer je de “Marlin” folder vanuit het archief “Marlin v1.0.2-1” naar Arduino IDE
Dus de folder “Marlin-1.0.2-1 (2015-05-30).7z\Marlin-1.0.2-1\Marlin” naar “ArduinoIDE\Marlin“.
Start de Firmware op door op Marlin.ino te dubbelklikken, ArduinoIDE wordt dan opgestart, daarin zie je heel veel TAB’s en venstertjes openstaan:
Marlin configureren voor de Prusa i3
Let op: Dit stukje behandeld lang niet alle aspecten en mogelijkheden van de firmware, maar geeft de veranderingen in beeld voor de “Prusa i3” vanuit de standaard Marlin instellingen.
Board selecteren
De meeste instellingen staan in het bestand configuration.h, daar moet je ook het board selecteren in de regels:
1 2 3 4 5 |
// The following define selects which electronics board you have. // Please choose the name from boards.h that matches your setup #ifndef MOTHERBOARD #define MOTHERBOARD BOARD_ULTIMAKER #endif |
Ps. de aanwezige boards voor Marlin kun je vinden in het bestand boards.h
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 |
#define BOARD_GEN7_CUSTOM 10 // Gen7 custom (Alfons3 Version) "https://github.com/Alfons3/Generation_7_Electronics" #define BOARD_GEN7_12 11 // Gen7 v1.1, v1.2 #define BOARD_GEN7_13 12 // Gen7 v1.3 #define BOARD_GEN7_14 13 // Gen7 v1.4 #define BOARD_CHEAPTRONIC 2 // Cheaptronic v1.0 #define BOARD_SETHI 20 // Sethi 3D_1 #define BOARD_RAMPS_OLD 3 // MEGA/RAMPS up to 1.2 #define BOARD_RAMPS_13_EFB 33 // RAMPS 1.3 / 1.4 (Power outputs: Extruder, Fan, Bed) #define BOARD_RAMPS_13_EEB 34 // RAMPS 1.3 / 1.4 (Power outputs: Extruder0, Extruder1, Bed) #define BOARD_RAMPS_13_EFF 35 // RAMPS 1.3 / 1.4 (Power outputs: Extruder, Fan, Fan) #define BOARD_RAMPS_13_EEF 36 // RAMPS 1.3 / 1.4 (Power outputs: Extruder0, Extruder1, Fan) #define BOARD_DUEMILANOVE_328P 4 // Duemilanove w/ ATMega328P pin assignment #define BOARD_GEN6 5 // Gen6 #define BOARD_GEN6_DELUXE 51 // Gen6 deluxe #define BOARD_SANGUINOLOLU_11 6 // Sanguinololu < 1.2 #define BOARD_SANGUINOLOLU_12 62 // Sanguinololu 1.2 and above #define BOARD_MELZI 63 // Melzi #define BOARD_STB_11 64 // STB V1.1 #define BOARD_AZTEEG_X1 65 // Azteeg X1 #define BOARD_MELZI_1284 66 // Melzi with ATmega1284 (MaKr3d version) #define BOARD_AZTEEG_X3 67 // Azteeg X3 #define BOARD_AZTEEG_X3_PRO 68 // Azteeg X3 Pro #define BOARD_ULTIMAKER 7 // Ultimaker #define BOARD_ULTIMAKER_OLD 71 // Ultimaker (Older electronics. Pre 1.5.4. This is rare) #define BOARD_ULTIMAIN_2 72 // Ultimainboard 2.x (Uses TEMP_SENSOR 20) #define BOARD_3DRAG 77 // 3Drag Controller #define BOARD_TEENSYLU 8 // Teensylu #define BOARD_RUMBA 80 // Rumba #define BOARD_PRINTRBOARD 81 // Printrboard (AT90USB1286) #define BOARD_BRAINWAVE 82 // Brainwave (AT90USB646) #define BOARD_SAV_MKI 83 // SAV Mk-I (AT90USB1286) #define BOARD_TEENSY2 84 // Teensy++2.0 (AT90USB1286) - CLI compile: DEFINES=AT90USBxx_TEENSYPP_ASSIGNMENTS HARDWARE_MOTHERBOARD=84 make #define BOARD_GEN3_PLUS 9 // Gen3+ #define BOARD_GEN3_MONOLITHIC 22 // Gen3 Monolithic Electronics #define BOARD_MEGATRONICS 70 // Megatronics #define BOARD_MEGATRONICS_2 701 // Megatronics v2.0 #define BOARD_MEGATRONICS_1 702 // Minitronics v1.0 #define BOARD_OMCA_A 90 // Alpha OMCA board #define BOARD_OMCA 91 // Final OMCA board #define BOARD_RAMBO 301 // Rambo #define BOARD_ELEFU_3 21 // Elefu Ra Board (v3) #define BOARD_5DPRINT 88 // 5DPrint D8 Driver Board #define BOARD_LEAPFROG 999 // Leapfrog |
We kiezen hier voor: BOARD_RAMPS_13_EFB
1 |
#define MOTHERBOARD BOARD_RAMPS_13_EFB |
Naam instellen
Je kan je printer een naam geven, van ongeveer max. 10 karakters, dit doe je op de regel:
// #define CUSTOM_MENDEL_NAME "This Mendel"
Bijvoorbeeld voor de Prusa i3:
#define CUSTOM_MENDEL_NAME "Prusa i3"
Temperatuursensoren instellen
Het volgende stuk in behandeld de temperatuur instellingen:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 |
//=========================================================================== //=============================Thermal Settings ============================ //=========================================================================== // //--NORMAL IS 4.7kohm PULLUP!-- 1kohm pullup can be used on hotend sensor, using correct resistor and table // //// Temperature sensor settings: // -2 is thermocouple with MAX6675 (only for sensor 0) // -1 is thermocouple with AD595 // 0 is not used // 1 is 100k thermistor - best choice for EPCOS 100k (4.7k pullup) // 2 is 200k thermistor - ATC Semitec 204GT-2 (4.7k pullup) // 3 is Mendel-parts thermistor (4.7k pullup) // 4 is 10k thermistor !! do not use it for a hotend. It gives bad resolution at high temp. !! // 5 is 100K thermistor - ATC Semitec 104GT-2 (Used in ParCan & J-Head) (4.7k pullup) // 6 is 100k EPCOS - Not as accurate as table 1 (created using a fluke thermocouple) (4.7k pullup) // 7 is 100k Honeywell thermistor 135-104LAG-J01 (4.7k pullup) // 71 is 100k Honeywell thermistor 135-104LAF-J01 (4.7k pullup) // 8 is 100k 0603 SMD Vishay NTCS0603E3104FXT (4.7k pullup) // 9 is 100k GE Sensing AL03006-58.2K-97-G1 (4.7k pullup) // 10 is 100k RS thermistor 198-961 (4.7k pullup) // 11 is 100k beta 3950 1% thermistor (4.7k pullup) // 12 is 100k 0603 SMD Vishay NTCS0603E3104FXT (4.7k pullup) (calibrated for Makibox hot bed) // 13 is 100k Hisens 3950 1% up to 300°C for hotend "Simple ONE " & "Hotend "All In ONE" // 20 is the PT100 circuit found in the Ultimainboard V2.x // 60 is 100k Maker's Tool Works Kapton Bed Thermistor beta=3950 // // 1k ohm pullup tables - This is not normal, you would have to have changed out your 4.7k for 1k // (but gives greater accuracy and more stable PID) // 51 is 100k thermistor - EPCOS (1k pullup) // 52 is 200k thermistor - ATC Semitec 204GT-2 (1k pullup) // 55 is 100k thermistor - ATC Semitec 104GT-2 (Used in ParCan & J-Head) (1k pullup) // // 1047 is Pt1000 with 4k7 pullup // 1010 is Pt1000 with 1k pullup (non standard) // 147 is Pt100 with 4k7 pullup // 110 is Pt100 with 1k pullup (non standard) |
De gebruikte weerstand in mijn geval voor de extruder en het heated bed is (en de meest gebruikte): weerstand glas 100K NTC (3950):
Dat geeft weerstand optie: 11
1 2 3 4 |
#define TEMP_SENSOR_0 11 #define TEMP_SENSOR_1 0 #define TEMP_SENSOR_2 0 #define TEMP_SENSOR_BED 11 |
Ps. Weet je niet welke je moet hebben, in veel gevallen werkt optie 1 ook.
Maximale temperaturen instellen
In het volgende stukje kun je maximale waarden van de temperaturen instellen:
1 2 3 4 5 6 7 |
// When temperature exceeds max temp, your heater will be switched off. // This feature exists to protect your hotend from overheating accidentally, but *NOT* from thermistor short/failure! // You should use MINTEMP for thermistor short/failure protection. #define HEATER_0_MAXTEMP 275 #define HEATER_1_MAXTEMP 275 #define HEATER_2_MAXTEMP 275 #define BED_MAXTEMP 70 |
In veel gevallen is boven de 230 graden funest voor je extruder systeem, voor mijn extruder: Bowden Geetech J-head-23QWS is 230 graden meer dan voldoende, mijn MK2B heated bed heb ik op 80 graden staand, zelfs voor ABS is dat meer dan genoeg:
1 2 3 4 |
#define HEATER_0_MAXTEMP 230 #define HEATER_1_MAXTEMP 230 #define HEATER_2_MAXTEMP 230 #define BED_MAXTEMP 80 |
Bewegingsrichtingen instellen
In het volgende stukje worden de bewegingsrichtingen behandeld, voor de prusa is dit de volgende instelling:
1 2 3 |
#define INVERT_X_DIR false // for Mendel set to false, for Orca set to true #define INVERT_Y_DIR true // for Mendel set to true, for Orca set to false #define INVERT_Z_DIR false // for Mendel set to false, for Orca set to true |
Maximale printgrensen instellen
Hier heb je een meetlint, rolmaat of duimstok voor nodig, meet de maximale waarden op in mm wat je op het printbed kan printen vanuit het nulpunt gemeten:
Voor mijn Prusa i3 “Wood” is dit:
1 2 3 4 5 6 7 |
// Travel limits after homing #define X_MAX_POS 200 #define X_MIN_POS 0 #define Y_MAX_POS 190 #define Y_MIN_POS 0 #define Z_MAX_POS 150 #define Z_MIN_POS 0 |
Motor stappen en snelheden instellen
Hier heb je een aantal berekeningen voor nodig, zie onder
Formule riem aandrijving (X-as/Y-as):
In veel gevallen is deze voor de X-as hetzelfde als de Y-as, het aantal stappen per unit wordt bepaald door het aantal stappen per omwenteling gedeeld door het aantal tanden van het tandwiel, gedeeld door de riem pitch (afstand tussen de tandjes)
Stappen per unit = Motor stappen per omwenteling / aantal tandwiel tanden / riem pitch
In mijn geval heb ik NEMA 17 stappenmotors met 1,8 graad per rotatie met op de as een GT2-20 tand tandwiel met een GT2 riem, mijn poluludrivers staan op 1/16 stappen.
Motor stappen per rotatie: een rotatie is 360 graden / aantal graden per stap geeft: 360/ 1,8 = 200 stappen per omwenteling.
1/16 = 200 / 20 / 2 geeft: 1/16 = 5 , geeft: 1 = 80 , dat geeft het getal: 80
Ps. er is een handige website voor ingericht: prusaprinters.org calculator
Formule stang aandrijving (Z-as):
Het aantal stappen per unit wordt bepaald door het aantal stappen per omwenteling, gedeeld door de draadstang pitch (bijvoorbeeld de afstand van de verplaatsing van een moer bij in 1 omwenteling)
Stappen per unit = Motor stappen per omwenteling / draadstang pitch
In mijn geval heb ik NEMA 17 stappenmotors met 1,8 graad per rotatie en een verloop naar een M5 draadstang, mijn poluludrivers staan op 1/16 stappen.
Motor stappen per rotatie: een rotatie is 360 graden / aantal graden per stap geeft: 360/ 1,8 = 200 stappen per omwenteling.
1/16 = 200 / 0.8 geeft: 1/16 = 250 , geeft: 1 = 4000 , dat geeft het getal: 4000
Extruder aandrijving (E-as):
Het aantal stappen per unit wordt bepaald door het aantal stappen per omwenteling, maal de overzetverhouding, gedeeld door wiel diameter maal Pi.
In mijn geval heb ik Bowden (buis) extruder systeem op het chassis, zoals bijvoorbeeld deze:
3D Printer – Extruder – Compact Bowden Extruder, direct drive 1.75mm
met een NEMA 17 stappenmotor met 1,8 graad per rotatie en rechtstreeks op de as een MK8 wiel, mijn poluludrivers staan op 1/16 stappen.
De formule is: Stappen per unit = Motor stappen per omwenteling * overzetverhouding / (wiel diameter * 3.1415)
MK8 wiel afmetingen:
De wiel diameter die we nodig hebben is: 7 mm.
Motor stappen per rotatie: een rotatie is 360 graden / aantal graden per stap geeft: 360/ 1,8 = 200 stappen per omwenteling.
1/16 = 200 / (wieldiameter * 3.1415) geeft 1/16 = 200 / 22 , geeft 1/16 = 9.10 , geeft: 1 = 145.45 , dat geeft het getal: 145
De configuratie geeft dan:
1 2 3 |
#define DEFAULT_AXIS_STEPS_PER_UNIT {80,80,4000,145} // default steps per unit for Ultimaker #define DEFAULT_MAX_FEEDRATE {100, 100, 1, 30} // (mm/sec) #define DEFAULT_MAX_ACCELERATION {4000,4000,50,5000} // X, Y, Z, E maximum start speed for accelerated moves. E default values are good for Skeinforge 40+, for older versions raise them a lot. |
UPDATE 2020-08-03 – BULLDOG bowden extruder
De wiel diameter die we nodig hebben is: 12 mm.
Motor stappen per rotatie: een rotatie is 360 graden / aantal graden per stap geeft: 360/ 1,8 = 200 stappen per omwenteling.
1/16 = 200 / (wieldiameter * 3.1415) geeft 1/16 = 200 / 37.7 , geeft 1/16 = 5.3 , geeft: 1 = 85 , dat geeft het getal: 85
#define DEFAULT_AXIS_STEPS_PER_UNIT {80,80,4000,85} // default steps per unit for Ultimaker
Let op!, de berekeningen hierboven zijn gebaseerd op de A4988 drivers:
Gebruikt je de DRV8825 drivers:
Dan moeten de waarden hierboven gehalveerd worden!
Preheat instellingen
Preheat instellingen staan ingebakken in de firmware en zijn te kiezen vanuit het menusysteem, mijn instellingen:
1 2 3 4 5 6 7 8 |
// Preheat Constants #define PLA_PREHEAT_HOTEND_TEMP 210 #define PLA_PREHEAT_HPB_TEMP 60 #define PLA_PREHEAT_FAN_SPEED 255 // Insert Value between 0 and 255 #define ABS_PREHEAT_HOTEND_TEMP 230 #define ABS_PREHEAT_HPB_TEMP 80 #define ABS_PREHEAT_FAN_SPEED 255 // Insert Value between 0 and 255 |
Ps. Zorg ervoor dat PLA_PREHEAT_HPB_TEMP niet de waarde van BED_MAXTEMP (eerder ingesteld) overschrijdt.
Display gebruiken
Het grote voordeel van het gebruik van een display module is dat je de printer zonder computer kan gebruiken, het programma (gcode) staat dan immers op een SD kaartje welke je in het slot kan van de display module kan steken.
Voor mijn display “Reprap Discount Smart Controller”:
moet ik de commentaar voor deze regel aanpassen naar:
1 2 3 |
// The RepRapDiscount Smart Controller (white PCB) // http://reprap.org/wiki/RepRapDiscount_Smart_Controller #define REPRAP_DISCOUNT_SMART_CONTROLLER |
Rotatieknop goed instellen
Standaard draait de rotatieknop de “verkeerde kant op”, ikzelf vind het fijn om het menusystemen en instellingen te wijzigen en getallen te vermeerderen door met de klok mee te draaien, ga naar de TAB Pins.h en wissel dan deze waarden om: BTN_EN1 (31) en BTN_EN2 (33) onder het kopje “#ifdef REPRAP_DISCOUNT_SMART_CONTROLLER“, deze regels:
1 2 3 4 5 |
#ifdef REPRAP_DISCOUNT_SMART_CONTROLLER #define BEEPER 37 #define BTN_EN1 31 #define BTN_EN2 33 |
Worden:
1 2 3 4 5 |
#ifdef REPRAP_DISCOUNT_SMART_CONTROLLER #define BEEPER 37 #define BTN_EN1 33 #define BTN_EN2 31 |
Meer informatie is te vinden op:
danielhansen.net
matterhackers.com
[#/3dprinter/prusai3/firmware/marlin” ]