From 31011a7ba2c539169e73dd8dcd152d93d7c57d99 Mon Sep 17 00:00:00 2001
From: Alessevan <44125445+Alessevan@users.noreply.github.com>
Date: Mon, 14 Apr 2025 10:37:18 +0200
Subject: [PATCH] feat: improvements

---
 prog/prog.ino | 88 +++++++++++++++++++++++++++++++--------------------
 1 file changed, 53 insertions(+), 35 deletions(-)

diff --git a/prog/prog.ino b/prog/prog.ino
index 501ec39..8766946 100644
--- a/prog/prog.ino
+++ b/prog/prog.ino
@@ -9,30 +9,18 @@ Servo servo1;
 const int SDL = 22;
 const int SDA2 = 21; // useless in the code
 
-const int minHeight = 5;
-const int maxHeight = 600;
+const int minHeight = 50;
+const int maxHeight = 455;
 
-int minServo = 0;
-int maxServo = 90;
-
-float curHeight = 0; 
-
-void setup() {
-  Serial.begin(115200); // Starts the serial communication
-  while (! Serial) {
-    delay(1);
-  }
-  servo1.attach(servoPin);
-
-  Serial.println("Adafruit VL53L0X test");
-  if (!lox.begin()) {
-    Serial.println(F("Failed to boot VL53L0X"));
-    while(1);
-  }
-  Serial.println(F("VL53L0X API Simple Ranging example\n\n")); 
-}
+int minServo = 30;
+int maxServo = 60;
+int lastAngle = -1;
 
 
+float curHeight = 50;
+float targetHeight = 250;
+
+float equilibrium = 0;
 
 auto mesureHeight(){
   VL53L0X_RangingMeasurementData_t measure;
@@ -53,8 +41,45 @@ auto mesureHeight(){
   }
 }
 
+void setup() {
+  Serial.begin(115200); // Starts the serial communication
+  while (! Serial) {
+    delay(1);
+  }
+  servo1.attach(servoPin);
+
+  Serial.println("Adafruit VL53L0X test");
+  if (!lox.begin()) {
+    Serial.println(F("Failed to boot VL53L0X"));
+    while(1);
+  }
+  Serial.println(F("VL53L0X API Simple Ranging example\n\n")); 
+
+  Serial.println("Setuping");
+  servo1.write(minServo);
+  delay(2000);
+  float h = mesureHeight();
+  if (h < maxHeight) {
+    Serial.println("CHANGE FAN SPEED");
+    while (1);
+  }
+  Serial.println("Setuping for downwards");
+  int angle = minServo;
+  while (h > maxHeight) {
+    ++angle;
+    servo1.write(angle);
+    delay(100);
+    h = mesureHeight();
+  }
+  angle -= 2;
+  servo1.write(angle);
+  equilibrium = angle;
+  Serial.println("Done setuping have funning");
+}
+
+
 auto heightRatio(float height){
-  return min(1.0f, (height - minHeight) / (maxHeight-minHeight));
+  return max(min(1.0f, (height - minHeight) / (maxHeight-minHeight)), 0.0f);
 }
 
 int servoPosition(float ratio){
@@ -62,20 +87,13 @@ int servoPosition(float ratio){
 }
 
 void loop() {
-  
    
   float h = mesureHeight();
-  float ratio = heightRatio(h);
-  int servoRot = servoPosition(ratio);
-  
-  /*
-  Serial.print("h: ");
-  Serial.print(h);
-  Serial.print(" ratio: ");
-  Serial.print(ratio);
-  Serial.print("rotation: ");
-  Serial.println(servoRot);
-*/
-  servo1.write(servoRot);
+  Serial.print("Measure = ");
+  Serial.println(h);
+  if (abs(h - targetHeight) > 1.0f) {
+    servo1.write(equilibrium + 5);
+  }
+
   delay(1);
 }
\ No newline at end of file