NANO и I2C LCD2004 vs UNO
- Войдите на сайт для отправки комментариев
Втр, 31/05/2016 - 21:29
Собрал систему на Uno и I2C LCD2004
кусок кода:
if(regim==3)// режим Установка Вроемени Таймера 1 полива
{
Timer=EEPROM_read_byte(4);
lcd.setCursor(0, 0);
lcd.print("[3]\6CT TA\7MEP 1- ");
if (Timer==0) lcd.print("B\2K");
if (Timer==1) lcd.print("BK ");
TstartHour=EEPROM_read_byte(5);
TstartMinute=EEPROM_read_byte(6);
TstopHour=EEPROM_read_byte(7);
TstopMinute=EEPROM_read_byte(8);
// Button_read(); //читаем кнопки // проверяем нажата ли кнопка
lcd.setCursor(0, 1);
lcd.print("BK\5=");
//lcd.setCursor(4,1);
if (TstartHour<10){lcd.print("0");}
lcd.print(TstartHour);
lcd.print(":");
if (TstartMinute<10){lcd.print("0");}
lcd.print(TstartMinute);
lcd.print(" ");
lcd.setCursor(10,1);
lcd.print("B\2K\5=");
lcd.setCursor(15,1);
if (TstopHour<10){lcd.print("0");}
lcd.print(TstopHour);
lcd.print(":");
if (TstopMinute<10){lcd.print("0");}
lcd.print(TstopMinute);
lcd.setCursor(0,2);
lcd.print("\4 B C \3 \4 C B Bce +");
int myArray[7]={0,2,4,6,8,10,12};
byte i;
for (i=0;i<7;i++)
{
if (EEPROM_read_byte(24+i)==1) {lcd.setCursor(myArray[i],3);lcd.print(char(94));}
if (EEPROM_read_byte(24+i)==0) {lcd.setCursor(myArray[i],3);lcd.print(" ");}
}
{lcd.setCursor(1,3);lcd.print(" ");}
{lcd.setCursor(3,3);lcd.print(" ");}
if (EEPROM_read_byte(24)==0 or EEPROM_read_byte(25)==0 or EEPROM_read_byte(26)==0 or EEPROM_read_byte(27)==0 or EEPROM_read_byte(28)==0 or EEPROM_read_byte(29)==0 or EEPROM_read_byte(30)==0) {lcd.setCursor(15,3);lcd.print(" ");}
if (EEPROM_read_byte(24)==1&&EEPROM_read_byte(25)==1&&EEPROM_read_byte(26)==1&&EEPROM_read_byte(27)==1&&EEPROM_read_byte(28)==1&&EEPROM_read_byte(29)==1&&EEPROM_read_byte(30)==1) {lcd.setCursor(15,3);lcd.print(char(94));}
lcd.setCursor(17,3);
lcd.print("<->");
lcd.blink();
if (button==5 && flag==1) posic++;
if (button==2 && flag==1) posic--;
if (posic==0)
{
lcd.setCursor(19,0);
if (button==3 && flag==1)
{ if (Timer < 1) Timer++;
else
Timer = 0;
EEPROM_write_byte(4,Timer);}
if (button==4 && flag==1)
{ if (Timer > 0) Timer--;
else
Timer = 1;
EEPROM_write_byte(4,Timer);}
}
if (posic==1)
{
lcd.setCursor(5,1);
if (button==3 && flag==1)
{ if (TstartHour < 23) TstartHour++;
else
TstartHour = 0;
EEPROM_write_byte(5,TstartHour);}
if (button==4 && flag==1)
{ if (TstartHour > 0) TstartHour--;
else
TstartHour = 23;
EEPROM_write_byte(5,TstartHour);}
}
if (posic==2)
{
lcd.setCursor(8,1);
if (button==3 && flag==1)
{ if (TstartMinute < 59) TstartMinute++;
else
TstartMinute = 0;
EEPROM_write_byte(6,TstartMinute);}
if (button==4 && flag==1)
{ if (TstartMinute > 0) TstartMinute--;
else
TstartMinute = 59;
EEPROM_write_byte(6,TstartMinute);}
}
if (posic==3)
{
lcd.setCursor(16,1);
if (button==3 && flag==1)
{ if (TstopHour < 23) TstopHour++;
else
TstopHour = 0;
EEPROM_write_byte(7,TstopHour);}
if (button==4 && flag==1)
{ if (TstopHour > 0) TstopHour--;
else
TstopHour = 23;
EEPROM_write_byte(7,TstopHour);}
}
if (posic==4)
{
lcd.setCursor(19,1);
if (button==3 && flag==1)
{ if (TstopMinute < 59) TstopMinute++;
else
TstopMinute = 0;
EEPROM_write_byte(8,TstopMinute);}
if (button==4 && flag==1)
{ if (TstopMinute > 0) TstopMinute--;
else
TstopMinute = 59;
EEPROM_write_byte(8,TstopMinute);}
}
if (posic==5) //устанавливаем дни недели для будильника "Все сразу"
{/*
lcd.setCursor(15,2);
if (button==3 && flag==1)
{
if (Tday < 1) Tday++;
else
Tday=0;
byte i;
for (i=0;i<7;i++) EEPROM_write_byte(24+i,Tday);
}
if (button==4 && flag==1)
{
if (Tday > 0) Tday--;
else
Tday=1;
byte i;
for (i=0;i<7;i++) EEPROM_write_byte(24+i,Tday);
} */
}
if (posic==6) //устанавливаем будильника ПH
{
lcd.setCursor(0,2);
if (button==3 && flag==1)
{
if (EEPROM_read_byte(24) < 1) Tday++;
else
Tday=0;
EEPROM_write_byte(24,Tday);
}
if (button==4 && flag==1)
{
if (EEPROM_read_byte(24) > 0) Tday--;
else
Tday=1;
EEPROM_write_byte(24,Tday);
}
}
if (posic==7) //устанавливаем для будильника BT
{
lcd.setCursor(2,2);
if (button==3 && flag==1)
{
if (EEPROM_read_byte(25) < 1) Tday++;
else
Tday=0;
EEPROM_write_byte(25,Tday);
}
if (button==4 && flag==1)
{
if (EEPROM_read_byte(25) > 0) Tday--;
else
Tday=1;
EEPROM_write_byte(25,Tday);
}
}
if (posic==8) //устанавливаем для будильника СР
{
lcd.setCursor(4,2);
if (button==3 && flag==1)
{
if (EEPROM_read_byte(26) < 1) Tday++;
else
Tday=0;
EEPROM_write_byte(26,Tday);
}
if (button==4 && flag==1)
{
if (EEPROM_read_byte(26) > 0) Tday--;
else
Tday=1;
EEPROM_write_byte(26,Tday);
}
}
if (posic==9) //устанавливаем для будильника ЧТ
{
lcd.setCursor(6,2);
if (button==3 && flag==1)
{
if (EEPROM_read_byte(27) < 1) Tday++;
else
Tday=0;
EEPROM_write_byte(27,Tday);
}
if (button==4 && flag==1)
{
if (EEPROM_read_byte(27) > 0) Tday--;
else
Tday=1;
EEPROM_write_byte(27,Tday);
}
}
if (posic==10) //устанавливаем для будильника ПТ
{
lcd.setCursor(8,2);
if (button==3 && flag==1)
{
if (EEPROM_read_byte(28) < 1) Tday++;
else
Tday=0;
EEPROM_write_byte(28,Tday);
}
if (button==4 && flag==1)
{
if (EEPROM_read_byte(28) > 0) Tday--;
else
Tday=1;
EEPROM_write_byte(28,Tday);
}
}
if (posic==11) //устанавливаем для будильника СБ
{
lcd.setCursor(10,2);
if (button==3 && flag==1)
{
if (EEPROM_read_byte(29) < 1) Tday++;
else
Tday=0;
EEPROM_write_byte(29,Tday);
}
if (button==4 && flag==1)
{
if (EEPROM_read_byte(29) > 0) Tday--;
else
Tday=1;
EEPROM_write_byte(29,Tday);
}
}
if (posic==12) //устанавливаем для будильника ВС
{
lcd.setCursor(12,2);
if (button==3 && flag==1)
{
if (EEPROM_read_byte(30) < 1) Tday++;
else
Tday=0;
EEPROM_write_byte(30,Tday);
}
if (button==4 && flag==1)
{
if (EEPROM_read_byte(30) > 0) Tday--;
else
Tday=1;
EEPROM_write_byte(30,Tday);
}
}
if (posic==13) posic=0;//возврат в начало
}
Все работало. код не менялся.
UNO заменил на NANO v.3 и началось, курсор мигающий должен перемещаться по позициям для изменения значений переменных, но од перемещается на 1 позицию и потом сразу на 19,1 которой нет в команде setCursor.
мож кто сталкивался с такой проблемой, подскажите.