int arr_val[3];
int arr_diff1[3];
int arr_if1[3];
int arr_diff2[3];
int arr_if2[3];
int arr_out[3];
void setup() {
Serial.begin(115200);
}
void loop() {
int val = analogRead(35);
int out = my_envelope(val);
//Serial.print(val);
//Serial.print(";");
//Serial.println(out);
delay(100); // this speeds up the simulation
}
int my_envelope(int value) {
//сдвигаем все массивы на такт
arr_val[2] = arr_val[1];
arr_val[1] = arr_val[0];
arr_val[0] = value;
arr_diff1[2] = arr_diff1[1];
arr_diff1[1] = arr_diff1[0];
arr_if1[2] = arr_if1[1];
arr_if1[1] = arr_if1[0];
arr_diff2[2] = arr_diff2[1];
arr_diff2[1] = arr_diff2[0];
arr_if2[2] = arr_if2[1];
arr_if2[1] = arr_if2[0];
arr_out[2] = arr_out[1];
arr_out[1] = arr_out[0];
//начинаем вычислять
if (arr_val[1] - arr_val[2] > 0) arr_diff1[0] = 1;
if (arr_val[1] - arr_val[2] == 0) arr_diff1[0] = 0;
if (arr_val[1] - arr_val[2] < 0) arr_diff1[0] = -1;
if (arr_diff1[0] != 0) {
arr_if1[0] = arr_diff1[0];
} else {
arr_if1[0] = arr_if1[1];
}
arr_diff2[0] = arr_if1[0] - arr_if1[1];
if (arr_diff2[0] == -2) {
arr_if2[0] = 1;
} else {
arr_if2[0] = 0;
}
if (arr_if2[0] == 1) {
arr_out[0] = arr_val[2];
} else {
arr_out[0] = arr_out[1];
}
Serial.print(value);
Serial.print(";");
Serial.println(arr_out[1]);
return arr_out[1];
}