Napisalem kod ktory wyswietlać mial menu i submenu jednak po odpaleniu go w arduino na moim wyswietlaczu lcd pojawia sie tylko "opcja1opcja1opcja1..." i nie odpowiada na przyciski . Czy wie ktos co tu zle zrobilem i jak to naprawic? Kod wyglada tak :
#include <Wire.h>
#include <LiquidCrystal_I2C.h>
// Set the LCD address to 0x27 for a 16 chars and 2 line display
LiquidCrystal_I2C lcd(0x27, 16, 2);
//piny guzikow
#define DownB 10
#define UpB 9
#define SelectB 8
#define BackB 7
void setup() {
lcd.begin();
lcd.clear();
pinMode( UpB,INPUT);
pinMode( DownB,INPUT);
pinMode( SelectB,INPUT);
pinMode( BackB,INPUT);
}
//zmienne
int pressBack;//sluza do okreslenia w jakim stanie jest pin
int pressUp;
int pressDown;
int pressSelect;
int readkey;
int menuState = 1;//sluza do okreslenia stanu menu
int subMenuState = 1;
int poziom = 1;
void loop() {
pressBack = digitalRead(BackB);
pressUp = digitalRead(UpB);
pressDown = digitalRead(DownB);
pressSelect = digitalRead(SelectB);
switch (menuState){
case 1:
option_1();
break;
case 2:
option_2();
break;
}
delay(300);
}
void option_1()
{
if (poziom == 1)//menu głowne
{
lcd.print("opcja1");
if(pressUp==HIGH)
{
menuState =2;
pressUp = LOW;
}
else if (pressSelect == HIGH)
{
poziom = 2;
subMenuState = 1;
pressSelect = LOW;
}
}
else if(poziom == 2)
{
switch (subMenuState){
case 1:
lcd.clear();
lcd.print("opcja 1.1");
if(pressUp == HIGH)
{
subMenuState = 2;
pressUp = LOW ;
}
else if(pressBack==HIGH )
{
poziom = 1;
pressBack=LOW;
}
break;
case 2:
lcd.clear();
lcd.print("opcja 1.2");
if (pressUp == HIGH)
{
subMenuState = 3;
pressUp = LOW;
}
else if (pressDown == HIGH)
{
subMenuState = 1;
pressDown = LOW;
}
else if(pressBack == HIGH)
{
poziom = 1 ;
pressBack = LOW;
}
break;
case 3:
lcd.clear();
lcd.print("opcja 1.3");
if (pressDown == HIGH)
{
subMenuState = 2;
pressDown = LOW;
}
else if(pressBack == HIGH)
{
poziom = 1 ;
pressBack = LOW;
}
break;
}
}
}
void option_2()
{
lcd.clear();
lcd.print("opcja 2");
if (pressDown == HIGH && poziom == 1){
menuState = 1 ;
pressDown = LOW;}
}