Marlin: Unsupported display, is there a way to make it supported ?

Created on 19 May 2018  Â·  11Comments  Â·  Source: MarlinFirmware/Marlin

The display with module looks just like "REPRAP_DISCOUNT_FULL_GRAPHIC_SMART_CONTROLLER" , with buzzer, and rotary switch.

  • except, only one EXT connector is installed, the other could be used for SD card slot (which is not installed on the card) - it has a 20pin LCD connector, with the two last pins being used for backlit.

The pinout on EXT1 (the only one) is:
1: +5v , positive side of the buzzer, backlit
2: GND , used for misc devices/switches.
3: RW (5th pin of LCD module)
4: RS (4th pin of LCD module)
5: E (6th pin of LCD module)
6: rotary switch rotation data
7: switch two (reset ?) - not used
8: rotary switch rotation data
9 rotary switch button
10: via resistor to gate of Q1, emitter of Q1 is connected to GND, collector to buzzer(negative) - so this pin drives the beeper.

is if feasible to make the display, buzzer, rotary switch work on EXT1 ? (it's mechanically compatible, fits right in, the question is whatever it is a major task to support that hardware)

  • also , I am surprised that no more of the displays pins are in use.
Configuration LCD & Controllers Question

All 11 comments

I could give it a shot by modifying pins_ANET_10.h , but one of my problems now is the correlation between EXT1 pin 5 and pin number in "defines" , aka, I need to know the firmware pin number of all EXT1 pins..

What controller are you using?

What display are you using?

The controller is an CR-10S upgrade (apparently fully RAMPS_14_EFB compatible)
https://www.ebay.com/itm/Creality-Upgrade-CR-10S-S4-S5-3D-Printer-Motherboard-Circuit-Control-Board-B2Q8/183101852072?hash=item2aa1b889a8:g:QXUAAOSwL7ValXTX

The display comes with A10 printers: (basically a CR-10 clone)

https://www.ebay.com/sch/i.html?_from=R40&_trksid=p2047675.m570.l1313.TR0.TRC0.H0.XA10+3d+printer.TRS0&_nkw=A10+3d+printer&_sacat=0

  • the A10 printer works really well, good precision, but I am replacing the controller for a proper 2560 and current Marlin. - expect others to do that as well :)

These are the pin names you'll need to use, assuming it's a clone/derivative of the REPRAP_DISCOUNT_FULL_GRAPHIC_SMART_CONTROLLER

Marlin name       The pinout on EXT1 (the only one) is:
                  1:  +5v , positive side of the buzzer, backlit
                  2:  GND , used for misc devices/switches.
LCD_PINS_D4       3:  RW (5th pin of LCD module)
LCD_PINS_RS       4:  RS (4th pin of LCD module)
LCD_PINS_ENABLE   5:  E (6th pin of LCD module)
BTN_EN1           6:  rotary switch rotation data
KILL_PIN          7:  switch two (reset ?) - not used
BTN_EN2           8:  rotary switch rotation data
BTN_ENC           9:  rotary switch button
BEEPER_PIN        10: via resistor to gate of Q1, emitter of Q1 

If the encoder direction is reversed then switch BTN_EN1 & BTN_EN2.

None of these signals are special. they can be assigned to any pin except SCK, MOSI & MISO. Those are usually reserved for the SD card.

If you don't know the logical pin numbers on the controller connector you can use the M43 commands to figure that out. M43 is enabled by the PINS_DEBUGGING flag in Configuration_adv.h

(sorry still editing)
M43 is a great tool.

changed pins_ANET_10.h like this:

#elif ENABLED(REPRAP_DISCOUNT_FULL_GRAPHIC_SMART_CONTROLLER) || ENABLED(ANET_FULL_GRAPHICS_LCD)
    // Pin definitions for the Anet A6 Full Graphics display and the RepRapDiscount Full Graphics
    // display using an adapter board  // https://go.aisler.net/benlye/anet-lcd-adapter/pcb
    // See below for alternative pin definitions for use with https://www.thingiverse.com/thing:2103748
    #define SERVO0_PIN       30//29 // free for BLTouch/3D-Touch
    #define BEEPER_PIN       37//17
    #define LCD_PINS_RS      27
    #define LCD_PINS_ENABLE  25//28
    #define LCD_PINS_D4      29//30
    #define BTN_EN1          23//11
    #define BTN_EN2          17//10
    #define BTN_ENC          35//16
    #define ST7920_DELAY_1 DELAY_0_NOP
    #define ST7920_DELAY_2 DELAY_1_NOP
    #define ST7920_DELAY_3 DELAY_2_NOP
    #define STD_ENCODER_PULSES_PER_STEP 4
    #define STD_ENCODER_STEPS_PER_MENU_ITEM 1
  #endif

