Charlie-plexing


Closed Thread
Results 1 to 40 of 61

Thread: Charlie-plexing

Hybrid View

  1. #1
    Join Date
    Dec 2010
    Posts
    409


    Did you find this post helpful? Yes | No

    Default Re: Charlie-plexing

    Hi Robert,
    This article explains what I was trying to tell you about analog vs digital effects: http://www.instructables.com/id/Char...s--The-theory/
    The Microchip article is a quick example, but not true Charlie-plexing, and it doesn't scale up nicely.

  2. #2
    Join Date
    Jan 2005
    Location
    Montreal, Quebec, Canada
    Posts
    3,172


    Did you find this post helpful? Yes | No

    Default Re: Charlie-plexing

    Ah perception, what a wonderful thing. When I said digital I meant the logic, and when you said analog you meant the properties of the LED. LOL

    I had found that article on google but didn't see anything new at first glance and moved on. It's really a few pages deep that it gets into the meat of the matter. Excellent article though, explained everything so clearly.

    I especially appreciate how he discusses making a pin input disables it. I never understood "high impedance state". It's simple, it impedes, like that 10M resistor he has on his schematic of the input pin.

    It also explains why I couldn't get a decent reading on my Saleae probe; current DOES flow through the unwanted LEDs. It's just that they don't get enough current to light up; hence the importance of forward voltage drop you mentionned (he explains that clearly). It's nice understanding what's going on.

    No ghosting with 200usec delay:


    No pauses:


    Robert
    Last edited by Demon; - 15th December 2014 at 19:23.

  3. #3
    Join Date
    Sep 2010
    Location
    Las Vegas, NV
    Posts
    305


    Did you find this post helpful? Yes | No

    Default Re: Charlie-plexing

    To all, I'm learning so these may be stupid questions. Please put the flamethrowers down.

    Are you still using the 16F877? If so:

    Does ADCON1 = 7 do anything for you? It looks like none of ADC ports are on Port D and this wouldn't effect them.

    I don't think of the TRISX as setting ports to digital only setting them input or output. With the 877 are the ports already set so with a high you get 5V out and a low gives you zero when you set them as outputs?

    If you're continuing to have issues with ghosting I found, on the 12F683, that setting all ports to input and turning them off before I moved on to the next light helped quite a bit.

    Hope it helps.

  4. #4
    Join Date
    Jan 2005
    Location
    Montreal, Quebec, Canada
    Posts
    3,172


    Did you find this post helpful? Yes | No

    Default Re: Charlie-plexing

    Quote Originally Posted by AvionicsMaster1 View Post
    To all, I'm learning so these may be stupid questions. Please put the flamethrowers down.
    ...
    There are no stupid questions, just stupid people. Sorry, couldn't resist.


    ...Are you still using the 16F877?...
    Yup.


    ...Does ADCON1 = 7 do anything for you? It looks like none of ADC ports are on Port D and this wouldn't effect them...
    I use it because I have been using digital only so far. First thing I do when using a new model PIC is run with ALLDIGITAL and add whatever it tells me to. I've used a 16F877 ever since I've been here and I'm just using copies of my first program.

    It just happened that I ran ALLDIGITAL again with this PIC when I started this testing and it also gave me that line to add.


    ...I don't think of the TRISX as setting ports to digital only setting them input or output...
    Yup.


    With the 877 are the ports already set so with a high you get 5V out and a low gives you zero when you set them as outputs?...
    I don't know if they are analog or digital by default. I'd have to check the datasheet for ADCON1.


    ...If you're continuing to have issues with ghosting I found, on the 12F683, that setting all ports to input and turning them off before I moved on to the next light helped quite a bit...
    Nope, no more ghosting. See video with 200uSec delay.

    Robert
    My Creality Ender 3 S1 Plus is a giant paperweight that can't even be used as a boat anchor, cause I'd be fined for polluting our waterways with electronic devices.

    Not as dumb as yesterday, but stupider than tomorrow!

  5. #5
    Join Date
    Jan 2005
    Location
    Montreal, Quebec, Canada
    Posts
    3,172


    Did you find this post helpful? Yes | No

    Default Re: Charlie-plexing

    I've since moved on to 18F44K22 after the videos but the code essentially remains the same:

    Code:
    mainloop:
    
        PortD.2 = 1             ' Heartbeat
    
        TRISA = %11111100
        PORTA = %00000001       ' LED 1
        PAUSE 200
        PORTA = %00000010       ' LED 2
        PAUSE 200
    
        TRISA = %11110011
        PORTA = %00000100       ' LED 3
        PAUSE 200
        PORTA = %00001000       ' LED 4
        PAUSE 200
    
        PortD.2 = 0             ' Heartbeat
    
        TRISA = %11001111
        PORTA = %00010000       ' LED 5
        PAUSE 200
        PORTA = %00100000       ' LED 6
        PAUSE 200
    
        TRISA = %00111111
        PORTA = %01000000       ' LED 7
        PAUSE 200
        PORTA = %10000000       ' LED 8
        PAUSE 200
    
        goto mainloop
    End
    I don't have to set the TRIS register when I remain on the same LED pair.

  6. #6
    Join Date
    Jan 2005
    Location
    Montreal, Quebec, Canada
    Posts
    3,172


    Did you find this post helpful? Yes | No

    Default Re: Charlie-plexing

    This:

    Code:
    ' Blink 56 LEDs connected to PORT A in charlie-plex manner
    
    '   PIC             18F44K22    int osc 64MHz
    '   PBP             v2.60c
    '   MPASM           v5.49
    '   MCS+            v2.1.0.7
    '   U2 programmer   v4.32
    
    asm
     __CONFIG    _CONFIG1H, _FOSC_INTIO67_1H & _PLLCFG_ON_1H & _PRICLKEN_OFF_1H & _FCMEN_ON_1H & _IESO_OFF_1H
     __CONFIG    _CONFIG2L, _PWRTEN_ON_2L & _BOREN_SBORDIS_2L & _BORV_285_2L
     __CONFIG    _CONFIG2H, _WDTEN_OFF_2H
     __CONFIG    _CONFIG3H, _CCP2MX_PORTC1_3H & _PBADEN_OFF_3H & _CCP3MX_PORTE0_3H & _HFOFST_OFF_3H & _T3CMX_PORTB5_3H & _P2BMX_PORTC0_3H & _MCLRE_EXTMCLR_3H
     __CONFIG    _CONFIG4L, _STVREN_OFF_4L & _LVP_OFF_4L & _XINST_OFF_4L & _DEBUG_OFF_4L
    endasm
    
    DEFINE OSC 64
    
    OSCCON  = %01110000              ' OSCILLATOR CONTROL REGISTER
    ' bit 7 IDLEN: Idle Enable bit
    '     R/W       1 = Device enters Idle mode on SLEEP instruction
    '               0 = Device enters Sleep mode on SLEEP instruction
    ' bit 6-4 IRCF<2:0>: Internal RC Oscillator Frequency Select bits(2)
    '     R/W       111 = HFINTOSC – (16 MHz)
    '               110 = HFINTOSC/2 – (8 MHz)
    '               101 = HFINTOSC/4 – (4 MHz)
    '               100 = HFINTOSC/8 – (2 MHz)
    '               011 = HFINTOSC/16 – (1 MHz)(3)
    '           If INTSRC = 0 and MFIOSEL = 0:
    '               010 = HFINTOSC/32 – (500 kHz)
    '               001 = HFINTOSC/64 – (250 kHz)
    '               000 = LFINTOSC – (31.25 kHz)
    '           If INTSRC = 1 and MFIOSEL = 0:
    '               010 = HFINTOSC/32 – (500 kHz)
    '               001 = HFINTOSC/64 – (250 kHz)
    '               000 = HFINTOSC/512 – (31.25 kHz)
    '           If INTSRC = 0 and MFIOSEL = 1:
    '               010 = MFINTOSC – (500 kHz)
    '               001 = MFINTOSC/2 – (250 kHz)
    '               000 = LFINTOSC – (31.25 kHz)
    '           If INTSRC = 1 and MFIOSEL = 1:
    '               010 = MFINTOSC – (500 kHz)
    '               001 = MFINTOSC/2 – (250 kHz)
    '               000 = MFINTOSC/16 – (31.25 kHz)
    ' bit 3 OSTS: Oscillator Start-up Time-out Status bit
    '       R       1 = Device is running from the clock defined by FOSC<3:0> of the CONFIG1H register
    '               0 = Device is running from the internal oscillator (HFINTOSC, MFINTOSC or LFINTOSC)
    ' bit 2 HFIOFS: HFINTOSC Frequency Stable bit
    '       R       1 = HFINTOSC frequency is stable
    '               0 = HFINTOSC frequency is not stable
    ' bit 1-0 SCS<1:0>: System Clock Select bit
    '       R/W     1x = Internal oscillator block
    '               01 = Secondary (SOSC) oscillator
    '               00 = Primary clock (determined by FOSC<3:0> in CONFIG1H).
    
    OSCCON2 = %00000100              ' OSCILLATOR CONTROL REGISTER 2
    ' bit 7 PLLRDY: PLL Run Status bit
    '     R         1 = System clock comes from 4xPLL
    '               0 = System clock comes from an oscillator, other than 4xPLL
    ' bit 6 SOSCRUN: SOSC Run Status bit
    '     R         1 = System clock comes from secondary SOSC
    '               0 = System clock comes from an oscillator, other than SOSC
    ' bit 5 Unimplemented: Read as ‘0’.
    ' bit 4 MFIOSEL: MFINTOSC Select bit
    '     R/W=0     1 = MFINTOSC is used in place of HFINTOSC frequencies of 500 kHz, 250 kHz and 31.25 kHz
    '               0 = MFINTOSC is not used
    ' bit 3 SOSCGO(1): Secondary Oscillator Start Control bit
    '     R/W=0     1 = Secondary oscillator is enabled.
    '               0 = Secondary oscillator is shut off if no other sources are requesting it.
    ' bit 2 PRISD: Primary Oscillator Drive Circuit Shutdown bit
    '     R/W=1     1 = Oscillator drive circuit on
    '               0 = Oscillator drive circuit off (zero power)
    ' bit 1 MFIOFS: MFINTOSC Frequency Stable bit
    '     R         1 = MFINTOSC is stable
    '               0 = MFINTOSC is not stable
    ' bit 0 LFIOFS: LFINTOSC Frequency Stable bit
    '     R         1 = LFINTOSC is stable
    '               0 = LFINTOSC is not stable
    
    OSCTUNE = %11000000              ' OSCILLATOR TUNING REGISTER
    ' bit 7 INTSRC: Internal Oscillator Low-Frequency Source Select bit
    '     R/W       1 = 31.25 kHz device clock derived from the MFINTOSC or HFINTOSC source
    '               0 = 31.25 kHz device clock derived directly from LFINTOSC internal oscillator
    ' bit 6 PLLEN: Frequency Multiplier 4xPLL for HFINTOSC Enable bit(1)
    '     R/W       1 = PLL enabled
    '               0 = PLL disabled
    ' bit 5-0 TUN<5:0>: Frequency Tuning bits – use to adjust MFINTOSC and HFINTOSC frequencies
    '     R/W       011111 = Maximum frequency
    '               011110 =
    '               • • •
    '               000001 =
    '               000000 = Oscillator module (HFINTOSC and MFINTOSC) are running at the factory calibrated frequency.
    '               111111 =
    '               • • •
    '               100000 = Minimum frequency
    
    ANSELA = %00000000          ' Set ports to digital
    ANSELB = %00000000
    ANSELC = %00000000
    ANSELD = %00000000
    ANSELE = %00000000
    
    ADCON0 = %00000000          ' Disable ADC
    
    TRISA = %00000000           ' Set all Ports to output 
    TRISB = %00000000
    TRISC = %00000000
    TRISD = %00000000
    TRISE = %00000000
    PORTA = %00000000           ' Set ports OFF
    PORTB = %00000000
    PORTC = %00000000
    PORTD = %00000000
    PORTE = %00000000
    
    varLEDstate VAR BYTE[55]
    varLEDport  VAR BYTE[55]
    varArray    var byte
    varEEPROM   var byte
    
    varEEPROM = 0
    
    '-------------------------   T E M P O R A R Y   ------------------------------
    for varArray = 0 to 55                      ' Location in Array
        varEEPROM = varEEPROM + 1               ' Location in EEPROM
        read varEEPROM, VARLEDstate[varArray]
        varEEPROM = varEEPROM + 1
        read varEEPROM, VARLEDport[varArray]
    next varArray
    '------------------------------------------------------------------------------
    
        pause 100
    
    mainloop:
    
        for varArray = 0 to 55               ' LEDs in ascending sequence
            TRISA = VARLEDSTATE[varArray]
            PORTA = VARLEDPORT[varArray]
            PAUSE 15
        next varArray
    
        for varArray = 55 to 0 step -1      ' LEDs in decending sequence
            TRISA = VARLEDSTATE[varArray]
            PORTA = VARLEDPORT[varArray]
            PAUSE 15
        next varArray
     
        goto mainloop
    End
    
    
    DATA @1,%11111100   ' Pin A0
    DATA %00000001
    
    DATA %11111010
    DATA %00000001
    
    DATA %11110110
    DATA %00000001
    
    DATA %11101110
    DATA %00000001
    
    DATA %11011110
    DATA %00000001
    
    DATA %10111110
    DATA %00000001
    
    DATA %01111110
    DATA %00000001
    
    DATA %11111100   ' Pin A1
    DATA %00000010
    
    DATA %11111001
    DATA %00000010
    
    DATA %11110101
    DATA %00000010
    
    DATA %11101101
    DATA %00000010
    
    DATA %11011101
    DATA %00000010
    
    DATA %10111101
    DATA %00000010
    
    DATA %01111101
    DATA %00000010
    
    DATA %11111010   ' Pin A2
    DATA %00000100
    
    DATA %11111001
    DATA %00000100
    
    DATA %11110011
    DATA %00000100
    
    DATA %11101011
    DATA %00000100
    
    DATA %11011011
    DATA %00000100
    
    DATA %10111011
    DATA %00000100
    
    DATA %01111011
    DATA %00000100
    
    DATA %11110110   ' Pin A3
    DATA %00001000
    
    DATA %11110101
    DATA %00001000
    
    DATA %11110011
    DATA %00001000
    
    DATA %11100111
    DATA %00001000
    
    DATA %11010111
    DATA %00001000
    
    DATA %10110111
    DATA %00001000
    
    DATA %01110111
    DATA %00001000
    
    DATA %11101110   ' Pin A4
    DATA %00010000
    
    DATA %11101101
    DATA %00010000
    
    DATA %11101011
    DATA %00010000
    
    DATA %11100111
    DATA %00010000
    
    DATA %11001111
    DATA %00010000
    
    DATA %10101111
    DATA %00010000
    
    DATA %01101111
    DATA %00010000
    
    DATA %11011110   ' Pin A5
    DATA %00100000
    
    DATA %11011101
    DATA %00100000
    
    DATA %11011011
    DATA %00100000
    
    DATA %11010111
    DATA %00100000
    
    DATA %11001111
    DATA %00100000
    
    DATA %10011111
    DATA %00100000
    
    DATA %01011111
    DATA %00100000
    
    DATA %10111110   ' Pin A6
    DATA %01000000
    
    DATA %10111101
    DATA %01000000
    
    DATA %10111011
    DATA %01000000
    
    DATA %10110111
    DATA %01000000
    
    DATA %10101111
    DATA %01000000
    
    DATA %10011111
    DATA %01000000
    
    DATA %00111111
    DATA %01000000
    
    DATA %01111110   ' Pin A7
    DATA %10000000
    
    DATA %01111101
    DATA %10000000
    
    DATA %01111011
    DATA %10000000
    
    DATA %01110111
    DATA %10000000
    
    DATA %01101111
    DATA %10000000
    
    DATA %01011111
    DATA %10000000
    
    DATA %00111111
    DATA %10000000
    Scanning through 56 LEDs:


    Persistence of vision, no noticeable difference (not all LEDs point directly up):


    Current consumption (removed Power Indicator LED from circuit):
    - all off = 11.5mA
    - all on = 22.0 mA

    Robert
    Last edited by Demon; - 18th December 2014 at 06:38. Reason: Added persistence of vision, current

  7. #7
    Join Date
    Jan 2005
    Location
    Montreal, Quebec, Canada
    Posts
    3,172


    Did you find this post helpful? Yes | No

    Default Re: Charlie-plexing

    Only one LED will be bright enough to be visible even though multiple paths are active at the same time, because the shortest path is the only one with enough current. All the other undesired paths share the same current; not enough to make an LED glow.

    Cycling through the 56 LEDs on the 8 pins in the post above, a LED does not have enough current 7 out of 8 times:


    From Step 4:
    ...
    OK, so a current flows through LED5, current isn't flowing through LED6 because it is reverse biased (and so are LED2 and LED4)....but there is also a path for the current to take from pin A, through LED1 and LED3 isn't there? Why are these LEDs not glowing as well.

    Here is the heart of the charlieplexing scheme. Indeed there is a current flowing both LED1 and LED3, however the voltage across the both of these combined is only going to be equal to the voltage across LED5. Typically they would have half the voltage across them that LED5 has. So if we have 1.9V across LED5, then only 0.95V will be across LED1 and 0.95V across LED3.

    From the If/Vf curve mentioned at the beginning of this article we can see that the current at this half voltage is much much lower than 20mA.....and those LEDs will not glow visibly. This is known as current stealing.

    Thus most of the current will flow though the LED we want, the most direct path through the least number of LEDs (ie one LED), rather than any series combination of LEDs.
    ...
    http://www.instructables.com/id/Char...eory/?ALLSTEPS

    Robert


    (That Habs logo just "happened" to line up with the monitor.)
    Last edited by Demon; - 21st December 2014 at 01:16. Reason: Alignment of quoted text

  8. #8
    Join Date
    Jun 2016
    Posts
    19


    Did you find this post helpful? Yes | No

    Default Re: Charlie-plexing

    Hello [insert user name ],
    You can disagree with someone's opinions, but calling that person an idiot or a profane name is a violation of our forum etiquette. Some forums are more liberal about this than others, but keeping it civil is never the wrong thing to do.

    Posting the same thing over and over again is called scrolling, and is also a banning offense. It is annoying in the extreme and it is entirely unnecessary, please refrain from further activity of that nature or risk a ban from this forum.DATA sheets are your friend.
    Please read the chips DATA sheet and make it happy You are in breach of the forums rules.

    Your recent post [insert post ref] breached the rules because [insert reason]

    This warning has been noted. We operate a three strike policy, however enforcement is at the admin / moderator discretion, in all respects our decision is final.

    Further warnings will result in suspension of the service to you.Please start a thread in the appropriate forum for detailed technical help. This is just a chat box, your post will disappear quickly.We accept that the vast majority of our forum members follow general forum etiquette.

    Forum etiquette means maintaining a standard of posting behavior that is acceptable and appropriate. Forum etiquette can be flexible, according to the subject of the forum, but there are certain standards most people expect others to maintain. Some lines must be drawn for the safety of all posting on the forum.

    You may disagree with someone's opinions, but calling that person an idiot is a violation of forum etiquette.

    Posting the same thing over and over again is called scrolling, and is also a violation of forum etiquette.

    Trolls enjoy disturbing the peace. Trolls tend to call names, gossip about other posters, post things that are deliberately provocative and usually violate the forum's rules about posting. Don't become a Troll.

    Another violation of forum etiquette is posting in ALL CAPS. This is considered shouting and is very rude.

    Flaming, or deliberate insults or personal rants, are also against forum etiquette. Flaming is often employed by people who are losing arguments on a forum. Their response is to personally insult the poster disagreeing with them, usually in a long, nasty post. The veil of anonymity seems to bring out the worst in these people, and any bullying tendencies they have tend to become magnified in the semi-protection given by the anonymity provided on a forum.

    Forum etiquette involves using the Golden Rule: treat others as you would like to be treated.

    Behaving as a reasonable adult, even in the face of being flamed, is always the best course of action. If a poster becomes harassing, obscene or personal, do not retaliate. Instead, report it to the moderators or forum administrators.

    Here we set out the basic rules that we use when managing the forum. By using the forum, you agree to abide by these rules and the decision of the administrators and moderators.

    General Forum Use
    • Do NOT make the same post in multiple forums. Moderators will remove multiple posts and you will receive an infraction for doing so.
    • The User Infraction system is designed to automate the management of misbehaving users. When a user reaches pre-determined number of infractions, the user permissions may be restricted.
    • Members should post in a way that is respectful of other users. Flaming or abusing users in any way will not be tolerated and will lead to an infraction, followed by a BAN.
    • Members are asked to not act as “back seat moderators”. If members note an issue which contravenes something in this policy document they are welcome to bring it to the attention of a moderator.
    • Members should remember this board is aimed at a general audience. Posting pornographic or generally offensive text, images, links, etc. will not be tolerated and will lead to a BAN.
    • Members are asked to respect the copyright of other users, sites, media, etc. Users linking to or asking for information on warez, crackz, etc. or re-printing material without permission will receive an infraction and their post will be removed. Blatant abuse and links to warez may result in an instant BAN.
    • Members are asked only to post in English, as this is an English speaking community.
    • Members should post in a way which is consistent with "normal writing". That is users should not post excessive numbers of emoticons, large, small or coloured text, etc. Similarly users should not SHOUT by writing in upper case or use excessive punctuation (e.g. ! and ?) in topic titles or posts. Users consistently abusing this will receive an infraction.
    • Members should use an appropriate, descriptive subject when posting a new topic. Examples of bad subjects include; "Help me!", "I'm stuck!", "I've got an error!" etc.
    • Members are welcome to use the test forum for general "test purposes". These may include checking signatures, testing a link or image, etc. (subject to previous points on decency, warez, etc.).
    • Spam is not tolerated here under any circumstance. This includes offering hosting services (charged and free), installation services, solicitation etc. Users posting 'SPAM' will be banned.
    • The moderators may edit, remove or put on moderation queue any post at any time. Please note that currently any very first post by a new user is automatically placed in the moderation queue and will be approved/disapproved according to the present Rules. The determination of what is construed as indecent, vulgar, spam, etc. as noted in these points is up to the admins and moderators, NOT the users.
    • The above forum rules where applicable also apply to private messaging. Abuse of the private messaging system may lead to an infraction and/or the revocation of private messaging facilities.

    Signatures
    • Signatures containing an image may also include one line of small size text.
    • Animated images are not allowed.
    • Links in signatures are permitted to a maximum of four unique pages or sites. Such links may only be to relevant or moderator approved material. Links to sites may be commercial in nature. You may not include links in a way which suggests you offer official support, software, etc. for Crownhill Products. You may not link to warez, porn, racist or other similar hate sites. Links are included in signature size limits.
    • Users abusing these rules will receive an infraction, their signature will be removed and repeated abuse will result in a BAN.

    Policing
    • Arguing with moderators or admins after having received an infraction or warning will lead to an immediate additional infraction and ultimately a BAN.
    • Users who feel they have been unfairly warned may contact an admin with their complaint. The admin's decision is final.
    • Any attempt to circumvent a temporary ban or other moderator action will lead to a permanent ban of your account(s). Circumvention includes re-registering or using an already registered account under a non-banned username. Other examples include changing IP addresses, using a new email account or other action that can be taken to evade moderator action to hide your identity as the owner of the sanctioned account.
    • An exception to the three strike rule applies when users contact team members personally (via any method) and post insulting, indecent or vulgar material. Such users may be subject to an immediate permanent BAN.
    • Permanent bans are a last resort and thought is given before implementing them.

  9. #9
    Join Date
    Jun 2016
    Posts
    19


    Did you find this post helpful? Yes | No

    Default Re: Charlie-plexing

    It seems I went off Topic?

  10. #10
    Join Date
    Aug 2005
    Location
    Michigan, USA
    Posts
    224


    Did you find this post helpful? Yes | No

    Default Re: Charlie-plexing

    It seems more intuitive (for me) to depict a Charlieplexed matrix in column and row format. If I take the matrix (below) and fold along the dotted line, so to speak, I end up with a matrix, like Demon's, which should support some relatively inexpensive 2-pin Red/Green LED's I have laying around, right?
    Attached Images Attached Images   
    Last edited by Mike, K8LH; - 6th May 2018 at 13:40.

  11. #11
    Join Date
    Jan 2005
    Location
    Montreal, Quebec, Canada
    Posts
    3,172


    Did you find this post helpful? Yes | No

    Default Re: Charlie-plexing

    Quote Originally Posted by Mike, K8LH View Post
    It seems more intuitive (for me) to depict a Charlieplexed matrix in column and row format. If I take the matrix (below) and fold along the dotted line, so to speak, I end up with a matrix, like Demon's, which should support some relatively inexpensive 2-pin Red/Green LED's I have laying around, right?

    Sorry, I took a break for a few years and didn't see this post.

    At first glance, your grid does look functionally like my leaning pyramid.

    It's weird, your design looks more confusing to me.
    My Creality Ender 3 S1 Plus is a giant paperweight that can't even be used as a boat anchor, cause I'd be fined for polluting our waterways with electronic devices.

    Not as dumb as yesterday, but stupider than tomorrow!

Members who have read this thread : 2

You do not have permission to view the list of names.

Posting Permissions

  • You may not post new threads
  • You may not post replies
  • You may not post attachments
  • You may not edit your posts