Close

The Holotape Deck - Part 2 - (h)OLED screens Batman!

A project log for Fully Functional* Pip-Boy™ 2000 Mk VI

*with varying degrees of function

vincentVincent 07/10/2020 at 21:060 Comments

Good news everyone! The OLED displays got in, and I couldn't help but do a proof of concept fitting test.
I hooked the OLED up to an Arduino Uno, as I only have 1 Artemis Nano board (and I don't want to mess that one up so early in the project!). I downloaded the Adafruit libraries for this thing, and lo and behold the screen fit and worked!

I disassembled the Holotape Deck and cut out an initial hole for the OLED to show through.
Here's the initial quick & dirty result:

As you can see, there's plenty of room up and downwards of the enclosure to fit in the OLED display.
Unfortunately the display is not long enough to cover all of the digits for the timer/counter, so I might have to fit in two displays (I do hope I can drive two of them at the same time!).
As for pixel real-estate, you can see how many characters I can cram in there. I hope, with some elbow grease I can design a nice rolling counter animation, but I will settle on a digital clock that tells the time correctly!

Since I used the Arduino UNO with some DuPont connectors, there's some fitting issues. I think if I directly solder wires to the pins and drill some hole for the wires to go through, it might be a good fit.
It will all depend on whether or not I can drive two screens with one Artemis Nano. I did find the code for it on the Adafruit's forums, so there's that:
    #include <Wire.h>
    #include <Adafruit_SSD1306.h>

    #define SCREEN_WIDTH 128 // OLED display width, in pixels
    #define SCREEN_HEIGHT 32 // OLED display height, in pixels

    // Declaration for an SSD1306 display connected to I2C (SDA, SCL pins)
    #define OLED_RESET     -1 // Reset pin # (or -1 if sharing Arduino reset pin)

    Adafruit_SSD1306 display(SCREEN_WIDTH, SCREEN_HEIGHT, &Wire, OLED_RESET);
    Adafruit_SSD1306 display2(SCREEN_WIDTH, SCREEN_HEIGHT, &Wire, OLED_RESET);

    void setup() { 
      display.begin(SSD1306_SWITCHCAPVCC, 0x3C); // Default OLED address, usually
      display2.begin(SSD1306_SWITCHCAPVCC, 0x3D); // Second OLED address, via onboard jumper
     
     
      display.clearDisplay();
      display.setTextSize(1);
      display.setTextColor(WHITE);
      display.setCursor(0,0);
      display.print("Display A");
      display.display();
     
      display2.clearDisplay();
      display2.setTextSize(1);
      display2.setTextColor(WHITE);
      display2.setCursor(0,0);
      display2.print("Display B");
      display2.display();
    }

    void loop() {
      }

It does mention I2C address-changing jumpers, so I got to check if mine has these or not.

Anyways; the journey to creating a fully functional Pip-Boy has gotten a few extra miles on the meter!
In the mean time I'm still waiting for the Dial Motors and LiPo batteries to arrive. As soon as I have some more information regarding any of the modules, expect a new Project Log!


Discussions