Encoder button for OLED display menu

Hello everyone,

I have written code for basic OLED display menu with navigation using rotary encoder.
But whenever I want to choose any menu item (enter it) this sub menu appears only if encoder button is pushed. I wanted to write code like this

	case 0:
	frame0();
	break;
	case 1:
	if(button()) frame1();
	else subFrame1();
	break;	
	case 2:
	if(button()) frame2();
	else subFrame2();
	break;
	case 3:
	if(button()) frame3();
	else subFrame3();
	break;
	case 4:
	if(button()) frame4();
	else subFrame4();
	break;

so my function is

bool button(){	
  presentButtonState = digitalRead(SW); 
  if(previousButtonState == HIGH && presentButtonState == LOW) {
    Serial.println("The button is pressed");
    btnState = !btnState; 
    if (btnState == HIGH){
      Serial.println("ON ");
    }
    else{
      Serial.println("OFF");
    }
  }
	int previousButtonState    = presentButtonState;    
return btnState;
}

Can anyone please help? Thanks in advance

You are creating a NEW, LOCAL version of 'previousButtonState' so you global variable with the same name is not getting set. You should change:
int previousButtonState = presentButtonState;
to
previousButtonState = presentButtonState;

This topic was automatically closed 180 days after the last reply. New replies are no longer allowed.