#include "SoftwareSerial.
h"
#include "DFRobotDFPlayerMini.h"
#include "U8glib.h"
#define buton1 4
#define buton2 12
#define buton3 13
#define kat1 A0
#define kat2 A1
#define kat3 A2
int kat1led=5;
int kat2led=7;
int kat3led=6;
//-----------------Step Motor Global Kodları-------------------
const int motorPin1 = 8;
const int motorPin2 = 9;
const int motorPin3 = 10;
const int motorPin4 = 11;
const int birturadimsayisi = 540;
int bekleme =3;
//-------------------------------------------------------
//------------------Oled Ekran Global Kodları------------------
U8GLIB_SH1106_128X64 u8g(U8G_I2C_OPT_NONE);
//-------------------------------------------------------
//------------------Ses Çalma Kodu---------------------------
// Use pins 2 and 3 to communicate with DFPlayer Mini
static const uint8_t PIN_MP3_TX = 2; // Connects to module's RX
static const uint8_t PIN_MP3_RX = 3; // Connects to module's TX
SoftwareSerial softwareSerial(PIN_MP3_RX, PIN_MP3_TX);
// Create the Player object
DFRobotDFPlayerMini player;
//-------------------------------------------------------------
int hangikat=0;
int atilacakadimsayisi=120;
int geriatilacakadimsayisi=100;
bool katikisoyle=false;
bool katikitetik=false;
void setup() {
pinMode(buton1,INPUT);
pinMode(buton2,INPUT);
pinMode(buton3,INPUT);
pinMode(motorPin1, OUTPUT);
pinMode(motorPin2, OUTPUT);
pinMode(motorPin3, OUTPUT);
pinMode(motorPin4, OUTPUT);
pinMode(kat1led,OUTPUT);
pinMode(kat2led,OUTPUT);
pinMode(kat3led,OUTPUT);
Serial.begin(9600);
softwareSerial.begin(9600);
//--------------Ses Çalma Kodu----------------------
// Start communication with DFPlayer Mini
if (player.begin(softwareSerial)) {
Serial.println("OK");
// Set volume to maximum (0 to 30).
player.volume(25);
// Play the first MP3 file on the SD card
player.play(1);
} else {
Serial.println("Connecting to DFPlayer Mini failed!");
//-----------------------------------------------------
void loop() {
int buton1kontrol=digitalRead(buton1);
int buton2kontrol=digitalRead(buton2);
int buton3kontrol=digitalRead(buton3);
if(buton1kontrol==HIGH){
birincikatagit();
}else if(buton2kontrol==HIGH){
ikincikatagit();
}else if(buton3kontrol==HIGH){
ucuncukatagit();
}else{
Serial.println("Beklenmeyen problem var.");
void birincikatagit(){
int kat1mi=analogRead(kat1);
int kat2mi=analogRead(kat2);
int kat3mi=analogRead(kat3);
if(kat1mi<100){
digitalWrite(kat1led,HIGH);
digitalWrite(kat2led,LOW);
digitalWrite(kat3led,LOW);
player.play(2);
if(kat2mi<100){
digitalWrite(kat2led,HIGH);
player.play(3);
for(int i=0;i<10000;i++){
hangikat=analogRead(kat1);
if(hangikat<100){
player.play(2);
break;
}else{
Serial.println("1. kata iniyor...");
yaz("Mert-Kaan","1. kata iniyor");
geriadimat(atilacakadimsayisi);
digitalWrite(kat1led,HIGH);
digitalWrite(kat2led,LOW);
digitalWrite(kat3led,LOW);
yaz("Mert-Kaan","1. kata indi.");
Serial.println("1. kata indi.");
if(kat3mi<100){
digitalWrite(kat3led,HIGH);
player.play(4);
for(int i=0;i<10000;i++){
hangikat=analogRead(kat1);
kat2mi=analogRead(kat2);
if(hangikat<100){
break;
}else{
if(kat2mi<100 && katikisoyle==false){
digitalWrite(kat3led,LOW);
digitalWrite(kat2led,HIGH);
player.play(3);
katikisoyle=true;
Serial.println("1. kata iniyor...");
yaz("Mert-Kaan","1. kata iniyor");
geriadimat(atilacakadimsayisi);
player.play(2);
digitalWrite(kat1led,HIGH);
digitalWrite(kat2led,LOW);
digitalWrite(kat3led,LOW);
yaz("Mert-Kaan","1. kata indi.");
Serial.println("1. kata indi.");
katikisoyle=false;
void ikincikatagit(){
int kat1mi=analogRead(kat1);
int kat2mi=analogRead(kat2);
int kat3mi=analogRead(kat3);
if(kat1mi<100){
digitalWrite(kat1led,HIGH);
player.play(2);
for(int i=0;i<10000;i++){
hangikat=analogRead(kat3);
if(hangikat<100){
break;
}else{
Serial.println("2. kata cikiyor...");
yaz("Mert-Kaan","2. kata cikiyor");
ileriadimat(atilacakadimsayisi);
for(int i=0;i<10000;i++){
hangikat=analogRead(kat2);
if(hangikat<100){
break;
}else{
Serial.println("2. kata cikiyor...");
yaz("Mert-Kaan","2. kata cikiyor");
geriadimat(atilacakadimsayisi);
player.play(3);
digitalWrite(kat1led,LOW);
digitalWrite(kat2led,HIGH);
digitalWrite(kat3led,LOW);
yaz("Mert-Kaan","2. kata cikildi.");
Serial.println("2. kata cikildi.");
if(kat2mi<100){
digitalWrite(kat1led,LOW);
digitalWrite(kat2led,HIGH);
digitalWrite(kat3led,LOW);
player.play(3);
}
if(kat3mi<100){
digitalWrite(kat3led,HIGH);
player.play(4);
for(int i=0;i<10000;i++){
hangikat=analogRead(kat2);
if(hangikat<100){
break;
}else{
Serial.println("2. kata iniyor...");
yaz("Mert-Kaan","2. kata iniyor");
geriadimat(atilacakadimsayisi);
player.play(3);
digitalWrite(kat1led,LOW);
digitalWrite(kat2led,HIGH);
digitalWrite(kat3led,LOW);
yaz("Mert-Kaan","2. kata indi.");
Serial.println("2. kata indi.");
void ucuncukatagit(){
int kat1mi=analogRead(kat1);
int kat2mi=analogRead(kat2);
int kat3mi=analogRead(kat3);
if(kat1mi<100){
digitalWrite(kat1led,HIGH);
player.play(2);
for(int i=0;i<10000;i++){
hangikat=analogRead(kat3);
kat2mi=analogRead(kat2);
if(hangikat<100){
break;
}else{
if(kat2mi<100){
katikitetik=true;
if(kat2mi>100 && katikisoyle==false && katikitetik==true){
digitalWrite(kat1led,LOW);
digitalWrite(kat2led,HIGH);
player.play(3);
katikisoyle=true;
Serial.println("3. kata cikiyor...");
yaz("Mert-Kaan","3. kata cikiyor");
ileriadimat(atilacakadimsayisi);
for(int i=0;i<10000;i++){
hangikat=analogRead(kat3);
if(hangikat>100){
break;
}else{
Serial.println("3. kata cikiyor...");
yaz("Mert-Kaan","3. kata cikiyor");
ileriadimat(atilacakadimsayisi);
for(int i=0;i<10000;i++){
hangikat=analogRead(kat3);
if(hangikat<100){
break;
}else{
Serial.println("3. kata cikiyor...");
yaz("Mert-Kaan","3. kata cikiyor");
geriadimat(atilacakadimsayisi);
katikisoyle=false;
katikitetik=false;
player.play(4);
digitalWrite(kat1led,LOW);
digitalWrite(kat2led,LOW);
digitalWrite(kat3led,HIGH);
yaz("Mert-Kaan","3. kata cikildi.");
Serial.println("3. kata cikildi.");
if(kat2mi<100){
digitalWrite(kat2led,HIGH);
player.play(3);
for(int i=0;i<10000;i++){
hangikat=analogRead(kat3);
if(hangikat<100){
break;
}else{
Serial.println("3. kata cikiyor...");
yaz("Mert-Kaan","3. kata cikiyor");
ileriadimat(atilacakadimsayisi);
for(int i=0;i<10000;i++){
hangikat=analogRead(kat3);
if(hangikat>100){
break;
}else{
Serial.println("3. kata cikiyor...");
yaz("Mert-Kaan","3. kata cikiyor");
ileriadimat(atilacakadimsayisi);
for(int i=0;i<10000;i++){
hangikat=analogRead(kat3);
if(hangikat<100){
break;
}else{
Serial.println("3. kata cikiyor...");
yaz("Mert-Kaan","3. kata cikiyor");
geriadimat(atilacakadimsayisi);
player.play(4);
digitalWrite(kat1led,LOW);
digitalWrite(kat2led,LOW);
digitalWrite(kat3led,HIGH);
yaz("Mert-Kaan","3. kata cikildi.");
Serial.println("3. kata cikildi.");
if(kat3mi<100){
digitalWrite(kat1led,LOW);
digitalWrite(kat2led,LOW);
digitalWrite(kat3led,HIGH);
player.play(4);
}
void draw(String mesaj,String mesaj2) { // Ekran görsel yerleşimini ve
yazdırılacak metnin düzenlendiği bölüm.
u8g.setFont(u8g_font_profont12); // Yazının Fontu belirlendi.
u8g.setPrintPos(0, 28); // Yazının ekrandaki yeri belirlendi.
u8g.print(mesaj);
u8g.setFont(u8g_font_profont12);
u8g.setPrintPos(0, 56);
u8g.print(mesaj2);
void yaz(String mesaj1, String mesaj2){
u8g.firstPage();
do {
draw(mesaj1,mesaj2);
} while (u8g.nextPage());
delay(25);
void adim1() {
digitalWrite(motorPin1, HIGH);
digitalWrite(motorPin2, LOW);
digitalWrite(motorPin3, LOW);
digitalWrite(motorPin4, LOW);
delay(bekleme);
void adim2() {
digitalWrite(motorPin1, LOW);
digitalWrite(motorPin2, HIGH);
digitalWrite(motorPin3, LOW);
digitalWrite(motorPin4, LOW);
delay(bekleme);
}
void adim3() {
digitalWrite(motorPin1, LOW);
digitalWrite(motorPin2, LOW);
digitalWrite(motorPin3, HIGH);
digitalWrite(motorPin4, LOW);
delay(bekleme);
void adim4() {
digitalWrite(motorPin1, LOW);
digitalWrite(motorPin2, LOW);
digitalWrite(motorPin3, LOW);
digitalWrite(motorPin4, HIGH);
delay(bekleme);
void ileriadimat(int adim){
for (int i = 0; i < adim ; i++){
adim1();
adim2();
adim3();
adim4();
void geriadimat(int adim){
for (int i = 0; i < adim ; i++){
adim4();
adim3();
adim2();
adim1();