#include <LiquidCrystal_I2C.h>
LiquidCrystal_I2C lcd = LiquidCrystal_I2C(0x27, 16, 2);
int buttonPinStart = 12;
int buttonPinRestart = 13;
int lastButtonState[] = {0, 0};
int maxA = 100;
int minA = 1;
int sproba = 0;
int UserD = 0;
int RandomN;
byte simvol[8] = {
0b01000,
0b01000,
0b11100,
0b01000,
0b01010,
0b00010,
0b00111,
0b00010
};
void setup() {
Serial.begin(9600);
lcd.init();
lcd.backlight();
lcd.clear();
pinMode(buttonPinStart, INPUT);
pinMode(buttonPinRestart, INPUT);
lcd.createChar(1, simvol);
start();
}
void loop() {
if (singleClickEvent(buttonPinStart, lastButtonState[0])) {
lcd.clear();
RandomN = random(0, 100);
Serial.print(RandomN);
lcd.setCursor(0,0);
lcd.print("Sproba: ");
lcd.print(sproba);
lcd.setCursor(0,1);
lcd.print(1);
lcd.print(" < Point < ");
lcd.print(100);
Serial.println("Початок");
while(UserD!=RandomN){
if (singleClickEvent(buttonPinRestart, lastButtonState[1])) {
restart();
}
if (Serial.find("n")) {
UserD = Serial.parseInt();
Serial.println(UserD);
if(UserD==RandomN){
lcd.clear();
lcd.setCursor(4, 0);
lcd.print("Win!!!");
break;
sproba++;
}
else{
sproba++;
lcd.clear();
lcd.setCursor(0,0);
lcd.print("Sproba: ");
lcd.print(sproba);
lcd.setCursor(0,1);
if((UserD<minA && UserD<RandomN)|| (UserD>minA && UserD<maxA && UserD<RandomN)){
minA=UserD;
}
else if(UserD>minA){
maxA=UserD;
}
updateLCD();
}
}
}
}
}
bool singleClickEvent(int buttonPin, int &lastButtonState) {
int reading = digitalRead(buttonPin);
if (reading != lastButtonState) {
lastButtonState = reading;
if (reading == LOW) {
return true;
}
}
lastButtonState = reading;
return false;
}
void updateLCD(){
lcd.setCursor(0,1);
lcd.print(minA);
lcd.print(" < Point < ");
lcd.print(maxA);
}
void start(){
lcd.clear();
lcd.setCursor(0,0);
lcd.print(char(1));
lcd.setCursor(2,0);
lcd.print(char(1));
lcd.setCursor(5,0);
lcd.print("Start?");
lcd.setCursor(13,0);
lcd.print(char(1));
lcd.setCursor(15,0);
lcd.print(char(1));
lcd.setCursor(1,1);
lcd.print(char(1));
lcd.setCursor(3,1);
lcd.print(char(1));
lcd.setCursor(12,1);
lcd.print(char(1));
lcd.setCursor(14,1);
lcd.print(char(1));
}
void restart(){
sproba = 0;
maxA = 100;
lcd.setCursor(0,0);
lcd.print("Sproba: ");
lcd.print(sproba);
lcd.setCursor(0,1);
lcd.print(1);
lcd.print(" < Point < ");
lcd.print(100);
}