|
| 1 | +#include "WiFi.h" // wifi kütüphanesi |
| 2 | +#include "esp_now.h" // 2 kart arasında wifi haberleşme başlatılması için kullandığımız kütüphane |
| 3 | +#define MotorA1 D0 // Motor A1 kontrol pini tanımı |
| 4 | +#define MotorA2 D1 // Motor A2 kontrol pini tanımı |
| 5 | +#define MotorB1 D8 // Motor B1 kontrol pini tanımı |
| 6 | +#define MotorB2 D9 // Motor B2 kontrol pini tanımı |
| 7 | +int ileriHiz; // İleri hızı tutacak değişken |
| 8 | +// Veri yapısı tanımı: x ve y koordinatlarını içerir |
| 9 | +typedef struct struct_message { |
| 10 | + int x; |
| 11 | + int y; |
| 12 | +} struct_message; |
| 13 | +struct_message myData; // Alınan veriyi saklayacak struct değişkeni |
| 14 | +void OnDataRecv(const uint8_t *mac, const uint8_t *incomingData, int len) { |
| 15 | + // Alınan veriyi myData değişkenine kopyala |
| 16 | + memcpy(&myData, incomingData, sizeof(myData)); |
| 17 | + // Y eksenine göre hareket kontrolü |
| 18 | + |
| 19 | + if (myData.y >= 10) { // Eğer Y koordinatı 10 veya daha büyükse |
| 20 | + myData.y = map(myData.y, 0, 90, 0, 255); // Y koordinatını 0-90 arasından 0-255 arasına yeniden haritalar |
| 21 | + if (myData.y >= 15) { // Eğer Y koordinatı 15 veya daha büyükse |
| 22 | + ileri(); |
| 23 | + } else { |
| 24 | + dur(); // Değilse dur |
| 25 | + } |
| 26 | + ileriHiz = myData.y; // İleri hızı güncelle |
| 27 | + Serial.println("Y1: " + String(myData.y) + " Hiz: " + String(ileriHiz)); // Seri monitöre yazdırma |
| 28 | + } else if (myData.y <= -10) { // Eğer Y koordinatı -10 veya daha küçükse |
| 29 | + myData.y = map(myData.y, -90, 0, 255, 0); // Y koordinatını -90-0 arasından 255-0 arasına yeniden haritalar |
| 30 | + if (myData.y >= 15) { // Eğer Y koordinatı 15 veya daha büyükse |
| 31 | + geri(); // Geri hareket |
| 32 | + } else { |
| 33 | + dur(); // Değilse dur |
| 34 | + } |
| 35 | + ileriHiz = myData.y; // İleri hızı güncelle |
| 36 | + Serial.println("Y2: " + String(myData.y) + " Hiz: " + String(ileriHiz)); // Seri monitöre yazdırma |
| 37 | + } |
| 38 | + // X eksenine göre hareket kontrolü |
| 39 | + else if (myData.x >= 10) { // Eğer X koordinatı 10 veya daha büyükse |
| 40 | + myData.x = map(myData.x, 5, 85, 0, 255); // X koordinatını 5-85 arasından 0-255 arasına yeniden haritalar |
| 41 | + if (myData.x >= 15) { // Eğer X koordinatı 15 veya daha büyükse |
| 42 | + sol(); // Sola dönme |
| 43 | + } else { |
| 44 | + dur(); // Değilse dur |
| 45 | + } |
| 46 | + Serial.println("X1: " + String(myData.x) + " Araç sola dönüyor."); // Seri monitöre yazdırma |
| 47 | + } else if (myData.x <= -10) { // Eğer X koordinatı -10 veya daha küçükse |
| 48 | + myData.x = map(myData.x, -85, -5, 255, 0); // X koordinatını -85--5 arasından 255-0 arasına yeniden haritalar |
| 49 | + if (myData.x >= 15) { // Eğer X koordinatı 15 veya daha büyükse |
| 50 | + sag(); // Sağa dönme |
| 51 | + } else { |
| 52 | + dur(); // Değilse Dur |
| 53 | + } |
| 54 | + Serial.println("X2: " + String(myData.x) + " Araç sağa dönüyor."); // Seri monitöre yazdırma |
| 55 | + } else { |
| 56 | + dur(); |
| 57 | + } |
| 58 | +} |
| 59 | +void setup() { |
| 60 | + Serial.begin(115200); // Seri haberleşme başlatma |
| 61 | + WiFi.mode(WIFI_STA); // WiFi istemci modunu ayarlama |
| 62 | + // ESP-NOW başlatma |
| 63 | + if (esp_now_init() != ESP_OK) { // Eğer ESP-NOW başlatılamazsa |
| 64 | + Serial.println("ESP-NOW başlatılamadı"); |
| 65 | + return; |
| 66 | + } |
| 67 | + // Veri alındığında çağrılacak fonksiyonun tanımlanması |
| 68 | + esp_now_register_recv_cb(OnDataRecv); |
| 69 | + |
| 70 | +} |
| 71 | +void loop() { |
| 72 | + delay(20); // 20 milisaniye bekleyerek döngüyü yavaşlatma |
| 73 | +} |
| 74 | +void ileri() { |
| 75 | + analogWrite(MotorA1, ileriHiz); |
| 76 | + analogWrite(MotorA2, 0); |
| 77 | + analogWrite(MotorB1, ileriHiz); |
| 78 | + analogWrite(MotorB2, 0); |
| 79 | +} |
| 80 | +void geri() { |
| 81 | + analogWrite(MotorA1, 0); |
| 82 | + analogWrite(MotorA2, ileriHiz); |
| 83 | + analogWrite(MotorB1, 0); |
| 84 | + analogWrite(MotorB2, ileriHiz); |
| 85 | +} |
| 86 | +void sol() { |
| 87 | + analogWrite(MotorA1, 125); |
| 88 | + analogWrite(MotorA2, 0); |
| 89 | + analogWrite(MotorB1, 0); |
| 90 | + analogWrite(MotorB2, 125); |
| 91 | +} |
| 92 | +void sag() { |
| 93 | + analogWrite(MotorA1, 0); |
| 94 | + analogWrite(MotorA2, 125); |
| 95 | + analogWrite(MotorB1, 125); |
| 96 | + analogWrite(MotorB2, 0); |
| 97 | +} |
| 98 | +void dur() { |
| 99 | + analogWrite(MotorA1, 0); |
| 100 | + analogWrite(MotorA2, 0); |
| 101 | + analogWrite(MotorB1, 0); |
| 102 | + analogWrite(MotorB2, 0); |
| 103 | +} |
0 commit comments