Problem with glowing LEDs after adding code for display.

Actually with the regulator they use you should be fine down to about 6.5v not sure why they ask for 9.

Are you using an UNO?

Problem Solved!

It was part of the code, LEDs was actually blinking very fast, not glowing.

Removed the last part of the code that set the LEDs Low and instead only made them go low when it passed a threshold.

Here is new code.

//Include buttons library
  #include <Button.h>

//Include Oled Library
  #include <U8glib.h>

//New display
  U8GLIB_SSD1306_128X64 oled(U8G_I2C_OPT_NONE);

//Define time of blink
  byte blinkTime = 500;

//Define temperature tresholds
  const int tempHigh = 25;
  const int tempDangerHigh =28;
  const int tempDangerLow = 0;
  const int tempLow = 5;
  const int tempNormal = tempHigh / 2 + tempLow / 2; 
  const int tempRangeNormal = tempHigh / 2 - tempLow / 2;

const String statusCheck[] = {
  "Temperature is dangerously low, current temperature is: ",
  "Temperature is low, current temperature is: ", 
  "Temperature is low but OK, current temperature is; ", 
  "Temperature is OK, Current temperature is: ", 
  "Temperature is high but OK, current temperature is: ", 
  "Temperature is high, Current temperature is: ", 
  "Temperature is dangerously high, current temperature is: ",
  "Couldnt get status, Current temperature is: "
  };
 
//Setting Status
  byte setStatus;

//Define sensor
  int tempSensor = A0;

//Storage of sensor value
  int actualTemp;

//Define button
  Button btnTestMessage(2);

//Define LEDS
  int redLed = 7;
  int greenLed = 4;
  int blueLed = 8;

void setup() {
  
  // Set LEDs as output

  pinMode(redLed, OUTPUT);
  pinMode(greenLed, OUTPUT);
  pinMode(blueLed, OUTPUT);

  // Set Button as input
  btnTestMessage.begin();
  // Start serial monitor

  Serial.begin(9600);
  

}

