more if statements problem plz help

hey
i have a problem in this code (if statement) that dosn't work after set =0.35 in truth way..
how can i get Alternative way to slove this issue

#include <EEPROM.h>
#include <math.h>
#include <Wire.h>
#include <LiquidCrystal.h>
LiquidCrystal lcd(12, 11, 5, 4, 3, 2);
int pinup   = 6;
int pindown = 7;
int pinok   = 8;
int relay   = 9;
int encoderPosCount = 0;
int pinALast;
int lcd_key     = 0;
int adc_key_in  = 0;
#define btnUP     1
#define btnDOWN   2
#define btnSELECT 3
#define btnNONE   4

int read_LCD_buttons()
{
  if (digitalRead(pinup) == HIGH)  return btnUP ;
  if (digitalRead(pindown) == HIGH)  return btnDOWN;
  if (digitalRead(pinok) == HIGH)    return btnSELECT;
  if (digitalRead(pinup) == pinALast  || digitalRead(pindown) == pinALast  || digitalRead(pinok) == pinALast)   return btnNONE;
}

int address ;
float set = 0.1;

void setup() {
  lcd.begin(16, 2);
  pinMode (pinup, INPUT_PULLUP);
  pinMode (pindown, INPUT_PULLUP);
  pinMode (pinok, INPUT_PULLUP);
  pinMode (relay, OUTPUT);
  EEPROM.get(address , set);

  digitalWrite(relay, HIGH);
  Serial.begin(9600);       // use the serial port

}

