В червено са предупреждения за неправилно или некоректно поведение на променливите.
Системата взема някакво решение за изход за компилация, но не гарантира, че е правилно и предупреждава за объркване на данните и случващте се действия с тях.
Затова:
за ред 136:
това наисаното:
someChar = NULL;става:
someChar = 0;за ред 45:
someChar се сравнява с 0xEF (239), а на ред 10:
char someChar; someChar е тип char (от -127 до 127).
Кое е вярното?
1. стойността за сравняване 0xEF е объркана и е число, по-малко от 127(DEC)?
2. стойността за сравняване 0xEF е вярна, следва ред 10 да стане (от 0 до 255):
unsigned char someChar;[1] или [2] знае автора вероятно, според действието и логиката на устройството.
За да продължа с компилацията, приемам по-лесното за мен: променям по [2] ред 10 на:
unsigned char someChar;Появяват се още два червени реда (виж приложения файл).
for (i = 13; i < 153; i = i + 1) {i се върти цикъл от 13 до 152, като няма данни в края на масива на
durations.
Не съм броил данните на ред 13, но според това, за което Arduino IDE "роптае" са 104 бр + още 13 бр в началото = 117 бр., а редът му казва, че са 152 + 0 = 153. Какво да прави? 153 не е 153, а друго число? 153 е 153, тогава какви да останалите данни в масива?
Преброй числата в durations[] и в someChars[] (и delays[]). Според мен трябва да са еднакъв брой, а не са (не съм ги броил).
Не знам как работи устройството, нито какви данни се разменят, следва или да се "изследва" наново кой какво си праща, да се коригират тези данни, или друг алгоритъм или ... най-лошото - отказ от идеята.
P.S. С 3-те масива, с еднакъв брой данни в тях компилацията е без предупреждения (с двете първи поправки)
("скъсъх" данните пробно само с по 5 бр. и намалих циклите до "5"
)