void loop() {


  //Read temperature from sensor
  actualTemp = analogRead(tempSensor);
  actualTemp = map(actualTemp, 0, 1023, -5.0, 30.0);
  
  
  //Print to Oled.

  oled.firstPage();

  do {
    oled.setFont(u8g_font_helvB08);
    char currentTxt[] = "Current Temperature: ";
    int xCurrentTxt = (oled.getWidth() - oled.getStrWidth(currentTxt)) / 2;
    oled.drawStr(xCurrentTxt, 10, currentTxt);
  
    oled.setFont(u8g_font_helvB14);
    char buf[9];
    sprintf (buf, "%d", actualTemp);
    int xBuf = (oled.getWidth() - oled.getStrWidth(buf)) /2;
    oled.drawStr(xBuf, 40, buf);
  
    oled.setFont(u8g_font_helvB08);
    char degreesTxt[] = "Degrees Celsius";
    int xDegreesTxt = (oled.getWidth() - oled.getStrWidth(degreesTxt)) / 2;
    oled.drawStr(xDegreesTxt, 60, degreesTxt);
  } 
   while(oled.nextPage());


  //If testbutton is pressed
  
  if (btnTestMessage.pressed()){
  Serial.print(statusCheck[setStatus]);
  Serial.print(actualTemp);
  Serial.println("°C");

  }
 
  
  //If Danger Cold
  if (actualTemp <= tempDangerLow){
    digitalWrite(blueLed, HIGH);
  if (setStatus != 0 ){
     digitalWrite(greenLed, LOW);
     digitalWrite(blueLed, LOW);
     digitalWrite(redLed, LOW);
      setStatus = 0;
      Serial.print(statusCheck[setStatus]);
      Serial.print(actualTemp);
      Serial.println("°C");   
    }
  else {
    setStatus = 0;
    }
  }
  
  
  //If cold
  else if (actualTemp > tempDangerLow && actualTemp <= tempLow) {
    digitalWrite(blueLed, HIGH);
    delay(blinkTime);
    digitalWrite(blueLed, LOW);
    delay(blinkTime);
     if (setStatus != 1 ){
       digitalWrite(greenLed, LOW);
  digitalWrite(blueLed, LOW);
  digitalWrite(redLed, LOW);
      setStatus = 1;
      Serial.print(statusCheck[setStatus]);
      Serial.print(actualTemp);
      Serial.println("°C");   
    }
  else {
    setStatus = 1;
    }
  }
  
  // if temp OK

  else if (actualTemp <= tempNormal + tempRangeNormal / 2 && actualTemp >= tempNormal - tempRangeNormal / 2 ){
      digitalWrite(greenLed, HIGH);
     if (setStatus != 3 ){
       digitalWrite(greenLed, LOW);
  digitalWrite(blueLed, LOW);
  digitalWrite(redLed, LOW);
      setStatus = 3;
      Serial.print(statusCheck[setStatus]);
      Serial.print(actualTemp);
      Serial.println("°C");   
    }
  else {
    setStatus = 3;
    }
  }
  
  // temp OK but Low
  else if (actualTemp > tempLow && actualTemp <= tempLow + tempRangeNormal / 2){
      digitalWrite(greenLed, HIGH);
      delay(blinkTime);
      digitalWrite(greenLed, LOW);
      delay(blinkTime);
       if (setStatus != 2 ){
       digitalWrite(greenLed, LOW);
  digitalWrite(blueLed, LOW);
  digitalWrite(redLed, LOW);
      setStatus = 2;
      Serial.print(statusCheck[setStatus]);
      Serial.print(actualTemp);
      Serial.println("°C");   
    }
  else {
    setStatus = 2;
    }
  }
  
  
  // temp OK but High
    else if (actualTemp < tempHigh && actualTemp >= tempHigh - tempRangeNormal / 2){
      digitalWrite(greenLed, HIGH);
      delay(blinkTime);
      digitalWrite(greenLed, LOW);
      delay(blinkTime);
            if (setStatus != 4 ){
       digitalWrite(greenLed, LOW);
  digitalWrite(blueLed, LOW);
  digitalWrite(redLed, LOW);
      setStatus = 4;
      Serial.print(statusCheck[setStatus]);
      Serial.print(actualTemp);
      Serial.println("°C");   
    }
  else {
    setStatus = 4;
    }
  }

  //If Hot
  else if (actualTemp >= tempHigh && actualTemp < tempDangerHigh) {
    digitalWrite(redLed, HIGH);
    delay(blinkTime);
    digitalWrite(redLed, LOW);
    delay(blinkTime);
         if (setStatus != 5 ){
       digitalWrite(greenLed, LOW);
  digitalWrite(blueLed, LOW);
  digitalWrite(redLed, LOW);
      setStatus = 5;
      Serial.print(statusCheck[setStatus]);
      Serial.print(actualTemp);
      Serial.println("°C");   
    }
  else {
    setStatus = 5;
    }
  }
  
  //If Danger Hot
  else if (actualTemp >= tempDangerHigh) {
    digitalWrite(redLed, HIGH);
     if (setStatus != 6 ){
       digitalWrite(greenLed, LOW);
  digitalWrite(blueLed, LOW);
  digitalWrite(redLed, LOW);
      setStatus = 6;
      Serial.print(statusCheck[setStatus]);
      Serial.print(actualTemp);
      Serial.println("°C");   
    }
  else {
    setStatus = 6;
    }
  }
  
  
  //If Error
  else { 
    digitalWrite(blueLed, HIGH);
      delay(blinkTime);
      digitalWrite(blueLed, LOW);
      delay(blinkTime);
      digitalWrite(greenLed, HIGH);
      delay(blinkTime);
      digitalWrite(greenLed, LOW);
      delay(blinkTime);
      digitalWrite(redLed, HIGH);
      delay(blinkTime);
      digitalWrite(redLed, LOW);
      delay(blinkTime);
     if (setStatus != 7 ){
       digitalWrite(greenLed, LOW);
  digitalWrite(blueLed, LOW);
  digitalWrite(redLed, LOW);
      setStatus = 7;
      Serial.print(statusCheck[setStatus]);
      Serial.print(actualTemp);
      Serial.println("°C");   
    }
  else {
    setStatus = 7;
    }
  }
 }

nice, i thought that looked funny... it's something you would put at setup if needed.

Put it at the bottom since LEDs stayed on when it went between some of the thresholds, but now i see why that wasn´t the smartest :wink:

Could it be that the code runs faster without the Oled part so it became like a PWM?
long code - long time low - not much light, short code - short time low - glowing brighter?