Вы привели фрагмент кода
float value = (float)analogReag(A1)*5*1000/1024;
int value_int = (int)value_int;
switch(value_int) {
case(4442):
current = 120;
Во второй строке ошибка? Должно быть int value_int = (int)value;?
Если да, то зачем интовое значение analogReag переводить во флоат, а потом опять в инт? Разрядность это не увеличит, поэтому можно сделать так:
//Объявли массив table из 1024 значений
//Для каждого значения ввели правильный ответ
int table[] = {12, 34, 64, 33, ..., 954}
//Где-то в коде
int value = analogReag(A1);
current = table[value];
Это уменьшит Вашу таблицу вдвое, выборка будет максимально быстрой. Расплатой послужит некоторая неочевидность заполнения таблицы, т.к. оперировать придется не значением напряжения, а отсчетами АЦП.