• Witaj na Forum Arduino Polska! Zapraszamy do rejestracji!
  • Znajdziesz tutaj wiele informacji na temat hardware / software.
Witaj! Logowanie Rejestracja


Ocena wątku:
  • 0 głosów - średnia: 0
  • 1
  • 2
  • 3
  • 4
  • 5
LCD IC2 4x20 wyświetla tylko pierwsze litery
#41
(03-01-2021, 10:21)Agregacik napisał(a): Powinno działać na 6,7,8. Czy wszędzie zmieniałeś numery pinów w "void przyciski()" też?  Rezystorów nie musi być ale nie zaszkodzą. Rezystory oczywiście podciągające do +5V.
Nie chce działać na 6,7,8. Jak wpisać tabelę Układy i wartości
Układ liczy się tylko wtedy, gdy powstał w jednym rzucie. Dwójki, trójki, czwórki i szóstki liczą się jedynie w układach co najmniej trzech tych samych kości. Za każdy układ przysługuje określona liczba punktów:

jedna piątka - 5
jedna jedynka - 10
dwie piątki - 10
dwie jedynki - 20
trzy te same (z wyjątkiem jedynek) - wartość oczka razy 10
trzy jedynki - 100
cztery te same (z wyjątkiem jedynek) - wartość oczka razy 20
cztery jedynki - 200
pięć oczek po kolei (strit) - 150
pięć tych samych oczek - 1000 Próbowałem też połączyć menu z grą. I dodawać winiuk rzuto do sumy punktów. Nie wychodzi mi. W 1000 jest jeden rzut i zmiana gracza. Też mi nie wychodzi. Liczy kolejne kości ale to nie to. Dodać kolejny ekran void gra?
Kod:
#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 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;

    if (digitalRead(przyciskOK) == LOW)

    {
      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;

      }
    }
  }
}
 
Odpowiedź
  


Wiadomości w tym wątku
RE: LCD IC2 4x20 wyświetla tylko pierwsze litery - przez Himura Kenshin - 03-01-2021, 20:59

Skocz do:


Przeglądający: 1 gości