//================== Example7_7 ====================
#include <Wire.h>
#include <Adafruit_GFX.h>
#include <Adafruit_SH110X.h>
#define i2c_Address 0x3c 
#define SCREEN_WIDTH 128 
#define SCREEN_HEIGHT 64 
#define OLED_RESET -1   
Adafruit_SH1106G display = Adafruit_SH1106G(SCREEN_WIDTH, SCREEN_HEIGHT,&Wire, OLED_RESET);

//============== motor A ================
#define pinDirection1 12
#define pinMotor1 13
//============== motor B ================
#define pinDirection2 4
#define pinMotor2 25

//============== sensor pins =============
#define sensorPin1 34
#define sensorPin2 39

void setup() {
  Serial.begin(115200);
  initOled();
  pinMode(pinDirection1, OUTPUT);
  pinMode(pinDirection2, OUTPUT);
  pinMode(sensorPin1, INPUT); // חיישן קו 1
  pinMode(sensorPin2, INPUT); // חיישן קו 2
  functionsForPrintingAmessage(20,5,"Test Car");
}

void loop() {
  int sensor1 = digitalRead(sensorPin1); // קריאה מחיישן 1
  int sensor2 = digitalRead(sensorPin2); // קריאה מחיישן 2

  if (sensor1 == LOW && sensor2 == LOW) {
    motors(180, 180); // שני החיישנים על קו שחור - נסיעה ישרה
    functionsForPrintingAmessage(15, 35, " forward  ");
  } else if (sensor1 == HIGH && sensor2 == LOW) {
    motors(0, 180); // חיישן שמאל לא על קו, חיישן ימין על קו - פנייה שמאלה
    functionsForPrintingAmessage(15, 35, " turn left ");
  } else if (sensor1 == LOW && sensor2 == HIGH) {
    motors(180, 0); // חיישן שמאל על קו, חיישן ימין לא על קו - פנייה ימינה
    functionsForPrintingAmessage(15, 35, " turn right ");
  } else {
    motors(0, 0); // שני החיישנים לא על קו - עצירה
    functionsForPrintingAmessage(15, 35, "  stop     ");
  }

  delay(100); // השהייה קלה לצורך יציבות
}
