Skocz do zawartości

Wyświetlacz LCD do Arduino uno 3 z kursu nie działa w funkcjach


stacode

Pomocna odpowiedź

no więc próbuje żeby ułożyć wszystko w funkcje aby było wszystko ładnie wkładam ten kod w funkcje i nic się nie wyświetla.A zewnątrz funkcji wszystko dobrze działa.

int menu(){

  lcd.clear();
  while(digitalRead(9)==HIGH){
    if (digitalRead(8) == LOW){
      if(lvl == 1){lvl = 2; continue;}
      if(lvl == 2){lvl = 3; continue;}
      if(lvl == 3){lvl = 1; continue;}
      lcd.clear();
      lcd.setCursor(1,8);
      if(lvl == 1){lcd.print("E");}
      if(lvl == 2){lcd.print("M");}
      if(lvl == 3){lcd.print("H");}
      delay(20);

    }
    if(lvl == 1){mut = -3;}
    if(lvl == 2){mut = 0;}
    if(lvl == 3){mut = 1;}
    if(lvl == 1){mut2 = -1;}
    if(lvl == 2){mut2 = 0;}
  
  
  }}

A jak ktoś może ma lepszy sposób na zrobienie tego to jestem otwarty na sugestie

Link do komentarza
Share on other sites

#include <LiquidCrystal.h>
LiquidCrystal lcd(2, 3, 4, 5, 6, 7);
bool r = true;
int lop = 0;
int p1 = random(11,16);
int p2 = random(11,16);
int p3 = random(11,16);
int p4 = random(11,16);
int p5 = 31;
int p6 = 28;
int dl = 0;
int count = 0;
int long tim = 0;
bool koniec = false;
int punkty = 0;
int lvl = 2;
int mut;
int mut2;
void buttonWait(){
    while(digitalRead(9) == HIGH){
      continue;
  }
}


void setup() {
  Serial.begin(9600);
  randomSeed(analogRead(0));
  int p1 = 0;
  int p2 = 0;
  pinMode(8,INPUT_PULLUP);
  pinMode(9,INPUT_PULLUP);
  lcd.begin(16,2);
  bool r = true;
  int lop = 0; 
  menu();
      
      
     
}
int menu(){

  lcd.clear();
  while(digitalRead(9)==HIGH){
    if (digitalRead(8) == LOW){
      if(lvl == 1){lvl = 2; continue;}
      if(lvl == 2){lvl = 3; continue;}
      if(lvl == 3){lvl = 1; continue;}
      lcd.clear();
      lcd.setCursor(1,8);
      if(lvl == 1){lcd.print("E");}
      if(lvl == 2){lcd.print("M");}
      if(lvl == 3){lcd.print("H");}
      delay(20);

    }
    if(lvl == 1){mut = -3;}
    if(lvl == 2){mut = 0;}
    if(lvl == 3){mut = 1;}
    if(lvl == 1){mut2 = -1;}
    if(lvl == 2){mut2 = 0;}
  
  
  }}

void pun(){
  punkty++;
  punkty= punkty+mut2;
  if(dl > 10){
    punkty++;
  }
  if(dl>30){punkty++;}
  if(dl>40){punkty++;punkty++;punkty++;}}
int ruch(int x){if(x == 1){
      if(r){
        koniec = true;
        return 0;
        }
        else{
          x=random(13,20);
          dl = dl+1;
          pun();
          return x;
          }
        }else{
        return x-1;
        }}
int ruch2(int x){if(x == 1){
      if(not r){
        koniec = true;
        return 0;
        }
        else{
          x=random(13,20);
          dl = dl+1;
          pun();
          return x;
          }
        }else{
        return x-1;
        }}
