TinyMatrix Derivative Uses PIC Instead Of AVR

[Stu] has a teenage niece whose birthday is coming up and he wanted to give her something unique as a gift. He’s working on an LED matrix pendant that can display pixel graphics, play animations, and scroll messages.

He began the work after drawing inspiration from the TinyMatrix project. That clever design uses a DIP AVR chip soldered directly to the legs of a 5×7 LED matrix. It was powered by a coin cell with the power and ground wires acting as the necklace for the pendant. [Stu] is more comfortable developing using PIC chips, so he based his project on a 16F88. It will not run from a 3V source so he’s got a few issued to work out before the final design is finished.

One thing that’s quite interesting is his side project. After growing weary of hand coding the arrays for each frame of an animation he wrote a GUI in C# that let him design the image and output the code with a few clicks of the mouse.

25 thoughts on “TinyMatrix Derivative Uses PIC Instead Of AVR

  1. I’m curious if his encoder is compatible with the AVR version? I’m still waiting for my ATTiny4313s to come in the mail (hopefully today) before I can start playing with them. Would be quite a time saver if it (encoder) worked!

    1. Uh, probably not.
      I didn’t actually use any code from TinyMatrix, believe it or not – I’m quite experienced at coding. I developed it from scratch using PICBasic Pro myself, I would have used C but PIC C compilers aint cheap.

      Thank you HaD for the article!

  2. The Voltage Problem he is having is not a Problem at all… its just ignorance.

    All he has to do is disable the Brown Out fuse and run the PIC at a lower frequency like 4MHz internal Oscillator.

    I use that PIC model Extensively and it runs perfectly well at voltages lower than 4V.
    Ive tested it to 3.0V without any issues.

    I hope he sees this comment and gets his project finished.


    1. You’re joking, right?
      The standard 16F88’s that i’m using definitely don’t work below 4v even with BOREN disabled. I tried it. Today I went out and bought the purposely low voltage variant, the 16LF88. That works down to 2v, they do.
      And yes, this is the author of the article.

      1. i gathered from your post you already had the LF version… and i know it works to atleast 3V.

        … indeed the F part only goes to 4V… and it sucks cuzz its such a nice chip featurewise.

        if you read my next post,immediatly below the previous one, you can tell i was not trying to be so critical…

        and yes, this is Dog.

  3. … maybe I sounded too negative… he does say that he is used to working with the 16F84 which lacks the 88´s more advanced features.

    however, thats no excuse to not read the datasheet… and plan accordingly to indeed use the LF version.

    If he can program the normal version.. he can program the LF. its the same programing spec.
    PICkit3 will do it just fine.

    glad to see others using PICs… and im personally delighted to burst into firery critical flames over someones hard work…

    push on PIC Pendant man!


    1. Yea the 16(L)F88 is a old part. It is true you can get extended operation out of the newer parts by disabling BOR but this particular part you cannot. To make matters worse the LF parts cannot even cover the same performance range that the F part can at the same voltage. If memory serves me right they tap out at 10MHz for the LF part @5V vs 20MHz for the plain F part.

      The product selection tool found here
      (always have a hard time finding it from the home page) is a great tool when your trying to pick a micro for a new project. You can quickly narrow down their entire product line to a few parts that cover your core needs.

      Pic’s are not without their faults but have been using them for both hobby and work over the last 15 years and they have yet to let me down. (Although some of the bugs in their Ethernet engine almost drove me up a wall)

      And remember real men code in assembly… :P

      1. D’ya’know I never even considered the F88 an older part, especially in relation to the F84a, but I suppose it is.
        I haven’t bothered looking for new better PICs because I gathered a collection of free samples of the F88 (around ten of them) a few years ago and still have some left. Plus it works with my ancient PIC programmer.
        You’re right, should be using Assembly, I learned MC68000 assembly around 20 years ago and know how much of a pain it can be, PBP allows very quick painless prototyping, and perfectly suitable end results, albeit totally un-optimised – to me hobbies shouldn’t be too chore-like.
        Thanks for the product selector link. Can you recommend a good up-to-date replacement chip for the 16F88 then? :-)

  4. Modern PICS can work down to 1.8 volts as well. Look at the enhanced 14-bit cores. The 16LF1825 is an example.

    Be sure to only use a coin cell if you aren’t going to put any series current limiting resistors inline with the LEDs, no matter what uC you use.

    1. And there’s the key point here, ‘LF’ chips as opposed to straight F chips. Is it fair to say your 16LF1825 also comes in standard F variety (16F1825)?
      I’ve just gotten hold of some 16LF88s low power variant especially for this project. Works a treat!
      Also the F88 is just what I happened to settled on, it deals out 16 full GPIOs and you can even disable the MCLR requirement, hence nothing but +v, -v and perhaps a decoupling capacitor.

      1. When it comes to PICs and F vs. LF, the most important thing is to *read the datasheet*. The older parts like the PIC16F88 have LF versions that traded low voltage and low power operation for speed, but still run at 5V. The newer parts like the PIC16F1xxx parts have LF variants that make the parts no longer operate at 5V but allow the parts to be much lower power.The typical HaD reader probably won’t care too much about the price difference, but the Microchip Enhanced Midrange PICs (all the PIC16F1xxx) are lower priced, but more importantly, are packed with lots more peripherals.

  5. Same here, Stu. Can’t leave a comment for the article on your site. Basically, I wanted to ask if you considered trying refreshing one LED at a time (1/35th duty cycle) to maintain even brightness. I tried this on a little Sparkfun COM-09483 4-Digit display (1/32nd duty cycle) and it worked a treat.

    1. That’s a great idea, I never thought of it.
      I’ll definitely give it a go.
      Thinking about it, it’s probably okay to light, maybe two, three, or four at a time because of the 100mA sink limit per port – if it doesn’t get rid of the dimming problem, it would certainly mitigate it.
      I’m currently running at a column refresh of roughly 2ms, so in PBP I’d have to switch to PAUSEUS for individual addressing, but it’s definitely doable.

  6. Sorry for those trying to leave comments on my article – The tickbox in page-settings which should allow comments is ticked, but it’s not working.
    I even tried unticking it and reticking it. No joy. A search doesn’t turn anything up either.
    I’ll look further into it.

Leave a Reply

Please be kind and respectful to help make the comments section excellent. (Comment Policy)

This site uses Akismet to reduce spam. Learn how your comment data is processed.