I should have it working now, but something isn't

still, M43 displays BTN_EN1/2 input as:
PIN: 17 Port: H0 LCD_PINS_ENABLE
PIN: 23 Port: A1 LCD_PINS_D4

my display is defined as REPRAP_DISCOUNT_FULL_GRAPHIC_SMART_CONTROLLER , so I fail to see how this is possible..

attaching my configuration.h
Configuration.zip

I've measured everything end-to-end, If I were able to define pins correctly - it should have worked.
those defines, if they have been actually compiled, would work:
I find the "LCD_PINS_D4" name to be a strange label for RW on ST7920 , assuming it's a cosmetic issue only.

    #define BEEPER_PIN       37
    #define LCD_PINS_RS      27   //"RS" on display
    #define LCD_PINS_ENABLE  25  // "E" on display
    #define LCD_PINS_D4      29  // "R/W" on display
    #define BTN_EN1          23
    #define BTN_EN2          17
    #define BTN_ENC          35

I've tried to cram them in the beginning of Configuration.h without success

I've tried to cram them in the beginning of Configuration.h without success

It's cleaner if you put them into the pins file for your board. The compiler will complain if they are given values in config and then the pins file tries to define them again with different values.

As you can see from previous post, I already tried to modify correct LCD
defines.
Du you mean to change the board (like ramps) ? I can do, did not found LCD
related pins there, and knew it would cause redefine-warnings too.

Those printers I try to update are cheap and popular, hope to first
succeed, then maki it correct as more people will surely want the support.

On Sun, 20 May 2018, 19:00 Scott Lahteine, notifications@github.com wrote:

I've tried to cram them in the beginning of Configuration.h without
success

It's cleaner if you put them into the pins file for your board. The
compiler will complain if they are given values in config and then the pins
file tries to define them again with different values.

—
You are receiving this because you authored the thread.
Reply to this email directly, view it on GitHub
https://github.com/MarlinFirmware/Marlin/issues/10785#issuecomment-390496066,
or mute the thread
https://github.com/notifications/unsubscribe-auth/ABZpqiuJUq-t8JmS-sove4uGsJPEu7JXks5t0aEQgaJpZM4UFyJY
.

Do you have the logical pin numbering for the controller side?

A pin diagram will do. A schematic is even better.

Without those then you can use the M43 W I and M43 T I commands to figure out the logical pin mapping.

I'd start with *M43 W I *. This command just watches the pins and reports any changes of state. What I do is plug one end of a jumper into ground and then touch the unknown pins with the other. 75% of the time the display will report the logical pin number and the signals assigned to it.

The M43 T I command toggles pins. I attach an LED to the unknown pin and then start the command toggling pins. When I see the LED flash I look at the display and note the number. Usually I'm too slow to catch the correct number so I'll re-start the test over a much smaller range at a slower rate.

```

  • M43 W - Watch pins -reporting changes- until reset, click, or M108.

    • P Pin to read or watch. If omitted, read/watch all pins.

    • I Flag to ignore Marlin's pin protection.

*

  • M43 T - Toggle pin(s) and report which pin is being toggled
  • S - Start Pin number. If not given, will default to 0
  • L - End Pin number. If not given, will default to last pin defined for this board
  • I - Flag to ignore Marlin's pin protection. Use with caution!!!!
  • R - Repeat pulses on each pin this number of times before continueing to next pin
  • W - Wait time (in miliseconds) between pulses. If not given will default to 500
    ```

After much narrowing-down by looking at other displays, I realized that this display is already supported as CR10_STOCKDISPLAY
:)

This issue has been automatically locked since there has not been any recent activity after it was closed. Please open a new issue for related bugs.

Was this page helpful?
0 / 5 - 0 ratings