//РЕЖИМ ЧТЕНИЯ
if(readbt_state == HIGH && nastrbt_state == LOW){
myFile = SD.open("tir5.txt");
if (myFile)
{
myFile.seek(var);
char tmpstr[20]="";
char tmpstrlen=0;
while (myFile.available()) { // читаем первую строку
tmpstr[tmpstrlen]=myFile.read();
if ((tmpstr[tmpstrlen]=='\n')||(tmpstr[tmpstrlen]=='\r')) break;
tmpstrlen++;
}
lcd.setCursor(0,0);
lcd.print(tmpstr);
tmpstr[tmpstrlen]=0;
while (myFile.available()) { // гоним до следующей строки, пока не пропустим все переводы строки
char ch=myFile.read();
if ((ch!='\n')&&(ch!='\r')) break;
}
tmpstrlen=0;
while (myFile.available()) {// читаем вторую строку
tmpstr[tmpstrlen]=myFile.read();
if ((tmpstr[tmpstrlen]=='\n')||(tmpstr[tmpstrlen]=='\r')) break;
tmpstrlen++;
}
lcd.setCursor(0,1);
lcd.print(tmpstr);
tmpstr[tmpstrlen]=0;
while (myFile.available()) { // гоним до следующей строки, пока не пропустим все переводы строки
char ch=myFile.read();
if ((ch!='\n')&&(ch!='\r')) break;
}
tmpstrlen=0;
while (myFile.available()) { // читаем 3 строку
tmpstr[tmpstrlen]=myFile.read();
if ((tmpstr[tmpstrlen]=='\n')||(tmpstr[tmpstrlen]=='\r')) break;
tmpstrlen++;
}
lcd.setCursor(0,2);
lcd.print(tmpstr);
tmpstr[tmpstrlen]=0;
while (myFile.available()) { // гоним до следующей строки, пока не пропустим все переводы строки
char ch=myFile.read();
if ((ch!='\n')&&(ch!='\r')) break;
}
tmpstrlen=0;
while (myFile.available()) {// читаем 4 строку
tmpstr[tmpstrlen]=myFile.read();
if ((tmpstr[tmpstrlen]=='\n')||(tmpstr[tmpstrlen]=='\r')) break;
tmpstrlen++;
}
lcd.setCursor(0,3);
lcd.print(tmpstr);
tmpstr[tmpstrlen]=0;
myFile.close();
myFile.close();
}
// обрабатываем кнопки menuup_flag
if(output3_1 == LOW && menuup_flag==0)
{
menuup_flag=1;
}
if (output3_1 == HIGH && menuup_flag==1)
{
if (firststr > 0) firststr - 3;
var = var - 60;
lcd.clear();
menuup_flag=0;
}
if (output3_2 == LOW && menudown_flag==0)
{
menudown_flag=1;
}
if (output3_2 == HIGH && menudown_flag==1)
{
if (firststr < 300) firststr+3; // если уже стоим на предпоследней строке, дальше двигаться нельзя.
menudown_flag=0;
var = var + 60;
lcd.clear();
}
}
char tmpstr[16];
замени на
char tmpstr[16]="";
Приучай себя инициализировать перемененные перед использованием.
char tmpstr[16]=""; а что в кавычках прописать?
Приучай себя инициализировать перемененные перед использованием.
Для чего это нужно?
Кавычки пустые. Нужно чтобы при обращении к переменной не было ошибки доступа.
понял, спасибо большое
вроде разобрался наконец))
//РЕЖИМ ЧТЕНИЯ if(readbt_state == HIGH && nastrbt_state == LOW){ myFile = SD.open("tir5.txt"); if (myFile) { myFile.seek(var); char tmpstr[20]=""; char tmpstrlen=0; while (myFile.available()) { // читаем первую строку tmpstr[tmpstrlen]=myFile.read(); if ((tmpstr[tmpstrlen]=='\n')||(tmpstr[tmpstrlen]=='\r')) break; tmpstrlen++; } lcd.setCursor(0,0); lcd.print(tmpstr); tmpstr[tmpstrlen]=0; while (myFile.available()) { // гоним до следующей строки, пока не пропустим все переводы строки char ch=myFile.read(); if ((ch!='\n')&&(ch!='\r')) break; } tmpstrlen=0; while (myFile.available()) {// читаем вторую строку tmpstr[tmpstrlen]=myFile.read(); if ((tmpstr[tmpstrlen]=='\n')||(tmpstr[tmpstrlen]=='\r')) break; tmpstrlen++; } lcd.setCursor(0,1); lcd.print(tmpstr); tmpstr[tmpstrlen]=0; while (myFile.available()) { // гоним до следующей строки, пока не пропустим все переводы строки char ch=myFile.read(); if ((ch!='\n')&&(ch!='\r')) break; } tmpstrlen=0; while (myFile.available()) { // читаем 3 строку tmpstr[tmpstrlen]=myFile.read(); if ((tmpstr[tmpstrlen]=='\n')||(tmpstr[tmpstrlen]=='\r')) break; tmpstrlen++; } lcd.setCursor(0,2); lcd.print(tmpstr); tmpstr[tmpstrlen]=0; while (myFile.available()) { // гоним до следующей строки, пока не пропустим все переводы строки char ch=myFile.read(); if ((ch!='\n')&&(ch!='\r')) break; } tmpstrlen=0; while (myFile.available()) {// читаем 4 строку tmpstr[tmpstrlen]=myFile.read(); if ((tmpstr[tmpstrlen]=='\n')||(tmpstr[tmpstrlen]=='\r')) break; tmpstrlen++; } lcd.setCursor(0,3); lcd.print(tmpstr); tmpstr[tmpstrlen]=0; myFile.close(); myFile.close(); } // обрабатываем кнопки menuup_flag if(output3_1 == LOW && menuup_flag==0) { menuup_flag=1; } if (output3_1 == HIGH && menuup_flag==1) { if (firststr > 0) firststr - 3; var = var - 60; lcd.clear(); menuup_flag=0; } if (output3_2 == LOW && menudown_flag==0) { menudown_flag=1; } if (output3_2 == HIGH && menudown_flag==1) { if (firststr < 300) firststr+3; // если уже стоим на предпоследней строке, дальше двигаться нельзя. menudown_flag=0; var = var + 60; lcd.clear(); } }