void loop() {
  char ascii = 0x00+255;
  lop = lop+1;
  if(dl>45+mut){
    dl = 45+mut;
    
  }
  //Serial.println("tim:");
 // Serial.print(tim);
  //Serial.println("mil:");
  //Serial.print(millis());
   
  if(digitalRead(8) == LOW and tim+200 <millis()){
    r = not r;
    //Serial.println("zrobiono");
    //delay(500);
    tim = millis();
  }
  if (r == true){
    lcd.setCursor(0,1);
    lcd.print(" ");
   lcd.setCursor(0,0);
   lcd.print(ascii);
   } else{
     lcd.setCursor(0,0);
     lcd.print(" ");
     lcd.setCursor(0,1);
     lcd.print(ascii);
        
        } 


    ascii = 0x00+60;
    if(lop == 50-dl){
      Serial.println(dl);
      count++;
      if (count == 13 or count ==26 or count ==39 or count ==51 and lvl!=3){
        p5 = p5 + 13;
       p6 = p6+13;
        }
      if(count == 1){
        p1 = random(11,16);
        p2 = random(11,16);
        p3 = random(11,16);
        p4 = random(11,16);
        }  
    p1=ruch(p1); 
    p2 = ruch(p2);
    p3=ruch2(p3);
    p4 = ruch2(p4);
    p5 = ruch(p5);   
    p6 = ruch2(p6);
    if(p1==p3 or p1+1==p3 or p1-1 == p3){
      p1++;
      p1++;     
      }
    if(p1==p4 or p1+1==p4 or p1-1 == p4){
      p1++;
      p1++;    
      }
      if(p1==p6 or p1+1==p6 or p1-1 == p6){
      p1++;
      p1++;    
      }  
    if(p2==p3 or p2+1==p3 or p2-1 == p3){
      p2++;
      p2++;     
      }
    if(p2==p4 or p2+1==p4 or p2-1 == p4){
      p2++;
      p2++;     
      }
      if(p2==p6 or p2+1==p6 or p2-1 == p6){
      p2++;
      p2++;     
      }
      if(p5==p6 or p5+1==p6 or p5-1 == p6 ){
      p5++;
      p5++;     
      }   
      if(p3==p5 or p3+1==p5 or p3-1 == p5 ){
      p3++;
      p3++;     
      }
      if(p4==p5 or p4+1==p5 or p4-1 == p5 ){
      p4++;
      p4++;     
      }
      lcd.clear();
      lcd.setCursor(p1,0);
    lcd.print(ascii);
    lcd.setCursor(p2,0);
    lcd.print(ascii);
    lcd.setCursor(p3,1);
    lcd.print(ascii);
    lcd.setCursor(p4,1);
    lcd.print(ascii);
    lcd.setCursor(p5,0);
    lcd.print(ascii);
    lcd.setCursor(p6,1);
    lcd.print(ascii);  
    lcd.setCursor(13,0);
    char ascii = 0x00+255;
    lcd.print(ascii);
    lcd.print(ascii);
    lcd.print(ascii);
    lcd.setCursor(13,0);
    lcd.print(punkty);
    lcd.setCursor(13,1);
    lcd.print(ascii);
    lcd.print("x");
    if(dl < 10){lcd.print(1+mut2);}
    lcd.setCursor(15,1);
    if(dl>=10){lcd.print(2+mut2);}
    lcd.setCursor(15,1);
    if(dl>30){lcd.print(3+mut2);}
    lcd.setCursor(15,1);
    if(dl > 40){lcd.print(5+mut2);}         
    lop = 0;
    //Serial.println("zrobiono");
    }
    
    if(koniec){
      lcd.clear();
      lcd.setCursor(0,0);
      lcd.print("Punkty: ");
      lcd.print(punkty);
      while(2){}
      }    
    delay(20);
    
        
}

oto cały kod .To jest gra, a menu() ma być miejscem gdie wybiera sie trudność (to wchodzi w gre zmienna lvl)

Link do komentarza
Share on other sites

Wez przede wszystki umiesc te funkcje albo na gorze albo na dole bo strasznie to porozrzucane jest...

Ps..a skoro poza funkcja wyswietla prawidlowo to znaczy ze jest jakis problem z wywolaniem funkcji

Edytowano przez farmaceuta
  • Lubię! 1
Link do komentarza
Share on other sites

Zarejestruj się lub zaloguj, aby ukryć tę reklamę.
Zarejestruj się lub zaloguj, aby ukryć tę reklamę.

jlcpcb.jpg

jlcpcb.jpg

Produkcja i montaż PCB - wybierz sprawdzone PCBWay!
   • Darmowe płytki dla studentów i projektów non-profit
   • Tylko 5$ za 10 prototypów PCB w 24 godziny
   • Usługa projektowania PCB na zlecenie
   • Montaż PCB od 30$ + bezpłatna dostawa i szablony
   • Darmowe narzędzie do podglądu plików Gerber
Zobacz również » Film z fabryki PCBWay

3 godziny temu, stacode napisał:

@farmaceuta dobrze menu() wywoływam w setup() i nie widzie problemów

A ja kilka widze...co to za dziwne return'y w funkcji void pun() zwracajace jakies dane?? (Edit...a no ok, pun() nic nie zwraca...strasznie ten kod nie czytelny)

I co zwraca funkcja int menu()?? Bo widze ze zwraca...ze nic nie zwraca, a chyba musi😉 

Tutaj masz link o funkcjach...(interesuje Cie to od polowy strony w dol, ALE! przeczytaj calosc bo bardzo fajnie funkcje opisane) 

https://cpp0x.pl/kursy/Kurs-C++/Poziom-2/Funkcje-a-slowo-kluczowe-return/339

Edytowano przez farmaceuta
  • Lubię! 1
Link do komentarza
Share on other sites

Bądź aktywny - zaloguj się lub utwórz konto!

Tylko zarejestrowani użytkownicy mogą komentować zawartość tej strony

Utwórz konto w ~20 sekund!

Zarejestruj nowe konto, to proste!

Zarejestruj się »

Zaloguj się

Posiadasz własne konto? Użyj go!

Zaloguj się »
×
×
  • 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.