Прошу вашей помощи, подскажите как закольцевать меню.
Имеется скетч, написанный мной
Вот блок который переключает менюхи
Всего есть три менюхи между которыми я переключаюсь. нужно что бы после 3го перескакивало на 1е меню, а не убегало дальше.
Имеется скетч, написанный мной
#include <LiquidCrystal.h>
#include <EEPROM.h>
LiquidCrystal lcd(2, 3, 4, 5, 6, 7);
int line;
int stemp1;
int stemp2;
int stemp3;
int stemp4;
int rtemp1;
int rtemp2;
int rtemp3;
int rtemp4;
int days = 0;
int hours = 0;
int mins = 0;
int secs = 0;
void load() {
stemp1 = EEPROM.get(1, stemp1);
stemp2 = EEPROM.get(5, stemp2);
stemp3 = EEPROM.get(10, stemp3);
}
void time() {
secs = millis() / 1000;
mins = millis() / 1000 / 60;
hours = mins / 60;
days = hours / 24;
}
void time_convert() {
secs = secs - mins * 60;
mins = mins - hours * 60;
hours = hours - days * 24;
}
void coose_menu() {
if (analogRead(A0) < 35 && analogRead(A0) > 30) {
line = line - 1;
} else if (analogRead(A0) < 95 && analogRead(A0) > 75) {
line = line + 1;
}
}
void menu() {
if (line == 1) {
lcd.setCursor(0, 0);
lcd.print(" ");
lcd.setCursor(1, 0);
lcd.print("I1");
lcd.setCursor(4, 0);
lcd.print(float(stemp1 * 0.1));
lcd.setCursor(10, 0);
lcd.print(rtemp1);
if (analogRead(A0) == 0) {
stemp1 = stemp1 - 1;
}
if (analogRead(A0) < 170 && analogRead(A0) > 160) {
stemp1 = stemp1 + 1;
}
EEPROM.write(1, stemp1);
}
if (line == 2) {
lcd.setCursor(0, 0);
lcd.print(" ");
lcd.setCursor(1, 0);
lcd.print("I2");
lcd.setCursor(4, 0);
lcd.print(float(stemp2 * 0.1));
lcd.setCursor(10, 0);
lcd.print(rtemp2);
if (analogRead(A0) == 0) {
stemp2 = stemp2 - 1;
}
if (analogRead(A0) < 170 && analogRead(A0) > 160) {
stemp2 = stemp2 + 1;
}
EEPROM.write(5, stemp2);
}
if (line == 3) {
lcd.setCursor(0, 0);
lcd.print(" ");
lcd.setCursor(1, 0);
lcd.print("I3");
lcd.setCursor(4, 0);
lcd.print(float(stemp3 * 0.1));
lcd.setCursor(10, 0);
lcd.print(rtemp3);
//delay(80);
if (analogRead(A0) == 0) {
stemp3 = stemp3 - 1;
}
if (analogRead(A0) < 170 && analogRead(A0) > 160) {
stemp3 = stemp3 + 1;
}
EEPROM.write(10, stemp3);
}
}
void uptime_lcd() {
lcd.setCursor(0, 3);
lcd.print("UPTIME");
lcd.setCursor(8, 3);
lcd.print(hours);
lcd.setCursor(10, 3);
lcd.print(":");
lcd.setCursor(11, 3);
lcd.print(mins);
lcd.setCursor(13, 3);
lcd.print(":");
lcd.setCursor(14, 3);
lcd.print(secs);
}
void setup()
{
lcd.begin(16, 4);
line = 1;
stemp1 = 350;
stemp2 = 350;
stemp3 = 350;
rtemp1 = 40;
rtemp2 = 40;
rtemp3 = 40;
}
void clear() {
lcd.setCursor(0, 0);
lcd.print(" ");
lcd.setCursor(0, 1);
lcd.print(" ");
lcd.setCursor(0, 2);
lcd.print(" ");
lcd.setCursor(0, 3);
lcd.print(" ");
}
void loop()
{
load();
time();
time_convert();
coose_menu();
menu();
uptime_lcd();
delay(70);
clear();
}
#include <EEPROM.h>
LiquidCrystal lcd(2, 3, 4, 5, 6, 7);
int line;
int stemp1;
int stemp2;
int stemp3;
int stemp4;
int rtemp1;
int rtemp2;
int rtemp3;
int rtemp4;
int days = 0;
int hours = 0;
int mins = 0;
int secs = 0;
void load() {
stemp1 = EEPROM.get(1, stemp1);
stemp2 = EEPROM.get(5, stemp2);
stemp3 = EEPROM.get(10, stemp3);
}
void time() {
secs = millis() / 1000;
mins = millis() / 1000 / 60;
hours = mins / 60;
days = hours / 24;
}
void time_convert() {
secs = secs - mins * 60;
mins = mins - hours * 60;
hours = hours - days * 24;
}
void coose_menu() {
if (analogRead(A0) < 35 && analogRead(A0) > 30) {
line = line - 1;
} else if (analogRead(A0) < 95 && analogRead(A0) > 75) {
line = line + 1;
}
}
void menu() {
if (line == 1) {
lcd.setCursor(0, 0);
lcd.print(" ");
lcd.setCursor(1, 0);
lcd.print("I1");
lcd.setCursor(4, 0);
lcd.print(float(stemp1 * 0.1));
lcd.setCursor(10, 0);
lcd.print(rtemp1);
if (analogRead(A0) == 0) {
stemp1 = stemp1 - 1;
}
if (analogRead(A0) < 170 && analogRead(A0) > 160) {
stemp1 = stemp1 + 1;
}
EEPROM.write(1, stemp1);
}
if (line == 2) {
lcd.setCursor(0, 0);
lcd.print(" ");
lcd.setCursor(1, 0);
lcd.print("I2");
lcd.setCursor(4, 0);
lcd.print(float(stemp2 * 0.1));
lcd.setCursor(10, 0);
lcd.print(rtemp2);
if (analogRead(A0) == 0) {
stemp2 = stemp2 - 1;
}
if (analogRead(A0) < 170 && analogRead(A0) > 160) {
stemp2 = stemp2 + 1;
}
EEPROM.write(5, stemp2);
}
if (line == 3) {
lcd.setCursor(0, 0);
lcd.print(" ");
lcd.setCursor(1, 0);
lcd.print("I3");
lcd.setCursor(4, 0);
lcd.print(float(stemp3 * 0.1));
lcd.setCursor(10, 0);
lcd.print(rtemp3);
//delay(80);
if (analogRead(A0) == 0) {
stemp3 = stemp3 - 1;
}
if (analogRead(A0) < 170 && analogRead(A0) > 160) {
stemp3 = stemp3 + 1;
}
EEPROM.write(10, stemp3);
}
}
void uptime_lcd() {
lcd.setCursor(0, 3);
lcd.print("UPTIME");
lcd.setCursor(8, 3);
lcd.print(hours);
lcd.setCursor(10, 3);
lcd.print(":");
lcd.setCursor(11, 3);
lcd.print(mins);
lcd.setCursor(13, 3);
lcd.print(":");
lcd.setCursor(14, 3);
lcd.print(secs);
}
void setup()
{
lcd.begin(16, 4);
line = 1;
stemp1 = 350;
stemp2 = 350;
stemp3 = 350;
rtemp1 = 40;
rtemp2 = 40;
rtemp3 = 40;
}
void clear() {
lcd.setCursor(0, 0);
lcd.print(" ");
lcd.setCursor(0, 1);
lcd.print(" ");
lcd.setCursor(0, 2);
lcd.print(" ");
lcd.setCursor(0, 3);
lcd.print(" ");
}
void loop()
{
load();
time();
time_convert();
coose_menu();
menu();
uptime_lcd();
delay(70);
clear();
}
Вот блок который переключает менюхи
void coose_menu() {
if (analogRead(A0) < 35 && analogRead(A0) > 30) {
line = line - 1;
} else if (analogRead(A0) < 95 && analogRead(A0) > 75) {
line = line + 1;
}
}
if (analogRead(A0) < 35 && analogRead(A0) > 30) {
line = line - 1;
} else if (analogRead(A0) < 95 && analogRead(A0) > 75) {
line = line + 1;
}
}
Всего есть три менюхи между которыми я переключаюсь. нужно что бы после 3го перескакивало на 1е меню, а не убегало дальше.