Thread Rating:
  • 0 Vote(s) - 0 Average
  • 1
  • 2
  • 3
  • 4
  • 5
OLED errors
I've recently finished assembling the Pulse Pal 2 and am running into issues pretty much immediately during bench tests; namely that the OLED does not display anything when plugged in. Firmware installation appears to have worked successfully, but the next stage suggests that the Pulse Pal should display its current version number automatically but we get nothing. We have gone through testing connections and soldering with a multimeter and that appears fine, we have switched out the OLED with another and both display the same issue. I have skipped ahead a step and tried to get a response via Python but that runs into another issue:

myPulsePal = PulsePalObject() # Create a new instance of a PulsePal object
myPulsePal.connect('COM4') # Connect to PulsePal on port COM4 (open port, handshake and receive firmware version)
print(myPulsePal.firmwareVersion) # Print firmware version to the console

Traceback (most recent call last):

  File "<ipython-input-6-a625e04bf4e6>", line 2, in <module>
    myPulsePal.connect('COM4') # Connect to PulsePal on port COM4 (open port, handshake and receive firmware version)

  File "", line 64, in connect
    self.firmwareVersion = struct.unpack('<I',fvBytes)[0]

error: unpack requires a string argument of length 4

So I'm not sure if that is a separate issue or related. The only thing I can think of is that we were wrong to cheap out and not buy the SD card/socket. We had theorized if would not be necessary if we only wanted to run the device whilst connected to a computer but were we wrong in that assumption? Any help would be much appreciated.
Best wishes,
Gareth York

The error suggests that the PulsePal isn't replying with the firmware details.
You've guessed right, the error is because of the SD card.
To run it without an SD card, you'll have to modify the firmware a little.
In the 2.0.1 version, which is the latest, comment lines 255-274
They look like :

    // microSD setup
    if (!sd.begin(SDChipSelect, SPI_FULL_SPEED)) {
    if (!sd.chdir("Pulse_Pal")) { // Create/enter a unique folder for Pulse Pal
    currentSettingsFileName.toCharArray(currentSettingsFileNameChar, sizeof(currentSettingsFileName));, O_READ);
    for (int x = 0; x < 2; x++) {
      pinMode(InputLEDLines[x], OUTPUT);
      digitalWrite(InputLEDLines[x], LOW);
    validProgram = RestoreParametersFromSD();
    if (validProgram != 252) { // 252 is the last byte in a real program file, returned from RestoreParametersFromSD()

They are used to initialise the SD card and load saved settings from it.

Forum Jump: