I²C-Display + rotary encoder + Buttons + RGB-LED für Anet A8 / X6

Ihr seid dabei an einem interessanten Projekt zu arbeiten oder plant ein solches? Stellt es hier gerne vor wenn ihr die Community damit bereichern wollt!
Antworten
Benutzeravatar
7eggert
Gold - Mitglied
Beiträge: 874
Registriert: Fr 3. Mär 2017, 15:45
Wohnort: HH
Drucker: Anet A8
Slicer: Slic3r 1.3.1, (Cura)
Firmware: Marlin 2.0
CAD - Software: FreeCAD / Linux
Hat sich bedankt: 19 Mal
Danksagung erhalten: 48 Mal

I²C-Display + rotary encoder + Buttons + RGB-LED für Anet A8 / X6

#1

Beitrag von 7eggert » Di 12. Feb 2019, 12:34

Ich habe den Anet A8 auf I²C-Display + Rotary Encoder umgebaut. Nebenbei wurden die Pins für die RGB-LED frei, also mußte ich die auch noch nutzen. Als Buttons kommen TTP223 zum Einsatz, 10 Cent im Angebot. Ohne diese und ohne die LED-Treiber wird die Platine wohl etwas kleiner.

https://youtu.be/D4DyCu0NW5A

Platine:
PCB.png
PCB2.png
Die orangen Linien = Kabel liegen auf der Lochrasterplatine. An manchen Stellen müssen die gut isoliert sein, da sie Beine von Bauteilen berühren.

J_IN ist der 10-Polige LCD-Stecker
J_HOME und J_BACK sind die TTP223, hinter der Platine montiert. VCC ist oben.
J_LCD geht zum LCD, dabei ist Plus oben
J_ENCODER geht …, dabei ist Minus unten

Bei manchen Encodern ist ein Pullup-Widerstand am Taster. Der muß ab.

J_RGB_LED ist der Anschluß zu den LED, common anode, Vorwiderstand zu jeder LED.
Belegung von links nach rechts: B G Vcc R (wie meine LED)

Auf dem Plan nicht eingezeichnet sind die Kabel zu den LED-Treibertransistoren. Die gehen von den mittleren drei Pins wild zu den Basis-Vorwiderständen. Ich habe den untersten Pin mit Rot belegt.

Marlin-Config:

Code: Alles auswählen

// #define ZONESTAR_LCD (auskommentieren)

// display
  #define LCD_I2C_TYPE_PCF8575
  #define LCD_I2C_ADDRESS 0x27   // I2C Address of the port expander
  #define ULTIPANEL
  #define LCD_WIDTH 20
  #define LCD_HEIGHT 4
  
// encoder
  #define NEWPANEL
  #define BTN_EN1          11
  #define BTN_EN2          10
  #define BTN_ENC -1
  #define REVERSE_MENU_DIRECTION
  #define REVERSE_ENCODER_DIRECTION

// keys
  #define REPRAPWORLD_KEYPAD
  #define ADC_KEYPAD
  #define ADC_KEY_NUM 8
  #define ADC_KEYPAD_PLUS_ENCODER

// LED
  #define RGB_LED
  #define RGB_LED_R_PIN 27
  #define RGB_LED_G_PIN 28
  #define RGB_LED_B_PIN 29
  #define RGB_LED_W_PIN -1
Configuration_adv.h

Code: Alles auswählen

#define LED_CONTROL_MENU
#define LED_USER_PRESET_STARTUP
In pins_ANET_10.h auskommentieren:

Code: Alles auswählen

//    #define LCD_PINS_D4      10
//    #define LCD_PINS_D5      11
//    #define LCD_PINS_D6      16
//    #define LCD_PINS_D7      17
//    #define BTN_EN1          -1
//    #define BTN_EN2          -1
In ultralcd.cpp ändern: (Minus == löschen, + = hinzu, Rest bleibt)

Code: Alles auswählen

--- a/Marlin/ultralcd.cpp
+++ b/Marlin/ultralcd.cpp
@@ -5608,7 +5608,9 @@ void lcd_reset_alert_level() { lcd_status_message_level = 0; }
         #if ENABLED(ADC_KEYPAD)
 
           uint8_t newbutton_reprapworld_keypad = 0;
