Arduino UNO – Keypad ve 16×2 LCD ile Sayı Bulmaca Oyunu

Devre Şeması

Kodlar

#include <Keypad.h>
const byte ROWS = 4;

const byte COLS = 4;



char keys[ROWS][COLS] = {

  { '1', '2', '3', 'A' },

  { '4', '5', '6', 'B' },

  { '7', '8', '9', 'C' },

  { '*', '0', '#', 'D' }

};



byte rowPins[ROWS] = { 13, 12, 11, 10 };

byte colPins[COLS] = { 9, 8, 7, 6 };

Keypad tuslar = Keypad(makeKeymap(keys), rowPins, colPins, ROWS, COLS);
// C++ code
//
#include <Adafruit_LiquidCrystal.h>

Adafruit_LiquidCrystal lcd_1(0);

long gizliSayi = 0;
long girilenSayi = 0;

void setup()
{
  lcd_1.begin(16, 2);

  lcd_1.setBacklight(1);
  lcd_1.setCursor(3, 0);
  lcd_1.print("SAYI BULMA");
  lcd_1.setCursor(5, 1);
  lcd_1.print("OYUNU");
  delay(1000);
  lcd_1.clear();

  randomSeed(analogRead(A0));
  gizliSayi = random(1000, 10000);

  lcd_1.setCursor(0, 0);
  lcd_1.print("Sayiyi Girin:");
}

void loop()
{
  char tus = tuslar.getKey();
  switch (tus) {
    case '0':
      girilenSayi = (girilenSayi * 10) + 0;
      break;

    case '1':
      girilenSayi = (girilenSayi * 10) + 1;
      break;

    case '2':
      girilenSayi = (girilenSayi * 10) + 2;
      break;

    case '3':
      girilenSayi = (girilenSayi * 10) + 3;
      break;

    case '4':
      girilenSayi = (girilenSayi * 10) + 4;
      break;

    case '5':
      girilenSayi = (girilenSayi * 10) + 5;
      break;

    case '6':
      girilenSayi = (girilenSayi * 10) + 6;
      break;

    case '7':
      girilenSayi = (girilenSayi * 10) + 7;
      break;

    case '8':
      girilenSayi = (girilenSayi * 10) + 8;
      break;

    case '9':
      girilenSayi = (girilenSayi * 10) + 9;
      break;

    case 'A':
      //A'a basıldıysa Yeni bir sayı ile başla
      randomSeed(analogRead(A0));
      gizliSayi = random(1000, 10000);
      lcd_1.clear();
      lcd_1.setCursor(0, 0);
      lcd_1.print("Yeni bir sayi");
      lcd_1.setCursor(0, 1);
      lcd_1.print("tuttum. Hadi bul");
      delay(2000);
      lcd_1.clear();
      lcd_1.setCursor(0, 0);
      lcd_1.print("Sayiyi Girin:");
      girilenSayi = 0;
      break;

    case 'B':
      //B'a basıldıysa
      break;

    case 'C':
      //C'a basıldıysa
      break;

    case 'D':
      //D'a basıldıysa
      break;

    case '*':
      //*'a basıldıysa
      girilenSayi = 0;
      lcd_1.setCursor(0, 1);
      lcd_1.print("                ");
      break;

    case '#':
      //#'a basıldıysa
      if (girilenSayi < gizliSayi) {
        lcd_1.setCursor(0, 0);
        lcd_1.print("Sayi Kucuk      ");
        delay(2000);
        lcd_1.clear();
        lcd_1.setCursor(0, 0);
        lcd_1.print("Sayiyi Girin:");
        girilenSayi = 0;
      } else if (girilenSayi > gizliSayi) {
        lcd_1.setCursor(0, 0);
        lcd_1.print("Sayi Buyuk      ");
        delay(2000);
        lcd_1.clear();
        lcd_1.setCursor(0, 0);
        lcd_1.print("Sayiyi Girin:");
        girilenSayi = 0;
      } else if (girilenSayi == gizliSayi) {
        lcd_1.clear();
        lcd_1.setCursor(0, 0);
        lcd_1.print("   Tebrikler    ");
        lcd_1.setCursor(0, 1);
        lcd_1.print(" SAYIYI BULDUN  ");
        delay(5000);
        lcd_1.setCursor(0, 0);
        lcd_1.print("Gizli Sayi: ");
        lcd_1.setCursor(0, 1);
        lcd_1.print("                ");
      }
      break;
  }
  if (girilenSayi > 10000) {
    girilenSayi = 0;
    lcd_1.setCursor(0, 1);
    lcd_1.print("                ");
  }
  lcd_1.setCursor(0, 1);
  lcd_1.print(girilenSayi);
}

Yorum bırakın