Доброй ночи. Столкнулся с такой проблемой.Не могу создать адекватную функцию для уменьшения кода. Задача, при нажатии кнопки при определенном значении Y увеличивать значение X. Изначально все замечательно работает: Код (C++): if (!digitalRead(knopkaPL)) { if(r - p2 > i2){ if(y1 == 1){ x1=x1+1; if(x1 > 255){x1 = 255;} } if(y1 ==2){ x2=x2+1; if(x2 > 255){x2 = 255;} } if(y1 ==3){ x3=x3+1; if(x3 > 255){x3 = 255;} } if(y1 ==4){ x4=x4+1; if(x4 > 255){x4 = 255;} } if(y1 ==5){ x5=x5+1; if(x5 > 255){x5 = 255;} } if(y1 ==6){ x6=x6+1; if(x6 > 255){x6 = 255;} } if(y1 ==7){ x7=x7+1; if(x7 > 255){x7 = 255;} } if(y1 ==8){ x8=x8+1; if(x8 > 255){x8 = 255;} } p2 = r; }} Но когда пытаюсь все это запихнуть в функцию то значения X1 при определенном Y1 прибавляются , но остальные Xn становятся равны Yn Код (C++): if (!digitalRead(knopkaPL)) { if(r - p2 > i2){ x1 = channelData(1, x1); x2 = channelData(2, x2); x3 = channelData(3, x3); x4 = channelData(4, x4); x5 = channelData(5, x5); x6 = channelData(6, x6); x7 = channelData(7, x7); x8 = channelData(8, x8); p2 = r; }} byte channelData(byte poz, byte num){ if(y1 == poz){ int result; result=num+1; if(result > 255){result = 255;} return result;}} Понимаю что не правильно создаю функцию. Подскажите пожалуйста где ошибка?
Вроде разобрался. Перенес объявление возвратной переменной из условия и вроде все заработало)) Код (C++): int channelData(int poz, int num){ int result = num; if(y1 == poz)result=num+1; if(result > 255)result = 255; return result;
Такой вариант не рассматривали: Код (C++): byte xx[8] = {0,0,0,0,0,0,0,0} if (!digitalRead(knopkaPL)) { if(r - p2 > i2){ if (xx[y1 - 1] < 255) xx[y1 - 1] = xx[y1 - 1] + 1; p2 = r; } }