A kód működik egészen addig a pontig, amíg az 1-19 stringet hívom meg. 20-tól valamilyen oknál fogva számolja a hibákat, de nem írja ki a hibaüzenetet.
Néztem notepad++-szal esetlegesen oda nem illő karaktereket, a for ciklust buheráltam, az sem segített, valami basic hibát vétettem volna, amit nem látok már 11-kor?:S
Amikor a kiíratásnál i+10-et adtam be neki akkor is csak 19ig írta be, az i aktuális értékétől függetlenül. A karakterláncban hol lehet még probléma?
Nincs valami ötletetek?
Köszi előre is!
Bazs87
Kód: Egész kijelölése
// I2C LCD
// GND - GND
// VCC - 5v
// SDA - a4
// SCL - a5
#include <Wire.h>
#include <LiquidCrystal_I2C.h>
// I2C LCD
LiquidCrystal_I2C lcd(0x27, 2, 1, 0, 4, 5, 6, 7, 3, POSITIVE);
boolean error[31];
String msg[31] = { " ",
" Errormassage 01 "," Errormassage 02 "," Errormassage 03 "," Errormassage 04 "," Errormassage 05 ",
" Errormassage 06 "," Errormassage 07 "," Errormassage 08 "," Errormassage 09 "," Errormassage 10 ",
" Errormassage 11 "," Errormassage 12 "," Errormassage 13 "," Errormassage 14 "," Errormassage 15 ",
" Errormassage 16 "," Errormassage 17 "," Errormassage 18 "," Errormassage 19 "," Errormassage 20 ",
" Errormassage 21 "," Errormassage 22 "," Errormassage 23 "," Errormassage 24 "," Errormassage 25 ",
" Errormassage 26 "," Errormassage 27 "," Errormassage 28 "," Errormassage 29 "," Errormassage 30 "};
void setup(){
Serial.begin(9600);
lcd.begin(20,4);
lcd.backlight();
for (int i=0; i<=30; i++) { error[i] = false; }
}
void loop(){
if( Serial.available() ) {
int nerr = Serial.parseInt();
Serial.println(nerr);
if (nerr != 0) {
if (nerr < 0) { error[abs(nerr)] = false; }
if (nerr > 0) { error[nerr] = true ; }
}
else {
for (int i=1; i<=30; i++) { error[i] = false; }
}
for (int i=1; i<=30; i++) { Serial.print(error[i]); }
Serial.println("");
lcd.clear();
// 20-tól nem jelez ki
int j = 0;
for (int i=1; i<=30; i++) {
if (error[i] && j<=2) {
lcd.setCursor(0,j);
lcd.print(msg[i]);
j++;
}
}
j=0;
for (int i=1; i<=30; i++) {
if (error[i]) { j++; }
}
lcd.setCursor(14,3);
if (j<10) { lcd.print(" "); }
lcd.print(j);
lcd.print(" Err");
}
}