diff --git a/.vscode/launch.json b/.vscode/launch.json index b1891bdc65dab69bb2247274c411198a23b4eff3..6ff7a775b8ae5dcd799217ac9e2a2ee3c7c412a2 100644 --- a/.vscode/launch.json +++ b/.vscode/launch.json @@ -9,7 +9,7 @@ "cwd": "${workspaceFolder}", "MIMode": "gdb", "miDebuggerPath": "gdb-multiarch", - "miDebuggerServerAddress": "localhost:3333", + "miDebuggerServerAddress": "10.42.0.1:3333", "preLaunchTask": "build", "internalConsoleOptions": "neverOpen", "postRemoteConnectCommands": [ diff --git a/src/main.c b/src/main.c index a20d00be837df47d2348e8f4c977032b2d20a502..0e6c2cd9e2ae9399f69a38ebe2b842f3d1a9ed22 100644 --- a/src/main.c +++ b/src/main.c @@ -3,6 +3,7 @@ #include <stdio.h> #include <unistd.h> #include <hardware/pwm.h> +#include <math.h> double rollingperc[4] = {0, 0, 0, 0}; int pos = 0; @@ -155,14 +156,14 @@ void callback(uint gpio, uint32_t events) { distance = 0; } - if (distance > 20) + if (distance > 40) { - distance = 20; + distance = 40; } - distance = 20 - distance; + distance = 40 - distance; - volatile int percentage = (distance / 10) * 100; + volatile int percentage = (distance / 20) * 100; rollingperc[pos] = percentage; pos++; @@ -173,8 +174,13 @@ void callback(uint gpio, uint32_t events) int avg = (rollingperc[0] + rollingperc[1] + rollingperc[2] + rollingperc[3]) / 4; // if zwischen 90, 110, stop - double speed = 0.9 * ((avg - 100) * (avg - 100)) + 2000; - speed = speed + ((1.8 * avg) - 180); + + double speed = 0.9 * ((avg - 100) * (avg - 100)) + 1500; // quadratisch + speed = speed + 10 * ((1.8 * avg) - 180); + + // double speed = abs(70 * avg) + 2000; // linear + // speed += 70; + set_speed(speed); if (avg > 90 && avg < 110) {