Kodlarda bir değişklik yok;
const int sensorPinA0 = A0; // doğu ldr
const int sensorPinA1 = A1; // batı ldr
const int pmotorPinA0 = 12; // doğu röle ucu
const int pmotorPinA1 = 11; // batı röle ucu
const int switch1Pin = 5; //doğu limit sw
const int switch2Pin = 6; //batı limit sw
// variables:
int sensorValueA0 = 0;
int sensorValueA1 = 0;
int switch1val= digitalRead(switch1Pin);
int switch2val= digitalRead(switch2Pin);
void setup() {
Serial.begin(9600);
pinMode(5, INPUT);
pinMode(6, INPUT);
pinMode(12, OUTPUT);
digitalWrite(12, LOW);
pinMode(11, OUTPUT);
digitalWrite(11, LOW);
}
void loop() {
// read the sensor:
sensorValueA0 = analogRead(sensorPinA0);
sensorValueA1 = analogRead(sensorPinA1);
switch1val= digitalRead(switch1Pin);
switch2val= digitalRead(switch2Pin);
int Rate1 = analogRead(sensorPinA0);//Doğu LDR digital değeri
int Rate2 = analogRead(sensorPinA1);//Batı LDR digital değeri
if (Rate1 == 512){ //LDR max digital değerinin yarısını kullandım hassasiyet gayet iyi.
digitalWrite(12, HIGH);//motor doguya döner
digitalWrite(11, LOW);}
if (Rate2 == 512){
digitalWrite(11, HIGH);//motor batıya döner
digitalWrite(12, LOW);}
if (Rate1 == Rate2){
digitalWrite(12, LOW);//her iki değer eşit ise motor durur.
digitalWrite(11, LOW);}
if (Rate1 == Rate2 && switch1val == HIGH){//her iki değer eşit ise ve batı sw'i (sw1) basıldı ise motoru doğuya döndür
digitalWrite(11, HIGH);
digitalWrite(12, LOW);
delay(12000);//motorun doğuya dönmesi için gerekli zaman
}
if (switch2val == HIGH){//doğu sw'i (switch 2)basıldı ise motoru durdur.
digitalWrite(11, LOW);
digitalWrite(12, LOW);}
}
en son 3 satırda switch 2 motoru doğuya geldiğinde durduruyor fakat switch o esnada HIGH pozisyonunda basılı kaldığı için programın işleyişi duruyor.ertesi gün güneş doğduğunda işleme devam etmiyor.