Is the problem in the code or in the OLED screen?

Thank you very much for the additional comments.

  1. the OLED display takes up a LOT of memory and it looks like you are using an UNO so you may be running out of memory.

when I compile the code, it is well within the limit (50% or so), although I don't know if that's a reliable value or if things change when running for real

  1. You calculations on the input reduce to simply the index into the original array. a..z = 0..25 and '0'..'9' go to 26..35. That is why my code just stores the index along with the char when you press the KEY.

This is genius, and at the same time I feel stupid for not having thought of that before... :sweat_smile:

  1. your two indices into your matrix are just counting from each end of your array.

Correct, the one for the quotients is ascendant, while the one for the remainder is descendent order

  1. What comes out on the Serial Monitor? Adding some debug statements during the calculation may help.

If you are talking about the code you provided, nothing comes out of the serial monitor (I don't think your code included any serial.print, neither does mine). I want to add debug statements, however it's something I have never done before so I am planning to study about it and try to do it over the weekend. I only hope I'm gonna be able to figure out how to do it.

  1. what part of the code I provided don't you understand? I simply renamed a few variables, moved a few global variables to local versions and put some code inside functions. Nothing too fancy.

I do understand the general flow contained in void loop, however the logic that you used for some other parts of the code is too much for me to grasp :persevere:

For example, I am not sure where the value of "idx" comes from as I didn't see anywhere in the code where this is assigned, as well as I never saw "uint8_t" before or never used "bool" either. I also don't understand the logic of this code

  num[InputArrayPos] = idx; // store index for later computation
  InputArray[InputArrayPos++] = Input[idx];
  InputArray[InputArrayPos] = '\0';

I am sure it's probably the best possible way of writing this code, I just get lost in all these passages since everything I know about coding I have learnt in a span of only a couple of weeks, and only through the 20 lessons or so that came with the Arduino... That's about as much as I know when it comes to coding...