// İlgili Pinleri İsimlendiriyoruz
const int PWM_A = 3;
const int YON_A = 12;
const int FREN_A = 9;
const int SNS_A = A0;
const int BREAK_DURATION = 500; // fren suresi
const int MOTOR_SPEED = 255; //Motor hizi
/**
* Motor surucuyu ilklendir
*/
void initMotorShield(){
// A Çıkışını Konfigure etme
pinMode(FREN_A, OUTPUT); // Kanal A daki Fren Pin i
pinMode(YON_A, OUTPUT); // Kanal A daki Yön
}
/**
* Arduinoyu karistirma suresi gelene dek bekletir.
* (bekleme suresinin ekrana bastirilmasi eklenecektir.)
* @param duration Bekleme suresi
*/
void waitForMix(int duration){
delay(duration);
}
/**
* Zeoliti karistirir.
* @param stepDuration Motorun karistirmak icin bir adimdaki hareketinin suresi
* @param count Toplam karistirma sayisi.
*/
void mixZeolit(int stepDuration,int count){
int i;
for(i=0; i < count; i++){
// pozitif yon
digitalWrite(FREN_A, LOW); // LOW Komutu ile Freni engelleme
digitalWrite(YON_A, HIGH); // HIGH komutu ile motoru İleri Çalıştırma
analogWrite(PWM_A, MOTOR_SPEED); // Motorun çalışma hızını ayarlama 255 maksimum
delay(stepDuration); // Motoru yüksek hızda tutma
// fren
digitalWrite(FREN_A, HIGH); // Fren e bastık
delay(BREAK_DURATION);
//negatif yon
digitalWrite(FREN_A, LOW); // Motor Frenlemesi İptali
digitalWrite(YON_A, LOW); // YON_A daki pin i düşürmek motoru geriye doğru çalıştıracaktır
analogWrite(PWM_A, MOTOR_SPEED); // Motor Hızı Maksimumda
delay(stepDuration);
// fren
digitalWrite(FREN_A, HIGH); // Fren e bastık
delay(BREAK_DURATION);
}
analogWrite(PWM_A, 0); // Motorun gücünü kestik
}
/**
* Tus takimi, analog girdi gibi yontemlerle ayarlanmis karistirma
* adim suresini dondurur.
*/
int getStepDuration(){
//TODO bir girdiden alinmasi saglanacak
return 2000;
}
/**
* Arka arkaya iki yonlu hareket ile karistirma sayisini dondurur.
*/
int getMixCount(){
//TODO bir girdiden alinmasi saglanacak
return 10;
}
/**
* Karistirma periyodunu dondurur.
*/
int getMixPeriod(){
//TODO bir girdiden alinmasi saglanacak
return 10800000; // 3 saat
}
void setup() {
initMotorShield();
}
void loop() {
int stepDuration, mixCount, mixPeriod;
int waitDuration; // bekleme suresi
stepDuration = getStepDuration();
mixCount = getMixCount();
mixPeriod = getMixPeriod();
waitDuration=mixPeriod - mixCount * stepDuration;
mixZeolit(stepDuration,mixCount); // karistir.
waitForMix(waitDuration); // Bir sonraki karistirmaya dek bekle
}