Led blinking with millis (inside case)

Hi... i got stuck with my project.
in my code, i had case 1, 2, 3... each case had 3 different led, i wanna make that led blinking with millis, not delay.
i put code like this, but led won blink.

#include <SoftwareSerial.h>
SoftwareSerial mySerial(6, 5); // RX, TX

const int hijau = 2;
const int kuning = 3;
const int merah = 4;
const int buzz1 = 8;
const int buzz2 = 7;
int kondisi;
int state;
int laststate;

//milis
int hijauState = LOW;
unsigned long previousMillis = 0;
const long interval = 50;
unsigned long currentMillis = millis();

void setup() {
Serial.begin(9600);
mySerial.begin(9900);
pinMode(hijau, OUTPUT);
pinMode(kuning, OUTPUT);
pinMode(merah, OUTPUT);
pinMode(buzz1, OUTPUT);
pinMode(buzz2, OUTPUT);
Serial.println("Kami Siap!!");

digitalWrite(buzz1,1);
digitalWrite(hijau,1);
digitalWrite(kuning,1);
digitalWrite(merah,1);
delay(1000);
digitalWrite(buzz1,0);
digitalWrite(hijau,0);
digitalWrite(kuning,0);
digitalWrite(merah,0);
}


void loop() {
    if(mySerial.available() > 0){ // Checks whether data is comming from the serial port
    kondisi = mySerial.read(); // Reads the data from the serial port
    state = kondisi;
   detachInterrupt(0);
   
switch (kondisi)
{case 1:

  if (currentMillis - previousMillis >= interval) {
  previousMillis = currentMillis;
      if (hijauState == LOW) {
          hijauState = HIGH;
          } else {
          hijauState = LOW;
          }
      digitalWrite(hijau, hijauState);
      }
  
//    digitalWrite(hijau, HIGH);
      digitalWrite(kuning, LOW);
      digitalWrite(merah, LOW);
      Serial.println("NORMAL");
break;

case 2:
      digitalWrite(hijau, LOW);
      digitalWrite(kuning, HIGH);
      digitalWrite(merah, LOW);
      digitalWrite(buzz1, HIGH);
      tone(buzz1, 2000, 100);
      Serial.println("SEDANG");

break;

case 3:
      digitalWrite(merah, HIGH);
      digitalWrite(kuning, LOW);
      digitalWrite(hijau, LOW);
      digitalWrite(buzz1, HIGH);
      tone(buzz1, 5000, 50);
      Serial.println("CEPAT");
break;
    }
laststate = state;
}
}

