int dir = 12;
int pulse = 11;
int drvAktif = 10;
int saatAyar = 125;
int buton1 = 8;
int buton2 = 7;
int ledPin = 9;
int sayac = 0;
int uyariSayaci = 0;
int limit = 1;
int limitLed = 0;
int uyariLimit;
int sayacAktif = false;
int t;
int t2;
void setup() {
Serial.begin(9600);
pinMode(buton1, INPUT);
pinMode(buton2, INPUT);
pinMode(ledPin, OUTPUT);
pinMode(drvAktif, OUTPUT);
pinMode(dir, OUTPUT);
pinMode(pulse, OUTPUT);
digitalWrite(dir, LOW);
digitalWrite(pulse, LOW);
digitalWrite(drvAktif, HIGH);
}
void loop() {
//---------Buton Kontrolleri---------------------------------
while (digitalRead(buton2) == HIGH && sayacAktif == false) {
t++;
delay(1);
}
if (t > 500) {
saatAyar = 125;
t = 0;
}
if (t > 50 && t < 500) {
saatAyar = saatAyar + 125;
delay(100);
t = 0;
}
//----------Set ayarları---------------------------------------
while (digitalRead(buton1) == HIGH && sayacAktif == false) {
t2++;
delay(1);
}
if (t2 < 500 && t2 > 50) {
limit = limit + 1;
delay(100);
if (limit > 5) {
limit = 1;
}
while (limitLed < limit) {
analogWrite(ledPin, 200);
delay(150);
analogWrite(ledPin, 0);
delay(200);
limitLed = limitLed + 1;
}
limitLed = 0;
t2 = 0;
}
if (t2 > 500) {
sayac = 0;
sayacAktif = true;
delay(100);
t2 = 0;
}
Serial.print(limit);
Serial.print("\t");
Serial.print(sayac);
Serial.print("\t");
Serial.print(saatAyar);
Serial.print("\t");
Serial.println(sayacAktif);
delay(1);
//---------Buton Kontrolleri---------------------------------
while (sayacAktif == true && sayac < limit) {
//---------uyarı bölümü----------------------------------
uyariLimit = limit - sayac;
while (uyariLimit > uyariSayaci) {
delay(300);
analogWrite(ledPin, 200);
delay(150);
analogWrite(ledPin, 0);
delay(300);
uyariSayaci = uyariSayaci + 1;
}
uyariSayaci = 0;
//---------uyarı bölümü----------------------------------
geriSayim();
sayac = sayac + 1;
if ( sayac == limit) {
sayacAktif = false;
digitalWrite(drvAktif, HIGH);
}
}
}
void geriSayim() {
digitalWrite(drvAktif, LOW);
digitalWrite(dir, LOW);
for (int i = 0; i <= 240; i++) {
analogWrite(ledPin, i);
digitalWrite(pulse, HIGH);
delayMicroseconds(50);
digitalWrite(pulse, LOW);
delay(saatAyar);
}
delay(100);
digitalWrite(dir, HIGH);
for (int i = 0; i <= 240; i++) {
analogWrite(ledPin, 240 - i);
digitalWrite(pulse, HIGH);
delayMicroseconds(50);
digitalWrite(pulse, LOW);
delayMicroseconds(2500);
}
}