diff --git a/Algorithm/menu_updated_.py b/Algorithm/menu_updated_.py
new file mode 100644
index 0000000000000000000000000000000000000000..bc1499ebfec98cbc7571d9c3252f14ffd138c1f5
--- /dev/null
+++ b/Algorithm/menu_updated_.py
@@ -0,0 +1,135 @@
+#menu.py
+
+from machine import Pin, I2C
+from ssd1306 import SSD1306_I2C
+import time
+
+class MenuSystem:
+    def __init__(self):
+        # Initialize I2C and OLED
+        self.i2c = I2C(1, scl=Pin(15), sda=Pin(14), freq=400000)
+        self.oled = SSD1306_I2C(128, 64, self.i2c)
+        
+        # Menu configuration
+        self.menu_items = ["Measure Heart", "HRV Analysis"]
+        self.selected = 0
+        self.state = "menu"
+        
+        # Configure pins
+        self.pin_a = Pin(10, Pin.IN, Pin.PULL_UP)  # CLK
+        self.pin_b = Pin(11, Pin.IN, Pin.PULL_UP)  # DT
+        self.btn_ok = Pin(12, Pin.IN, Pin.PULL_UP)  # Button press
+        
+        # State tracking
+        self.last_state = self.pin_a.value()
+        self.last_press = time.ticks_ms()
+        
+        # Heart rate monitor
+        self.heart_monitor = None
+        self.measuring_heart_rate = False
+        
+        # Set up interrupts
+        self.pin_a.irq(trigger=Pin.IRQ_RISING | Pin.IRQ_FALLING, handler=self._on_rotate)
+        self.btn_ok.irq(trigger=Pin.IRQ_FALLING, handler=self._on_press)
+    
+    def set_heart_monitor(self, monitor):
+        """Set the heart rate monitor instance"""
+        self.heart_monitor = monitor
+    
+    def start(self):
+        """Start the menu system and enter the main loop"""
+        self.draw_menu()
+        while True:
+            if self.measuring_heart_rate and self.heart_monitor:
+                bpm = self.heart_monitor.update()
+                if bpm:
+                    self.display_heart_rate(bpm)
+            time.sleep(0.1)
+    
+    def draw_menu(self):
+        """Display the main menu on OLED"""
+        self.oled.fill(0)
+        for i, item in enumerate(self.menu_items):
+            prefix = "> " if i == self.selected else "  "
+            self.oled.text(prefix + item, 0, i * 12)
+        self.oled.show()
+    
+    def show_selected_screen(self):
+        """Display the selected menu item screen"""
+        self.oled.fill(0)
+        
+        # Start measuring heart rate if first option selected
+        if self.selected == 0 and self.heart_monitor:
+            self.measuring_heart_rate = True
+            self.oled.text("Measuring...", 0, 0)
+            self.oled.text("Please wait", 0, 20)
+            self.oled.text("Press to return", 0, 50)
+            self.oled.show()
+        elif self.selected == 1 and self.heart_monitor:
+            self.measuring_heart_rate = True
+            self.oled.text("Collecting data", 0, 0)
+            self.oled.text("Please wait", 0, 20)
+            self.oled.text("Press to return", 0, 50)
+            self.oled.show()
+            hrv_analysis = self.heart_monitor.generate_analysis()
+            self.display_hrv_analysis(hrv_analysis)
+        else:
+            self.measuring_heart_rate = False
+            self.oled.text("Selected:", 0, 0)
+            self.oled.text(self.menu_items[self.selected], 0, 20)
+            self.oled.text("Press to return", 0, 50)
+            self.oled.show()
+        while self.btn_ok.value() == 1:
+            time.sleep_ms(1)
+    
+    def display_heart_rate(self, bpm):
+        """Display the heart rate reading"""
+        if self.state == "selected" and self.selected == 0:
+            self.oled.fill(0)
+            self.oled.text("Heart Rate:", 0, 0)
+            self.oled.text(str(bpm) + " BPM", 0, 20)
+            self.oled.text("Press to return", 0, 50)
+            self.oled.show()
+    
+    def display_hrv_analysis(self, analysis_results):
+        if self.state == "selected" and self.selected == 1:
+            self.oled.fill(0)
+            
+            if isinstance(analysis_results, dict):
+                mean_hr = analysis_results.get("mean_hr", 0)
+            else:
+                # Backward compatibility for old code
+                mean_hr = analysis_results
+            
+            # Display the results
+            self.oled.text("Mean HR:", 0, 0)
+            self.oled.text(str(mean_hr) + " BPM", 0, 12)
+            self.oled.text("Press to return", 0, 54)
+            self.oled.show()
+            
+    def _on_rotate(self, pin):
+        """Handle rotary encoder rotation interrupt"""
+        if self.state != "menu":
+            return
+        
+        new_state = self.pin_a.value()
+        if new_state != self.last_state and new_state == 1:
+            if self.pin_b.value() != new_state:
+                self.selected = (self.selected + 1) % len(self.menu_items)
+            else:
+                self.selected = (self.selected - 1) % len(self.menu_items)
+            self.draw_menu()
+        self.last_state = new_state
+    
+    def _on_press(self, pin):
+        """Handle button press interrupt"""
+        now = time.ticks_ms()
+        if time.ticks_diff(now, self.last_press) > 200:
+            if self.state == "menu":
+                self.state = "selected"
+                self.show_selected_screen()
+            else:
+                self.state = "menu"
+                self.measuring_heart_rate = False
+                self.draw_menu()
+        self.last_press = now