Начиная с версии 1.6.6, IDE Arduino по умолчанию включает C ++ 11. Но стандарт C ++ (до C ++ 11) не поддерживает массивы переменного размера. Стандарт C ++ 11 упоминает размер массива как выражение-константу.
float V_sin_bip[sample];
использует переменное выражение для указания размера массива. Таким образом, возникает ошибка.
Если вам нужен «массив переменной длины» (лучше называемый «динамически изменяемый массив» в C ++, поскольку правильные массивы переменной длины не допускаются), вы должны либо Динамически распределять память самостоятельно:
int n = 10;
double* a = new double[n]; // Don't forget to delete [] a; when you're done!
Или, что еще лучше, использовать стандартный контейнер:
int n = 10;
std::vector<double> a(n); // Don't forget to #include <vector>
Если вам все еще нужен правильный массив, вы можете использовать константу, а не переменную при его создании:
const int n = 10;
double a[n]; // now valid, since n isn't a variable (it's a compile time constant)