Proyecto Wifi ESP8266 Como Servidor WEB

Primero no puedes tener 1000000 valores. No te da la memoria.
Segundo para que guardar en float algo que lees como unsigned int? Eso es como minimo poco eficiente.

Respecto a la prueba ya lo habias puesto bien y no se porque lo he confundido.

Si tomas la diferencia entre dos valores en un intervalo de tiempo, entonces cuando esta diferencia sea casi nula o x debajo de un umbral estarías en V = 0 o sea en alguna de las 3 situaciones descriptas.

Esto esta mal. Porque estaras midiendo aceleración y no es la derivada de V que te indica V = 0 sino la integral de aceleración.

Como minimo tendrás que ir llevando algunas muestras y entre ellas integradas de tirán que has terminado.

Respecto a como proceder te propongo algo?
Porque no haces un loggeo de datos, hagamos un código que funcione, que tome datos los almacene y de algun modo podamos luego recuperarlos.
Con esa gráfica luego podremos tomar conclusiones.
Seria interesante que ademas tuviera un par de switches que ilustren los momentos para luego poder tomar decisiones con lo que se observe.

Esos switches no se si los debería tener quien haga la prueba u otra persona.

Yo lo encararía de ese modo.

Acabo de ver el video una vez mas y tomé estos datos desde el inicio de la prueba:
La bajada 5.55 seg y toda la operación fue de 8.07 seg
Asi que tienes 5.55 hacia abajo y 2.52 hacia arriba.

El segundo ejemplo muestra a alguien que tarda 1.66 hacia abajo y 3.40 en total
Bajada 1.66
Subida 1.74

Buscando la RAM del ESP dice tener 96 KiB of data RAM asi que podras destinar gran parte a tu vector.
Cuanto? supongamos unos conservadores 80k
Un entero son 2 bytes asi que son 40k de datos, mas que bien... diría que demasiados.
Todo depende a que tasa los cargues. Supongamos 1 mseg, eso te daria 40000 mseg o 40 seg para tu prueba.
Asi que podrias mejorar las muestras. ya que un tiempo mas logico podria ser de 20 segundos
Supongamos entonces una muestra cada 500 useg para de nuevo tener 40k de datos con un máximo de 20 segundos.

Esto sería un comienzo del código

#include <TimerOne.h>                       // https://github.com/PaulStoffregen/TimerOne
#default MUESTRAS    20000
volatile unsigned int vector[MUESTRAS] = {0};
volatile unsigned int i = 0;

void setup(void) {
  
  Timer1.initialize(500);         // 500 useg 
  Timer1.attachInterrupt(logger); // tomo datos cada 500 useg
  Serial.begin(9600);
}

void logger(void) {
  vector[i++] = analogread(A0);
}

Falta el loop donde hay que poner algo que lo inicie via un switch, lo detenga (podria ser mismo switch). Algo para levantar los datos y procesarlos en una notebook/PC.