diff --git a/HapticControl_Webserver/HapticControl.py b/HapticControl_Webserver/HapticControl.py
index 469ea428d453ad2e43b959412b29fdb6275de976..97e8b7657a09a849db3594fe62992d9bdb0efec5 100644
--- a/HapticControl_Webserver/HapticControl.py
+++ b/HapticControl_Webserver/HapticControl.py
@@ -56,6 +56,11 @@ class HapticControl:
                     pass
         return (value)
 
+    def setPos(self, value):
+        self.ser.write(b"swp" + str(value).encode("utf-8") + b"\r\n")
+        value = self.ser.readline()
+        return value;
+
     def setStrenghtDet(self, value):
         self.ser.write(b"sws" + str(value).encode("utf-8") + b"\r\n")
         value = self.ser.readline()
diff --git a/HapticControl_Webserver/main.py b/HapticControl_Webserver/main.py
index 650a7f803a857b643aa89fc8f76db2746ad2edf9..2f2d828b307d6ab44b8c7fa2ad8eccc87b7f6e20 100644
--- a/HapticControl_Webserver/main.py
+++ b/HapticControl_Webserver/main.py
@@ -1,3 +1,4 @@
+import math
 import json
 import HapticControl
 import VolumeControl
@@ -16,24 +17,41 @@ socketio = SocketIO(app, cors_allowed_origins="*")
 
 Volume = VolumeControl.VolumeControl()
 hapticControl = HapticControl.HapticControl()
-mindB = 0
-maxdB = 0
+
+global mindB
+global maxdB
+global nbDet
+global scaleBtn
+global valuePos
+
+mindB = -101.5
+maxdB = 25.5
 nbDet = 36
+scaleBtn = 360
+valuePos = nbDet/2
 
 """
 Background thread
 """
 
 def background_thread():
-    print("Get value of the volume")
-    vol = 0
-    db = 0
-    while True:
-      value = hapticControl.getData(vol)
-      vol = value
-      valueScaled = value*(255/nbDet)
-
-      db = 25.5-(0.5*(255-valueScaled))
+   print("Get value of the volume")
+   global nbDet
+   global mindB
+   global maxdB
+   global scaleBtn
+   global valuePos
+   vol = 0
+   db = 0
+   while True:
+      scale = (255-(25.5-maxdB)/0.5)-(255-(25.5-mindB)/0.5)+1
+      print("Scale: "+str(scale))
+
+      valuePos = hapticControl.getData(vol)
+      vol = valuePos
+      valueScaled = valuePos*(scale/nbDet)
+
+      db = maxdB-(0.5*(scale-valueScaled))
       db = round(db*2)/2
 
       #db = db+6 #Compensate the buffer
@@ -43,14 +61,15 @@ def background_thread():
       #print("Set volume to: ", vol)
       
       Volume.setVolume(db)
-      if value is not None or db is not None:         
+      if valuePos is not None or db is not None:         
          datasend = {
-            'volume': value,
+            'volume': valuePos,
             'dB': db,
+            'nbDet': nbDet,
          }
          socketio.emit("updateSensorData", json.dumps(datasend))
          socketio.sleep(0.2)
-      
+   
 """
 Function receive input from client
 """
@@ -82,6 +101,31 @@ def snapPoint(data):
    print(hapticControl.setSnap(data))
    socketio.emit("updateSnapPoint", data*100)
 
+@socketio.on('detent')
+def detent(message):
+   global mindB
+   global maxdB
+   global nbDet
+   global scaleBtn
+   global valuePos
+   
+   print(str(message))
+   print(str(message["nbDet"]))
+   mindB = message["min"]
+   maxdB = message["max"]
+   nbDet = message["nbDet"]
+   scaleBtn = message["scaleBtn"]
+
+   print("position: "+str(valuePos))
+   print("nbDet: "+str(nbDet))
+   if valuePos > nbDet:
+      valuePos = nbDet
+      hapticControl.setPos(valuePos)
+      
+   hapticControl.setMax(nbDet)
+   hapticControl.setDistDet(math.radians(scaleBtn/nbDet))
+
+
 """
 Server root index file
 """
@@ -118,8 +162,8 @@ decorator for disconnection
 
 @socketio.on("disconnect")
 def disconnect():
-    print("Client disconnected", request.sid)
+   print("Client disconnected", request.sid)
 
 
 if __name__ == "__main__":
