1

I am attempting to get the graphicstest example bundled with the Adafruit ST7735 library for the 0.96 inch LCD screen.

The example runs fine and serial communication is up and running. However, nothing outputs on the screen. I verified that the code works with other Arduino boards and that I have it properly wired -> SCK to SCL, MOSI to SDA, etc.

I'm not sure if I am doing something wrong, or if this is a limitation of the board.

Edit: I added the modified graphicstest code to the Internet, it can be found here: https://drive.google.com/file/d/1cFOgQXhhH1vou0KUrFzBDMp0iiIp1Yuy/view?usp=sharing

I also added a crude diagram of how the screen is wired up to the Pico. Note that the LCD is powered externally since the Pico cannot handle the current draw of powering the LCD. https://drive.google.com/file/d/1RmZSHBcelwC9caLoQC9iE5Lb4eHG9S2O/view?usp=sharing

8
  • Does your Arduino Pico have the chip atmega32u4? If yes, you could have issue with the library. Most of the standard arduino libraries are for atmega328 or atmega2560 (UNO and Mega). You will find that most of the libraries, that work for UNO or Mega, don't usually work for Arduino Leonardo (atmega32u4).
    – SimonVu14
    Feb 20 '21 at 9:16
  • Show your wiring and any modifications you made to the graphicstest code.
    – timemage
    Feb 20 '21 at 19:28
  • @SimonVu14 I had a feeling that was the case. I'll try to see if there's another library out there other than the Adafruit one.
    – Pyro
    Feb 23 '21 at 18:02
  • @timemage I only changed the pin outs to pins that were available on the Pico. RST was 4, CS was 3, and DC was 2.
    – Pyro
    Feb 23 '21 at 18:03
  • Until I can see everything you can see I'm unlikely to be of any help.
    – timemage
    Feb 23 '21 at 18:06
1

I found out the problem. I was trying to connect to the SCK and MOSI pins on the back of the Pico. Later research shows that these are meant for programming and burning a bootloader onto the microprocessor.

The Adafruit library allowed me to define my own pins for SCK and MOSI. Once I switched to using the Adafruit_ST7735(int8_t cs, int8_t dc, int8_t mosi, int8_t sclk, int8_t rst) constructor, it worked after that.

1
  • Well, it's nice that you got it working, but there really isn't any reason why you shouldn't be able to use those pins. As you say, they are used for ISP programming, the bootloader or whatever else. But, they're also just SPI pins and beyond that just "digital" pins.
    – timemage
    Mar 9 '21 at 2:38
0

From a comment on the question:

I am going directly off of what's on their website. mellbell.cc/products/pico What they show on the link you provided is a prototype.

The "link you provided" refers to this, which despite being described as for a "prototype", shows correct information with regard to the SPI related pins.

As it turns out the documentation in the images you referenced at mellbell.cc/products/pico is incorrect, both under the product shots and in the pin-outs section under "Documentation". You can tell this by looking right at their image of their board and their diagram, and comparing that with the pinout of the ATMega32U4 itself:

Pico documentation compared with reality.

Interestingly, in the pinout on 8 of their PDF in the documentation section, they have it correct again and closer to the prototype:

From page 8 of PDF

Or at least it is with respect to the SPI signals. The diode is in the wrong and orientation. In fact, the whole board seems to be left-right reversed.

Again, from the same comment:

Additional research also shows that the SCK and MISO pins I'm connected to seem to be for programming only

It is true that these pins are used for ISP programming. However, they also carry the data for the SPI bus peripheral when you're not doing ISP programming. So they are "for programming" just not "only" for programming. This is down to how the ATMega32U4 is, and not something tha the Pico makers have much control over.

This is also the case for UNO and basically all of the other popular AVR based Arduinos that can be programmed using the ISP method, as opposed to uPDI and others. What slightly less common is to have these pins only available as unpopulated pads or only available on the ISP header.

I can see why you might want to not deal with those contacts because of the form factor of the Pico board. However, because those pins are actually 32u4's SPI interface, and they should perform better than the bit-banging that Adafruit library would need to resort to in order to use other (non-SPI) pins. So there is an incentive to use them.

So, your solution is a solution, but not for the reasons you think. The pins you were previously trying to use will work when your efforts aren't being undermined by bad documentation, and you get them in the right order.

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

Not the answer you're looking for? Browse other questions tagged or ask your own question.