Może Ci pomoże, robione na shieldzie wiec jest lekka różnica w odczytywaniu z przycisków, i skasowałem wszystkie elementy do wyświetlania komunikatów na serial monitorze, ale generalnie można to rozwiązać np tak:
- tworzysz zmienną określającą czy padł dubel (na początku jako fałsz)
- nasłuchujesz przycisku
- jeżeli został wciśniety to przestajesz go nasłuchiwać, losujesz kostki (1 i 2) i wyświetlasz komunikaty
- następnie jeżeli padł dubel zmieniasz wartość dubel na true, wyświetlasz komunikaty i zaczynasz nasłuchiwać przycisku dopóki użytkownik nie wyrzuci drugiego rzutu po dublu - wtedy wyświetlasz komunikaty i przypisujesz dubel jako false.
Generalnie większość miałeś zrobione - przypuszczam, że kontrolowanie dubli chciałeś zrobić zmiennymi x,y,z
#include <LiquidCrystal.h>
LiquidCrystal lcd(8, 9, 4, 5, 6, 7);
void setup(){
lcd.begin(16, 2);
lcd.setCursor(0,0);
lcd.print("Kostka do gry");
lcd.setCursor(0, 1);
lcd.print("nacisnij i losuj");
randomSeed(analogRead(0));
}
int sygnal_przycisk = 0;
bool dubel = false;
byte kostka1;
byte kostka2;
byte kostka3;
byte kostka4;
void loop(){
dubel = false;
sygnal_przycisk = analogRead(0);
if (sygnal_przycisk < 850 && sygnal_przycisk >650) {
sygnal_przycisk = 0;
kostka1=random(1,7);
kostka2=random(1,7);
lcd.clear();
lcd.print("Rzut: ");
lcd.print(kostka1);
lcd.print( " i ");
lcd.print(kostka2);
lcd.print(" = ");
lcd.print(kostka2+kostka1);
lcd.setCursor(0, 1);
lcd.print("Nastepny rzut...");
delay(600);
if (kostka1 == kostka2){
dubel = true;
lcd.clear();
lcd.setCursor(0, 0);
lcd.print(" DUBEL ");
lcd.setCursor(0, 1);
lcd.print("Rzucasz ponownie");
delay(600);
do {
sygnal_przycisk = analogRead(0);
if (sygnal_przycisk < 850 && sygnal_przycisk >650) {
kostka3=random(1,7);
kostka4=random(1,7);
lcd.clear();
lcd.print("Rzut1: ");
lcd.print(kostka1);
lcd.print( "i");
lcd.print(kostka2);
lcd.print("=");
lcd.print(kostka2+kostka1);
lcd.setCursor(0, 1);
lcd.print("Rzut2: ");
lcd.print(kostka3);
lcd.print("i");
lcd.print(kostka4);
lcd.print("=");
lcd.print(kostka3+kostka4);
lcd.print("=");
lcd.print(kostka1+kostka2+kostka3+kostka4);
delay(600);
dubel = false;
}
} while (dubel == true);
}
}
}
Fragmenty
(sygnal_przycisk < 850 && sygnal_przycisk >650)
wynikają z korzystania z shielda u Ciebie to sensorVal