Go Down

Topic: OLED display noise issue + U8glib  (Read 31 times) previous topic - next topic

EUMega

Hi,

I was wondering if anyone has an idea what I'm missing or doing wrong.

I have one of one of those display running with an ATmega328p:

0.96" OLED blue /yellow color

It is a red board with Keyes OLED Automation written on it.

It is working fine with the standard I2C U8glib constructor for the SSD1306 controller (ACK and FAST Option).

However I have the issue that if the whole circuit has been off for a couple of hours then the display would show random pixel noise on turn on and it would be stuck in that configuration (cycling power doesn't help).

I found that the display itself is from Solomon Systech and that the reset pin is connected to the display's power via a bridge (labeled R4) on the display board. After disconnecting the bridge and connecting a wire to the reset pin the display would only turn on if the pin is held high and the noise can be cleared by unplugging the reset pin and putting it back to high and resetting the ATmega.

I've tried mimicking this behavior with a digital pin on the ATmega however the display would not turn on when using a pullup against the supply voltage and a high state pin. It would also not reset when pulling the pin low. It really only does clear when unplugging the reset pin.

I've tried a couple of resistors in the range from a few 100 Ohms to 0.5 MOhm for a pullup.

So VCC -> R_pullup -> digital Pin + display_reset only works if the digital pin is configured as INPUT - but then the display doesn't reset it only 'works' i.e. turns on.

I'm using a battery pack (2xAA) and a step-up converter to get 3.3 V to supply the whole circuit.

There is only a DS18B20, a tactile switch (for resetting the ATmega) + pullup in the circuit as other components.

I'm stuck at the moment and anything I would try from now on would be a guessing game and was hoping anyone can point me in the right direction.

Thanks and Cheers,
Alex

olikraus

Calling u8g.begin() will reinit the display. Maybe you can try
Code: [Select]

  delay(1000);
  u8g.begin();

in the setup() procedure.

Oliver

Go Up
 


Please enter a valid email to subscribe

Confirm your email address

We need to confirm your email address.
To complete the subscription, please click the link in the email we just sent you.

Thank you for subscribing!

Arduino
via Egeo 16
Torino, 10131
Italy