Problem with multiple else if statements. light not changing colour as expected!

heya,
this is for a school project where all four of us are very inexperienced with coding.
we are trying to Get a light ( 60LED 172mm ring light- Ws2812B 5050 rgb - compatible with neopixel) to change colour depending on what weight a load cell is registering.
Starting at a dark red for no weight, moving up to a bright white light when it's loaded with weight.

the load cell is accurately measuring weights, and the light goes red with no weight applied. but instead of changing colour depending on the value of weight applied. it just turns a mid pink colour when any weight is applied.

any help would be much appreciated!!!

// loadcell tings
#include "HX711.h"
const int LOADCELL_DOUT_PIN = 6;
const int LOADCELL_SCK_PIN = 5;
HX711 scale;
float calibration_factor = 360; // this calibration factor must be adjusted according to your load cell
float units;
// ringlight tings
#include <Adafruit_NeoPixel.h>
#define LED_PIN 13//pin number HERE
#define LED_COUNT 60
#define BRIGHTNESS 50 // (max = 255)
//#define COLOUR_ORDER RGB
HX711 scale (A1, A0);

//#define pixels
int ledpin = 13;
int delayval = 10;// delay for half a second
//Adafruit_NeoPixel strip = Adafruit_NeoPixel(NUM_LEDS, PIN, NEO_GRB + NEO_KHZ800);
//declaring the ringlight as an object
Adafruit_NeoPixel ring(LED_COUNT, LED_PIN, NEO_GRB + NEO_KHZ800);
//   NEO_KHZ800  800 KHz bitstream (most NeoPixel products w/WS2812 LEDs ours is WS2812B)

void setup() {
  // put your setup code here, to run once:
  // load cell

  Serial.begin (9600);
  scale.begin(LOADCELL_DOUT_PIN, LOADCELL_SCK_PIN);
  Serial.println("HX711 calibration sketch");
  scale.set_scale(calibration_factor); //Adjust to this calibration factor
  scale.tare(); //Reset the scale to 0
  long zero_factor = scale.read_average(); //Get a baseline reading
  Serial.print("Zero factor: "); //This can be used to remove the need to tare the scale. Useful in permanent scale projects.
  Serial.println(zero_factor);

  //ring light
  ring.begin();// This initializes the NeoPixel library.
  ring.show(); // Turns off pixels for the start
  ring.setBrightness(BRIGHTNESS);
}

//scale.set_scale(2280.f); //// this value is obtained by calibrating the scale with known weights
scale.tare();

void loop() {
  // put your main code here, to run repeatedly:

  scale.set_scale(calibration_factor);
  Serial.print("Reading");
  units = scale.get_units(), 5;
  if (units < 0)
  {
    units = 0.00;
  }
  //Serial.print("Weight: ");
  Serial.println(units);
  //Serial.print(" grams");
  //Serial.print(" calibration_factor: ");
  //Serial.print(calibration_factor);
  //Serial.println();
 
  if (units == 0.00) {
    for (int i = 0; i < LED_COUNT; i++)
    {
      ring.setPixelColor(i, ring.Color (139, 0, 0));
      // 255,0,0 would be red , 139,0,0 should be dark red
    }
    ring.show(); // updates light ring
  }

 // else if ((units > 0.00)&&(units <= 10.00)) {
  else if (0.00 < units <= 10.00)  {
    for (int i = 0; i < LED_COUNT; i++) {
      ring.setPixelColor(i, ring.Color (178, 34, 34));
      // fire brick red
    }
        ring.show(); // updates light ring
  }
  
    else if (10.00 < units <= 30.00) {
    for (int i = 0; i < LED_COUNT; i++) {
      ring.setPixelColor(i, ring.Color (220, 20, 60));
    //crimson
    }
        ring.show(); 
    }
    
    else if (30.00 < units <= 60.00) {
      for (int i = 0; i < LED_COUNT; i++) {
    ring.setPixelColor(i,ring.Color (205,92,92));
    //indian red
      }
        ring.show();
    }
    
    else if (60.00 < units <= 100.00) {
      for (int i = 0; i < LED_COUNT; i++) {
    ring.setPixelColor(i,ring.Color (240,128,128));
    //light coral
    }
        ring.show();
    } 

    else if (100.00 < units <= 200.00) {
      for (int i = 0; i < LED_COUNT; i++) {
    ring.setPixelColor(i,ring.Color (233,150,122));
    //dark salmon
      }
        ring.show();
    }
   
   else if (200.00 < units <= 350.00) {
    for (int i = 0; i < LED_COUNT; i++) {
    ring.setPixelColor(i,ring.Color (255,160,122));
    //light salmon
    }
      ring.show();
    }
    
    else if (350.00 < units <= 500.00) {
      for (int i = 0; i < LED_COUNT; i++) {
    ring.setPixelColor(i,ring.Color (255,228,225));
    //misty rose
    }
        ring.show();
    }
    
    else if (500.00 < units <= 750.00) {
      for (int i = 0; i < LED_COUNT; i++) {
    ring.setPixelColor(i,ring.Color (255,240,245));
    //lavender bush
    }
        ring.show();
    } 
    
    else if (750.00< units  <= 1200.00){
      for (int i = 0; i < LED_COUNT; i++) {
     ring.setPixelColor(i,ring.Color(255,245,238));
    //seashell
    }
        ring.show();
    }
    
    else if (1200.00 < units  <= 1500.00) {
      for (int i = 0; i < LED_COUNT; i++) {
    ring.setPixelColor(i,ring.Color (255,250,250));
    //snow
    }
        ring.show();
    }

    else if (1500.00 < units  <= 2000.00) {
      for (int i = 0; i < LED_COUNT; i++) {
    ring.setPixelColor(i,ring.Color (255,255,255));
    //white
    }
        ring.show();
    }



}
  units = scale.get_units(), 5;

This looks very wrong

Have you tried printing the value of units after that line of code ?

Might be worth putting a Serial.PrintLn in each If block outputting the colour, that might tell you if it is always entering the same block.

It is also good debugging practice to print the values being tested before an if or a while to see whether they are as expected before the test

The following expression always evaluates to true:

  else if (0.00 < units <= 10.00)  {

You should change all of your conditional expressions to a more conventional syntax:

  else if (0.00 < units && units <= 10.00)  {

ToddL1962:
The following expression always evaluates to true:

  else if (0.00 < units <= 10.00)  {

You should change all of your conditional expressions to a more conventional syntax:

  else if (0.00 < units && units <= 10.00)  {

I suspected that issue too, but when I checked it with a C interpreter it worked as intended - that doesn't mean it was right or that it works in the Arduino compiler of course.

if (0.00 < units <= 10.00) the problem is that the expressions evaluate left to right.
So first "0.00 < units" evaluates to true (1) or false (0), depending on the value of "units".
Then that result (0 or 1) feeds into the comparison with 10.00.
Both 0 and 1 are less than 10.00, so the result is true.