A big problem is that the switch funcion only executes when there is new data from the mySerial port. Move the switch to outside of the if (mySerial.available() block so that the switch block executes each time through loop.

What is sending the data via software serial?
If you put a Serial.print after this line:

kondisi = mySerial.read(); // Reads the data from the serial port

what do you see in serial monitor?
if you are receiving characters, this:

case 1:

may need to be

case '1':

You have attached no interrupt to detach. What do you think that detachInterrupt(0); is doing?

Hello, thank for reply...

actually i made speed indicator with 2 arduino, connecting with bluetooth, the first arduino read the rotation with LM393 sensor, and calculate it to speed, then i put 3 case on it, case 1 normal speed, case 2 medium, case 3 high speed. so the first arduino only send number 1 or 2 or 3 to second arduino, here the code:

#include <Wire.h>
#include <SoftwareSerial.h>
SoftwareSerial mySerial(6, 5); // RX, TX
const int sensor = 2;
//const int hijau = 9;
//const int kuning = 10;
//const int merah = 11;
//const int buzz = 8;
int sensorstate = LOW;
int laststate = LOW;
volatile byte rpmcount;
unsigned int rpm;
int kmph;
float kroda;
float a; //Satuan cm/menit ke km/h
unsigned int r;
unsigned long timeold;
int kondisi; 

void rpm_fun()
 {
  rpmcount++;
 }
 
void setup() {
attachInterrupt(0, rpm_fun, FALLING);
pinMode(sensor, INPUT);
pinMode(hijau, OUTPUT);
pinMode(kuning, OUTPUT);
pinMode(merah, OUTPUT);
pinMode(buzz, OUTPUT);
Serial.begin(9600);
mySerial.begin(9900);

   rpmcount = 0;
   rpm = 0;
   timeold = 0;
   a = 0.0006;
//====== INPUT UKURAN JARI-JARI RODA ==========//
r = 23;
//============================================//

}

void loop() {
sensorstate = digitalRead(sensor);

    if (sensorstate != laststate) {
        if (sensorstate == HIGH) {
   detachInterrupt(0);
//=========== RUMUS =================//
   rpm = 30*1000/(millis() - timeold)*rpmcount;
   timeold = millis();
   rpmcount = 0;
   //kroda=2*3.14*r;
   kmph = rpm*(2*3.14*23)*a; //*0,0006;
      }

   {
      //KMPH DIBAWAH 50
      if (kmph<=50)
      {
      kondisi = 1;
      }

      //KMPH DIANTARA 50 - 80
      if (kmph>=50 && kmph<=80)
      {
      kondisi = 2;
      }
      
      //KMPh DIATAS 80
      if (kmph>=80)
      {
      kondisi = 3;
      }
      mySerial.write(kondisi);

Serial.print("RPM =  ");
Serial.print(rpm);
Serial.print("\t");
Serial.print(" | SPEED =  ");
Serial.print(kmph);
Serial.print("\t");
Serial.print("KM/h");
Serial.print("\t");
Serial.print("KONDISI = ");
Serial.println(kondisi);
   }

      laststate = sensorstate;
      attachInterrupt(0, rpm_fun, FALLING);
}
}

then on second arduino receive the data, 1,2,3...
the code is..

#include <SoftwareSerial.h>
SoftwareSerial mySerial(6, 5); // RX, TX

const int hijau = 2;
const int kuning = 3;
const int merah = 4;
const int buzz1 = 8;
const int buzz2 = 7;
int kondisi;
int state;
int laststate;

//milis
int hijauState = LOW;
unsigned long previousMillis = 0;
const long interval = 50;
unsigned long currentMillis = millis();

void setup() {
Serial.begin(9600);
mySerial.begin(9900);
pinMode(hijau, OUTPUT);
pinMode(kuning, OUTPUT);
pinMode(merah, OUTPUT);
pinMode(buzz1, OUTPUT);
pinMode(buzz2, OUTPUT);
Serial.println("Kami Siap!!");

digitalWrite(buzz1,1);
digitalWrite(hijau,1);
digitalWrite(kuning,1);
digitalWrite(merah,1);
delay(1000);
digitalWrite(buzz1,0);
digitalWrite(hijau,0);
digitalWrite(kuning,0);
digitalWrite(merah,0);
}


void loop() {
    if(mySerial.available() > 0){ // Checks whether data is comming from the serial port
    kondisi = mySerial.read(); // Reads the data from the serial port
    state = kondisi;
   detachInterrupt(0);
   
switch (kondisi)
{case 1:

  if (currentMillis - previousMillis >= interval) {
  previousMillis = currentMillis;
      if (hijauState == LOW) {
          hijauState = HIGH;
          } else {
          hijauState = LOW;
          }
      digitalWrite(hijau, hijauState);
      }
  
//    digitalWrite(hijau, HIGH);
      digitalWrite(kuning, LOW);
      digitalWrite(merah, LOW);
      Serial.println("NORMAL");
break;

case 2:
      digitalWrite(hijau, LOW);
      digitalWrite(kuning, HIGH);
      digitalWrite(merah, LOW);
      digitalWrite(buzz1, HIGH);
      tone(buzz1, 2000, 100);
      Serial.println("SEDANG");

break;

case 3:
      digitalWrite(merah, HIGH);
      digitalWrite(kuning, LOW);
      digitalWrite(hijau, LOW);
      digitalWrite(buzz1, HIGH);
      tone(buzz1, 5000, 50);
      Serial.println("CEPAT");
break;
    }
laststate = state;
}
}

the led and serial print only work if they got data change.

the led and serial print only work if they got data change.

Is that what you want? The LED will not flash on and off every 50 milliseconds as long as the switch is in the if block.