void loop() {
  while ( lcd_key != btnNONE )
  {
    lcd_key = read_LCD_buttons();
  }
  lcd.clear();
  lcd.setCursor(0, 0);
  lcd.print("  MOTOR SETTING  ");
  lcd.setCursor(0, 1);
  lcd.print("SET:  <    >    ");

  while (lcd_key != btnSELECT)
  {
    if ((set <= 2)  and (set >= 0.1))
    {
      lcd.setCursor(7, 1);
      lcd.print(set);
    }
    else if (set >= 2.1 )
    {
      set = 2;
      lcd.setCursor(7, 1);
      lcd.print(set);
    }
    else if (set <= 0.1 )
    {
      set = 0.1;
      lcd.setCursor(7, 1);
      lcd.print(set);
    }

    lcd_key = read_LCD_buttons();
    switch (lcd_key)
    {
      case btnUP:
        {
          set = set + 0.05;
          lcd.setCursor(12, 1);
          lcd.print(">");
          while (lcd_key != btnNONE )
          {
            lcd_key = read_LCD_buttons();
          }
          break;
        }
      case btnDOWN:
        {
          set = set - 0.05;
          lcd.setCursor(5, 1);
          lcd.print("<");
          while (lcd_key != btnNONE )
          {
            lcd_key = read_LCD_buttons();;
          }
          break;
        }
      case btnNONE:
        {
          lcd.setCursor(5, 1);
          lcd.print(" ");
          lcd.setCursor(12, 1);
          lcd.print(" ");
          break;
        }
    }
  }
  EEPROM.put(address   , set);
  Serial.println(set);

if (set==0.1){
         digitalWrite(relay, LOW);
        delay(1070);
        digitalWrite(relay, HIGH); 
}
else if (set==0.15){
         digitalWrite(relay, LOW);
        delay(1560);
        digitalWrite(relay, HIGH); 
}
else if (set==0.2){
         digitalWrite(relay, LOW);
        delay(1042);
        digitalWrite(relay, HIGH); 
}
else if (set==0.25){
         digitalWrite(relay, LOW);
        delay(1071);
        digitalWrite(relay, HIGH); 
}
else if (set==0.3){
         digitalWrite(relay, LOW);
        delay(1012);
        digitalWrite(relay, HIGH); 
}
else if (set==0.35){
         digitalWrite(relay, LOW);
        delay(2400);
        digitalWrite(relay, HIGH); 
}
else if (set==0.4){
         digitalWrite(relay, LOW);
        delay(2110);
        digitalWrite(relay, HIGH); 
}
else if (set==0.45){
         digitalWrite(relay, LOW);
        delay(2000);
        digitalWrite(relay, HIGH); 
}
else if (set==0.5){
         digitalWrite(relay, LOW);
        delay(2000);
        digitalWrite(relay, HIGH); 
}
else if (set==0.55){
         digitalWrite(relay, LOW);
        delay(3000);
        digitalWrite(relay, HIGH); 
}
else if (set==0.6){
         digitalWrite(relay, LOW);
        delay(3000);
        digitalWrite(relay, HIGH); 
}
else if (set==0.65){
         digitalWrite(relay, LOW);
        delay(3000);
        digitalWrite(relay, HIGH); 
}
else if (set==0.7){
         digitalWrite(relay, LOW);
        delay(1000);
        digitalWrite(relay, HIGH); 
}
else if (set==0.75){
         digitalWrite(relay, LOW);
        delay(1000);
        digitalWrite(relay, HIGH); 
}
else if (set==0.8){
         digitalWrite(relay, LOW);
        delay(1000);
        digitalWrite(relay, HIGH); 
}
else if (set==0.85){
         digitalWrite(relay, LOW);
        delay(1000);
        digitalWrite(relay, HIGH); 
}
else if (set==0.9){
         digitalWrite(relay, LOW);
        delay(1000);
        digitalWrite(relay, HIGH); 
}
else if (set==0.95){
         digitalWrite(relay, LOW);
        delay(1000);
        digitalWrite(relay, HIGH); 
}
else if (set==1.0){
         digitalWrite(relay, LOW);
        delay(1000);
        digitalWrite(relay, HIGH); 
}
else if (set==1.15){
         digitalWrite(relay, LOW);
        delay(1500);
        digitalWrite(relay, HIGH); 
}
else if (set==1.20){
         digitalWrite(relay, LOW);
        delay(1100);
        digitalWrite(relay, HIGH); 
}
else if (set==1.25){
         digitalWrite(relay, LOW);
        delay(1400);
        digitalWrite(relay, HIGH); 
}
else if (set==1.3){
         digitalWrite(relay, LOW);
        delay(1000);
        digitalWrite(relay, HIGH); 
}
else if (set==1.35){
         digitalWrite(relay, LOW);
        delay(1000);
        digitalWrite(relay, HIGH); 
}
else if (set==1.4){
         digitalWrite(relay, LOW);
        delay(1000);
        digitalWrite(relay, HIGH); 
}
else if (set==1.45){
         digitalWrite(relay, LOW);
        delay(1000);
        digitalWrite(relay, HIGH); 
}
else if (set==1.5){
         digitalWrite(relay, LOW);
        delay(1000);
        digitalWrite(relay, HIGH); 
}
else if (set==1.55){
         digitalWrite(relay, LOW);
        delay(1000);
        digitalWrite(relay, HIGH); 
}
 else if (set==1.6){
         digitalWrite(relay, LOW);
        delay(1000);
        digitalWrite(relay, HIGH); 
}
 else if (set==1.65){
         digitalWrite(relay, LOW);
        delay(1000);
        digitalWrite(relay, HIGH); 
}
 else if (set==1.7){
         digitalWrite(relay, LOW);
        delay(1000);
        digitalWrite(relay, HIGH); 
}
 else if (set==1.75){
         digitalWrite(relay, LOW);
        delay(1000);
        digitalWrite(relay, HIGH); 
}
else  if (set==1.8){
         digitalWrite(relay, LOW);
        delay(1000);
        digitalWrite(relay, HIGH); 
}
else  if (set==1.85){
         digitalWrite(relay, LOW);
        delay(1000);
        digitalWrite(relay, HIGH); 
}
 else if (set==1.9){
         digitalWrite(relay, LOW);
        delay(1000);
        digitalWrite(relay, HIGH); 
}
 else if (set==1.95){
         digitalWrite(relay, LOW);
        delay(1000);
        digitalWrite(relay, HIGH); 
}
else  if (set==2){
         digitalWrite(relay, LOW);
        delay(1000);
        digitalWrite(relay, HIGH); 
}
else 
 {
        digitalWrite(relay, HIGH); 
}

}

thx 4 all

Why not make set ‘type’ byte. 0-255 (edit: or unsigned int)
No need for float.
Then use switch/case for lines using ==

Delay is blocking, see Robin2’s doing multiple things at once.
http://forum.arduino.cc/index.php?topic=223286.0

larryd:
Why not make set ‘type’ byte. 0-255
No need for float.
Then use switch/case for lines using ==

Delay is blocking, see Robin2’s doing multiple things at once.
Demonstration code for several things at the same time - Project Guidance - Arduino Forum

how i do it by byte plzzz

Delta_G:
See here:

Why we don't compare floats with ==

Be careful with that code. It blocks everything waiting for a button in a lot of places. It's going to be hard to keep that responsive. I would write in a more non-blocking way. Let loop look for keypresses in one place and if you get one then process it with a state machine or something.

thx bro

Hi,
In the IDE can you select Tools, then Auto Format, it will indent your code so you can see the stacking of your if statements.

What is your code for and what is it supposed to do?

Thanks.. Tom... :slight_smile:

Multiple all numbers by 100.

If you use: byte set = 10;

eg: .05 becomes 5 and .1 becomes 10 . . . 1.95 becomes 195 etc.