-    socketio.run(app, debug=True, host="0.0.0.0", port=8000)
+   socketio.run(app, debug=True, host="0.0.0.0", port=8000)
diff --git a/HapticControl_Webserver/static/js/app.js b/HapticControl_Webserver/static/js/app.js
index 8809f90c343dabc2233bd87b322c8f4977112e54..08f7893d42671c16544900cf9fb83fa961676220 100644
--- a/HapticControl_Webserver/static/js/app.js
+++ b/HapticControl_Webserver/static/js/app.js
@@ -47,7 +47,8 @@ $(document).ready(function () {
    function update(jsonmessage) {
       let data = jsonmessage.volume;
       let valuedB = jsonmessage.dB.toFixed(1);
-      let allowed = 36 - data;
+      let nbDet= jsonmessage.nbDet;
+      let allowed = nbDet - data;
       var dBVolumeDiv = document.getElementById("VolumeValue");
       myDonutChart.data.datasets[0].data[0] = data;
       myDonutChart.data.datasets[0].data[1] = allowed;
diff --git a/HapticControl_Webserver/static/js/param.js b/HapticControl_Webserver/static/js/param.js
index a029ecfeb088b241fc9509a4fff2ac18e4f4fdd6..7e0386e88d643346fedea0f7d034dc775578a927 100644
--- a/HapticControl_Webserver/static/js/param.js
+++ b/HapticControl_Webserver/static/js/param.js
@@ -7,6 +7,7 @@ $(document).ready(function () {
       } else {
           fromSlider.value = from;
       }
+      setMaxDetent(from, to)
   }
       
   function controlToInput(toSlider, fromInput, toInput, controlSlider) {
@@ -17,6 +18,7 @@ $(document).ready(function () {
       } else {
           toInput.value = from;
       }
+      setMaxDetent(from, to)
   }
   
   function controlFromSlider(fromSlider, toSlider, fromInput) {
@@ -27,6 +29,7 @@ $(document).ready(function () {
     } else {
       fromInput.value = from;
     }
+    setMaxDetent(from, to)
   }
   
   function controlToSlider(fromSlider, toSlider, toInput) {
@@ -38,6 +41,7 @@ $(document).ready(function () {
       toInput.value = from;
       toSlider.value = from;
     }
+    setMaxDetent(from, to)
   }
   
   function getParsed(currentFrom, currentTo) {
@@ -46,9 +50,44 @@ $(document).ready(function () {
     console.log(from, to);
     return [from, to];
   }
-  
-  function getMaxDetent(min,max){
-    return (max-min)*2;
+  document.addEventListener('DOMContentLoaded', function() {
+    
+  });
+  function setMaxDetent(mindB,maxdB){
+    const maxi = (maxdB-mindB)*2+1;
+    console.log(maxi);
+    document.getElementById('InputDetent').max = maxi;
+    if (document.getElementById('InputDetent').value > maxi){
+      document.getElementById('InputDetent').value = maxi;
+      document.getElementById('SliderDetent').value = maxi;
+    }
+    sendDetentParam();
+  }
+
+  function controlSliderDetent(SliderDetent, InputDetent) {
+    const value = eval(SliderDetent.value);
+    if (value > document.getElementById('InputDetent').max){
+      SliderDetent.value = document.getElementById('InputDetent').max;
+    }
+    sendDetentParam();
+  }
+
+  function controlInputDetent(SliderDetent, InputDetent) {
+    const value = eval(InputDetent.value);
+    if (value > document.getElementById('InputDetent').max){
+      InputDetent.value = document.getElementById('InputDetent').max;
+    }
+    SliderDetent.value = InputDetent.value;
+    sendDetentParam();
+  }
+  function sendDetentParam() {
+    var messageData = {
+      nbDet: eval(InputDetent.value),
+      min: eval(InputMin.value),
+      max: eval(InputMax.value),
+      scaleBtn: eval(InputScale.value)
+    };
+    socket.emit("detent", messageData);
   }
 
   function sendMessage(param, Input) {
@@ -70,11 +109,14 @@ $(document).ready(function () {
   const InputStrenghtDet = document.getElementById('InputStrenghtDet');
   const InputSnapPoint = document.getElementById('InputSnap');
 
-  
   SliderMin.oninput = () => controlFromSlider(SliderMin, SliderMax, InputMin);
   SliderMax.oninput = () => controlToSlider(SliderMin, SliderMax, InputMax);
   InputMin.oninput = () => controlFromInput(SliderMin, InputMin, InputMax, SliderMax);
   InputMax.oninput = () => controlToInput(SliderMax, InputMin, InputMax, SliderMax);
+
+  SliderDetent.oninput = () => controlSliderDetent(SliderDetent, InputDetent);
+  InputDetent.oninput = () => controlInputDetent(SliderDetent, InputDetent);
+  InputScale.oninput = () => sendDetentParam();
   
   InputStrenghtDet.oninput = () => sendMessage("strenghtDet", InputStrenghtDet);
   InputStrenghtEnd.oninput = () => sendMessage("strenghtEnd", InputStrenghtEnd);
diff --git a/HapticControl_Webserver/templates/config.html b/HapticControl_Webserver/templates/config.html
index f6e77d9d0d4555037ecef7de979d8c8f321675a1..13ed15589ec166f38738498173cab9cb5d9c7ff1 100644
--- a/HapticControl_Webserver/templates/config.html
+++ b/HapticControl_Webserver/templates/config.html
@@ -73,8 +73,8 @@
 							dB Min :
 						</div>
 					</div>
-					<input id="SliderMin" type="range" value="-50.5" min="-101.5" max="25.5" step="0.5" />
-					<input class="form_control_container__time__input right-cell" type="number" id="InputMin" value="-50.5" min="-101.5"
+					<input id="SliderMin" type="range" value="-101.5" min="-101.5" max="25.5" step="0.5" />
+					<input class="form_control_container__time__input right-cell" type="number" id="InputMin" value="-101.5" min="-101.5"
 						max="25.5" step="0.5" />
 				</div>
 				<div class="sliders_control" id="sliderMax_dB_block">
@@ -83,8 +83,8 @@
 							dB Max :
 						</div>
 					</div>
-					<input id="SliderMax" type="range" value="12.5" min="-101.5" max="25.5" step="0.5" />
-					<input class="form_control_container__time__input right-cell" type="number" id="InputMax" value="12.5"
+					<input id="SliderMax" type="range" value="25.5" min="-101.5" max="25.5" step="0.5" />
+					<input class="form_control_container__time__input right-cell" type="number" id="InputMax" value="25.5"
 						min="-101.5" max="25.5" step="0.5" />
 				</div>
 				<div class="sliders_control" id="sliderNbrCrans_block">
@@ -93,7 +93,7 @@
 							Nombre de crans :
 						</div>
 					</div>
-					<input id="SliderNumDet" type="range" value="36" min="0" max="255" />
+					<input id="SliderDetent" type="range" value="36" min="0" max="255" />
 					<input class="form_control_container__time__input right-cell" type="number" id="InputDetent" value="36"
 						min="0" max="255" />
 				</div>