/*LED Yanıp Sönme Süresini Değiştirme: Arduino’ ya bağlı 500ms’ de bir LED’ in yanıp
sönme süresi butona bastıkça 250ms’ ye artacaktır. En yüksek bekleme süresi 2sn
olduğunda tekrar 500ms’ ye geri dönecektir. LED’ lerin yanıp sönmesi için verilen
gecikme butonun algılanmasını etkilememesi beklenmektedir.*/
/*int led=4;
int button=2;
int i=250;
int stateButton;
int oncekiDurum=HIGH;
void setup() {
Serial.begin(9600);
pinMode(led, OUTPUT);
pinMode(button, INPUT);
digitalWrite(led,LOW);
}
void loop() {
stateButton=digitalRead(button);
if(oncekiDurum==HIGH && stateButton==LOW){
oncekiDurum=stateButton;
Serial.println("Butona basıldı");
digitalWrite(led,HIGH);
i=i+250;
delay(i);
digitalWrite(led, LOW);
}
else{
digitalWrite(led, LOW);
}
if(i>2000){
i=250;
}
}
*/
int led = 4;
int button = 2;
unsigned long ledDelay = 500;
unsigned long previousLedMillis = 0;
bool ledState = LOW;
unsigned long debounceDelay = 50;
unsigned long lastDebounceTime = 0;
int buttonState = HIGH;
int lastButtonState = HIGH;
void setup() {
pinMode(led, OUTPUT);
pinMode(button, INPUT_PULLUP);
digitalWrite(led, ledState);
Serial.begin(9600);
}
void loop() {
unsigned long currentMillis = millis();
// LED yanıp sönme işlemi
if (currentMillis - previousLedMillis >= ledDelay) {
previousLedMillis = currentMillis;
ledState = !ledState;
digitalWrite(led, ledState);
}
// Buton okuma işlemi (debounce'lu)
int reading = digitalRead(button);
if (reading != lastButtonState) {
lastDebounceTime = currentMillis;
}
if ((currentMillis - lastDebounceTime) > debounceDelay) {
if (reading != buttonState) {
buttonState = reading;
if (buttonState == LOW) {
Serial.println("Butona basıldı");
ledDelay += 250;
if (ledDelay > 2000) {
ledDelay = 500;
}
previousLedMillis = currentMillis; // SÜRE DEĞİŞİNCE zamanlayıcıyı da güncelle
}
}
}
lastButtonState = reading;
}