-          buttons = 0;
+          #if not ENABLED(BTN_EN1)
+            buttons = 0;
+          #endif
           if (buttons_reprapworld_keypad == 0) {
             newbutton_reprapworld_keypad = get_ADC_keyValue();
             if (WITHIN(newbutton_reprapworld_keypad, 1, 8))
In SanityCheck.h

Code: Alles auswählen

--- a/Marlin/SanityCheck.h
+++ b/Marlin/SanityCheck.h
@@ -1467,7 +1467,7 @@ static_assert(X_MAX_LENGTH >= X_BED_SIZE && Y_MAX_LENGTH >= Y_BED_SIZE,
   + ENABLED(G3D_PANEL) \
   + (ENABLED(MINIPANEL) && DISABLED(MKS_MINI_12864)) \
   + ENABLED(MKS_MINI_12864) \
-  + (ENABLED(REPRAPWORLD_KEYPAD) && DISABLED(CARTESIO_UI) && DISABLED(ZONESTAR_LCD)) \
+  + 0 && (ENABLED(REPRAPWORLD_KEYPAD) && DISABLED(CARTESIO_UI) && DISABLED(ZONESTAR_LCD)) \
   + ENABLED(RIGIDBOT_PANEL) \
   + ENABLED(RA_CONTROL_PANEL) \
   + ENABLED(LCD_SAINSMART_I2C_1602) \
Du hast keine ausreichende Berechtigung, um die Dateianhänge dieses Beitrags anzusehen.
Befolge niemals Ratschläge aus Foren, wenn Du sie nicht verstehst. Frag nach.
Meine Aussagen treffe ich nach meinem Wissensstand, kann aber darüber hinaus sowie für Flüchtigkeitsfehler und Irrtümer keine Haftung übernehmen.

Benutzeravatar
lixxbox
Super Moderator
Beiträge: 1298
Registriert: Mi 25. Jan 2017, 15:12
Wohnort: Koblenz
Drucker: AM8
Slicer: PrusaSlicer
Firmware: Marlin-bugfix2.x
CAD - Software: Fusion360
Hat sich bedankt: 50 Mal
Danksagung erhalten: 104 Mal

#2

Beitrag von lixxbox » Mi 13. Feb 2019, 09:30

Freut mich, dass du es hinbekommen hast!
Für mich wäre das wohl nix. :)

Musst du Marlin dann bei jedem Firmwareupdate erneut anpassen?
Begriffe unklar? Schaut mal im Glossar vorbei.
Druckobjekte zur Kalibrierung / Fehleranalyse
Nutzt die Bedankenfunktion bei hilfreichen Antworten.
👍

Benutzeravatar
7eggert
Gold - Mitglied
Beiträge: 874
Registriert: Fr 3. Mär 2017, 15:45
Wohnort: HH
Drucker: Anet A8
Slicer: Slic3r 1.3.1, (Cura)
Firmware: Marlin 2.0
CAD - Software: FreeCAD / Linux
Hat sich bedankt: 19 Mal
Danksagung erhalten: 48 Mal

#3

Beitrag von 7eggert » Mi 13. Feb 2019, 13:56

Kommt darauf an, ich mache ein Issue auf.

Der Encoder läuft momentan in die fschale Richtung, das ändere ich auf jeden Fall noch.
Befolge niemals Ratschläge aus Foren, wenn Du sie nicht verstehst. Frag nach.
Meine Aussagen treffe ich nach meinem Wissensstand, kann aber darüber hinaus sowie für Flüchtigkeitsfehler und Irrtümer keine Haftung übernehmen.

Benutzeravatar
7eggert
Gold - Mitglied
Beiträge: 874
Registriert: Fr 3. Mär 2017, 15:45
Wohnort: HH
Drucker: Anet A8
Slicer: Slic3r 1.3.1, (Cura)
Firmware: Marlin 2.0
CAD - Software: FreeCAD / Linux
Hat sich bedankt: 19 Mal
Danksagung erhalten: 48 Mal

#4

Beitrag von 7eggert » Sa 23. Feb 2019, 23:53

2/3 Patches sind im Bugfix 1.1.9; dritter ist gerade eingereicht.
IMG_0246.JPG
IMG_0248.JPG
Letztes Teil dazu:
Final 1.JPG
Final 2.JPG
Die Kiste ist noch nicht ganz zu, da innen noch Kabel getauscht werden.

Upload:
https://www.thingiverse.com/thing:3448545
Du hast keine ausreichende Berechtigung, um die Dateianhänge dieses Beitrags anzusehen.
Befolge niemals Ratschläge aus Foren, wenn Du sie nicht verstehst. Frag nach.
Meine Aussagen treffe ich nach meinem Wissensstand, kann aber darüber hinaus sowie für Flüchtigkeitsfehler und Irrtümer keine Haftung übernehmen.

Antworten