Merhaba arkadaşlar ;bu uygulamamızda LCD panel mesafe sensörü buzzer ve 2 adet led ile mini bir oyun tasarlayacağız iş bitiminde eğlenceli olacağından eminim
oyun seviye seviye hızlanıyor ve başlamak için sizin elinizi yaklaştırmanızı bekliyor iyi eğlenceler …..

#include <LiquidCrystal_I2C.h>
#include <EEPROM.h>
LiquidCrystal_I2C lcd(0x27, 16, 2);
#define TRIG 9
#define ECHO 10
#define BUZZER 3
int obstaclePos = 15;
int playerRow = 1;
int score = 0;
int highScore = 0;
int level = 1;
int gameSpeed = 150;
int kirmiziled =7;
int sariled=6;
bool jumping = false;
unsigned long jumpStart = 0;
bool gameOver = false;
bool waitingStart = true;
// CUSTOM CHARACTERS
byte ship[8] = {
B00100,B01110,B11111,B01110,B00100,B01010,B10001,B00000
};
byte asteroid[8] = {
B00110,B01111,B11111,B11111,B11111,B01110,B00100,B00000
};
long readDistance() {
digitalWrite(TRIG, LOW);
delayMicroseconds(2);
digitalWrite(TRIG, HIGH);
delayMicroseconds(10);
digitalWrite(TRIG, LOW);
long duration = pulseIn(ECHO, HIGH);
return duration * 0.034 / 2;
}
void startMelody() {
tone(BUZZER, 880, 150);
delay(200);
tone(BUZZER, 1200, 150);
delay(200);
noTone(BUZZER);
}
void jumpSound() {
tone(BUZZER, 1500, 80);
}
void levelUpSound() {
tone(BUZZER, 1000, 100);
delay(120);
tone(BUZZER, 1400, 100);
}
void gameOverSound() {
tone(BUZZER, 400, 300);
delay(350);
tone(BUZZER, 300, 400);
delay(450);
noTone(BUZZER);
}
void resetGame() {
score = 0;
level = 1;
gameSpeed = 150;
obstaclePos = 15;
jumping = false;
playerRow = 1;
gameOver = false;
}
void setup() {
pinMode(TRIG, OUTPUT);
pinMode(ECHO, INPUT);
pinMode(BUZZER, OUTPUT);
pinMode(kirmiziled, OUTPUT);
pinMode(sariled, OUTPUT);
lcd.begin();
lcd.backlight();
lcd.createChar(0, ship);
lcd.createChar(1, asteroid);
highScore = EEPROM.read(0);
lcd.setCursor(2, 0);
lcd.print("ROBOTIK ZIPLAMA");
lcd.setCursor(4, 1);
lcd.print("HAZIR...");
}
void loop() {
long distance = readDistance();
// ---- BEKLEME EKRANI ----
if (waitingStart) {
lcd.setCursor(0, 0);
lcd.print("Baslamak icin...");
lcd.setCursor(0, 1);
lcd.print("Elini Yaklastir");
digitalWrite(kirmiziled,LOW);
if (distance < 5) {
waitingStart = false;
resetGame();
lcd.clear();
startMelody();
}
return;
}
// ---- GAME OVER ----
if (gameOver) {
lcd.clear();
lcd.setCursor(3, 0);
lcd.print("OYUN BITTI");
lcd.setCursor(0, 1);
lcd.print("Puan:");
lcd.print(score);
digitalWrite(kirmiziled,HIGH);
gameOverSound();
delay(2000);
if (score > highScore) {
highScore = score;
EEPROM.write(0, highScore);
}
waitingStart = true;
lcd.clear();
return;
}
// ---- JUMP ----
if (distance < 10 && !jumping) {
jumping = true;
jumpStart = millis();
playerRow = 0;
jumpSound();
digitalWrite(sariled,HIGH);
delay(100);
digitalWrite(sariled,LOW);
}
if (jumping && millis() - jumpStart > 400) {
jumping = false;
playerRow = 1;
}
lcd.clear();
lcd.setCursor(0, playerRow);
lcd.write(byte(0));
lcd.setCursor(obstaclePos, 1);
lcd.write(byte(1));
obstaclePos--;
if (obstaclePos == 0 && playerRow == 1) {
gameOver = true;
}
if (obstaclePos < 0) {
obstaclePos = 15;
score++;
if (score % 5 == 0) {
level++;
gameSpeed -= 15;
levelUpSound();
}
}
lcd.setCursor(12, 0);
lcd.print("S:");
lcd.print(score);
lcd.setCursor(12, 1);
lcd.print("L:");
lcd.print(level);
delay(gameSpeed);
}
