Skocz do zawartości

LCD IC2 4x20 wyświetla tylko pierwsze litery.


Pomocna odpowiedź

Ok dalej walczę.Zrobiłem menu i usiłuje połączyć z grą. W grze chce zrobić tablicę. Z regułami gry.  Np strit=1,2,3,4,5 lub 2,3,4,5,6 to 150 punktów Tyle już mam zrobione do gry w 1000.

#include <Wire.h>
#include <LiquidCrystal_I2C_Hangul.h>
LiquidCrystal_I2C_Hangul lcd(0x27, 20, 4);

byte przyciskPrawo = 0;
byte przyciskLewo = 0;
byte przyciskOK = 0;
byte ekran = 0;
byte iloscGraczy = 0;
byte stanOK = 0;
byte stanLewo = 0;
byte stanPrawo = 0;
byte gra = 0;
//ś
byte znak0[8] = {
  B00010,
  B00100,
  B01110,
  B10000,
  B01110,
  B00001,
  B11110,
  B00000
};
//ć
byte znak1[8] = {
  B00010,
  B00100,
  B01110,
  B10000,
  B10000,
  B10001,
  B01110,
  B00000
};
//ó
byte znak2[8] = {
  B00010,
  B00100,
  B01110,
  B10001,
  B10001,
  B10001,
  B01110,
  B00000
};
//ż
byte znak3[8] = {
  B00100,
  B00000,
  B11111,
  B00010,
  B00100,
  B01000,
  B11111,
  B00000
};
//ę
byte znak4[8] = {
  B00000,
  B01110,
  B10001,
  B11111,
  B10000,
  B01110,
  B00010,
  B00001
};

int losowaLiczba0;
int losowaLiczba1;
int losowaLiczba2;
int losowaLiczba3;
int losowaLiczba4;
int wynik;
int tura;
int rzut;
int suma;
int gracz;
int losowaLiczba[5];

void setup()
{
  lcd.init();
  lcd.backlight();
  lcd.clear(); // zerowanie wyświetlacza
  pinMode(2, INPUT_PULLUP); // przycisk prawo
  pinMode(3, INPUT_PULLUP);// przycisk OK
  pinMode(4, INPUT_PULLUP); //przycisk lewo
  lcd.createChar(0, znak0);
  lcd.createChar(1, znak1);
  lcd.createChar(2, znak2);
  lcd.createChar(3, znak3);
  lcd.createChar(4, znak4);

}

void loop()
{
  przyciski();
  if (ekran == 0)
  {
    powitanie();
  }
  if (ekran == 1)
  {
    wyborIlosciGraczy();
  }
  if (ekran == 2)
  {
    ilosciGraczy();
  }
  
}

void powitanie()
{

  lcd.setCursor(0, 0);
  lcd.print("  Witam Wszystkich   ");
  lcd.setCursor(0, 1);
  lcd.print("     Gra w 1000");
  lcd.setCursor(0, 2);
  lcd.print("   Kenshin Himura");
  lcd.setCursor(0, 3 );
  lcd.print("    Naci");
  lcd.print((char)0);
  lcd.print("nij OK");

  if (przyciskOK == 1 && stanOK == 0)
  {
    stanOK = 1;
  }
  if (przyciskOK == 0 && stanOK == 1)
  {
    stanOK = 0;
    ekran = 1;
  }

}
void przyciski()
{
  if (digitalRead (2) == LOW)
  {
    delay (20);
    if (digitalRead (2) == LOW)
    {
      przyciskPrawo = 1;
    }
  }
  else
  {
    przyciskPrawo = 0;
  }
  if (digitalRead (3) == LOW)
  {
    delay (20);
    if (digitalRead (3) == LOW)
    {
      przyciskOK = 1;
    }
  }
  else
  {
    przyciskOK = 0;
  }
  if (digitalRead (4) == LOW)
  {
    delay (20);
    if (digitalRead (4) == LOW)
    {
      przyciskLewo = 1;
    }
  }
  else
  {
    przyciskLewo = 0;
  }
}

