/*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.*
const int ledPin = 2; // LED'in bağlı olduğu pin
const int buttonPin = 4; // Butonun bağlı olduğu pin
unsigned long currentMillis = 0;
unsigned long previousLedMillis = 0;
unsigned long previousButtonMillis = 0; // Buton debouncing için son basılma zamanı
const long debounceDelay = 50; // Buton debouncing gecikmesi (ms)
long blinkInterval = 500; // Başlangıç yanıp sönme süresi (ms)
const long minBlinkInterval = 500; // Minimum yanıp sönme süresi
const long maxBlinkInterval = 2000; // Maksimum yanıp sönme süresi
const long intervalStep = 250; // Artış miktarı
int ledState = LOW; // LED'in mevcut durumu (açık/kapalı)
int lastButtonState = HIGH; // Butonun son durumu (debouncing için)
void setup() {
pinMode(ledPin, OUTPUT);
pinMode(buttonPin, INPUT_PULLUP); // Dahili pull-up direnci kullan
Serial.begin(9600); // Hata ayıklama için seri portu başlat
}
void loop() {
currentMillis = millis(); // Mevcut zamanı al
// LED Kontrolü
if (currentMillis - previousLedMillis >= blinkInterval) {
previousLedMillis = currentMillis; // Son yanıp sönme zamanını güncelle
ledState = !ledState; // LED durumunu tersine çevir
digitalWrite(ledPin, ledState); // LED'i yak veya söndür
}
// Buton Kontrolü (Debouncing ile)
int reading = digitalRead(buttonPin);
if (reading != lastButtonState) {
// Buton durumu değişti, debouncing için bekle
Serial.println("butona basıldı");
previousButtonMillis = currentMillis;
}
if ((currentMillis - previousButtonMillis) > debounceDelay) {
// Debounce süresi geçti, buton durumunu kontrol et
if (reading == LOW) { // Butona basıldı (INPUT_PULLUP kullanıldığında LOW)
// Yanıp sönme süresini ayarla
blinkInterval += intervalStep;
if (blinkInterval > maxBlinkInterval) {
blinkInterval = minBlinkInterval; // Maksimuma ulaştığında başa dön
}
Serial.print("Yeni yanip sonme suresi: ");
Serial.println(blinkInterval);
}
}
lastButtonState = reading; // Son buton durumunu güncelle
}
*/
const int ledPin = 2;
const int buttonPin = 4;
unsigned long currentMillis = 0;
unsigned long previousLedMillis = 0;
unsigned long previousButtonMillis = 0;
const long debounceDelay = 50;
long blinkInterval = 500;
const long minBlinkInterval = 500;
const long maxBlinkInterval = 2000;
const long intervalStep = 250;
int ledState = LOW;
int lastButtonState = HIGH;
void setup() {
pinMode(ledPin, OUTPUT);
pinMode(buttonPin, INPUT_PULLUP);
Serial.begin(9600);
}
void loop() {
currentMillis = millis();
// LED kontrolü
if (currentMillis - previousLedMillis >= blinkInterval) {
previousLedMillis = currentMillis;
ledState = !ledState;
digitalWrite(ledPin, ledState);
}
// Buton okuma
int reading = digitalRead(buttonPin);
// Sadece durum değiştiğinde zaman kaydı al (debounce başlangıcı)
if (reading != lastButtonState) {
previousButtonMillis = currentMillis;
}
// debounce süresi sonunda ve düşen kenarda işlem yap
if ((currentMillis - previousButtonMillis) > debounceDelay) {
if (lastButtonState == HIGH && reading == LOW) {
Serial.println("butona basıldı");
blinkInterval += intervalStep;
if (blinkInterval > maxBlinkInterval) {
blinkInterval = minBlinkInterval;
}
Serial.print("Yeni yanip sonme suresi: ");
Serial.println(blinkInterval);
}
}
// Buton son durumunu güncelle
lastButtonState = reading;
}