void wyborIlosciGraczy()
{

  lcd.setCursor(0, 0);
  lcd.print("Wybierz Ilo");
  lcd.print((char)0);
  lcd.print((char)1);
  lcd.print(" Graczy");
  lcd.setCursor(0, 1);
  lcd.print("Liczba Graczy:");
  lcd.setCursor(14, 1);
  lcd.print(iloscGraczy);
  lcd.setCursor(0, 2);
  lcd.print("    Naci");
  lcd.print((char)0);
  lcd.print("nij OK  ");
  lcd.setCursor(0, 3 );
  lcd.print("Zatwierd");
  lcd.print((char)3);
  lcd.print("    OK");
  if (przyciskPrawo == 1 && stanPrawo == 0 && iloscGraczy < 5)
  {
    stanPrawo = 1;
  }
  if (przyciskPrawo == 0 && stanPrawo == 1)
  {
    stanPrawo = 0;
    iloscGraczy = iloscGraczy + 1;
  }
  if (przyciskLewo == 1 && stanLewo == 0 && iloscGraczy > 2)
  {
    stanLewo = 1;
  }
  if (przyciskLewo == 0 && stanLewo == 1)
  {
    stanLewo = 0;
    iloscGraczy = iloscGraczy - 1;
  }
  if (przyciskOK == 1 && stanOK == 0)
  {
    stanOK = 1;
  }
  if (przyciskOK == 0 && stanOK == 1)
  {
    stanOK = 0;
    ekran = 2;
  }
}
void ilosciGraczy()
{

  lcd.setCursor(0, 0);
  lcd.print("Wybrano     Graczy  ");
  lcd.setCursor(9, 0);
  lcd.print(iloscGraczy);
  lcd.setCursor(0, 1);
  lcd.print("Rozpocznij  gr");
  lcd.print((char)4);
  lcd.setCursor(0, 2);
  lcd.print("    Naci");
  lcd.print((char)0);
  lcd.print("nij OK  ");
  lcd.setCursor(0, 3 );
  lcd.print("Powodzenia          ");

  if (przyciskOK == 1 && stanOK == 0)
  {
    stanOK = 1;
  }
  if (przyciskOK == 0 && stanOK == 1)
  {
    stanOK = 0;
    ekran = 0;

 
   
      lcd.setCursor(0, 0);
      lcd.print("Gracz:  ");
      lcd.backlight(); // zalaczenie podswietlenia
      lcd.setCursor(9, 0);
      lcd.print("1-2-3-4-5.");
      lcd.setCursor(0, 2);
      lcd.print("Wynik Gracza:");

      lcd.setCursor(0, 0);
      lcd.print("Gracz: ");
      lcd.setCursor(6, 0);
      lcd.print(gracz);
      lcd.setCursor(0, 3);
      lcd.print("Suma Punkt");//Suma punktów
      lcd.print((char)4);
      lcd.print("w:");

      lcd.setCursor(0, 1);
      lcd.print("Rzut:");
      lcd.setCursor(5, 1);
      lcd.print(rzut);

      rzut = 0;
      rzut = rzut + 1;
      gracz = 0;
      gracz = gracz + wynik;
      tura = 0;

      {
        delay(20);
        {
          for (int i = 0; i < 5; i++)
          {
            losowaLiczba[i] = random(1, 7);
            lcd.setCursor(i + i + 9, 1);
            lcd.print(losowaLiczba[i]);
          }

          for (int i = 0; i < 5; i++)
            wynik += losowaLiczba[i];  //suma tablicy losowaLiczba

          lcd.setCursor(15, 2);
          lcd.print(wynik);
          wynik = 0;

          lcd.setCursor(15, 3);
          lcd.print(suma + wynik);
          suma = wynik + suma;
          suma = 0;

        }
      }
    }
  }

 

Link to post
Share on other sites

Sprawdźcie, czy magistrala i2c jest na pewno do wyświetlacza z daną ilością znaków. Gdy do LCD np. 4x20 przylutujecie i podłączycie magistrale i2c do wyświetlacza mp. 2x16,nie będzie działała poprawnie. 

Link to post
Share on other sites

Dołącz do dyskusji, napisz odpowiedź!

Jeśli masz już konto to zaloguj się teraz, aby opublikować wiadomość jako Ty. Możesz też napisać teraz i zarejestrować się później.
Uwaga: wgrywanie zdjęć i załączników dostępne jest po zalogowaniu!

Anonim
Dołącz do dyskusji! Kliknij i zacznij pisać...

×   Wklejony jako tekst z formatowaniem.   Przywróć formatowanie

  Dozwolonych jest tylko 75 emoji.

×   Twój link będzie automatycznie osadzony.   Wyświetlać jako link

×   Twoja poprzednia zawartość została przywrócona.   Wyczyść edytor

×   Nie możesz wkleić zdjęć bezpośrednio. Prześlij lub wstaw obrazy z adresu URL.

×
×
  • Utwórz nowe...

Ważne informacje

Ta strona używa ciasteczek (cookies), dzięki którym może działać lepiej. Więcej na ten temat znajdziesz w Polityce Prywatności.