Arduino'da butonla LED animasyonunu başlatıp durdurma

Mehmet emir 1907

Hectopat
Katılım
29 Ocak 2021
Mesajlar
61
Daha fazla  
Cinsiyet
Erkek
Bir LED animasyonunu var. Butona 1 kez bastığımda bir daha basana kadar devam etmesini istiyorum. Bir tür on-off butonu gibi. Kodu nedir?
 
const int ledPin = 9; // LED pin
const int buttonPin = 2; // Buton pin
bool ledState = false; // LED animasyonu açık mı?
bool buttonState = false; // Butonun şu anki durumu
bool lastButtonState = false; // Bir önceki buton durumu

void setup() {
pinMode(ledPin, OUTPUT); // LED çıkış olarak ayarlandı
pinMode(buttonPin, INPUT_PULLUP); // Buton dahili pull-up direnci ile giriş
}

void loop() {
// Butonun durumunu oku
buttonState = digitalRead(buttonPin);

// Eğer butona basıldıysa (aç-kapa tetiklemesi)
if (buttonState == LOW && lastButtonState == HIGH) {
ledState = !ledState; // LED animasyonunun durumunu değiştir
delay(200); // Debounce için kısa bir gecikme
}
lastButtonState = buttonState;

// Eğer LED animasyonu açık ise
if (ledState) {
digitalWrite(ledPin, HIGH);
delay(300); // LED açık bekleme süresi
digitalWrite(ledPin, LOW);
delay(300); // LED kapalı bekleme süresi
} else {
digitalWrite(ledPin, LOW); // LED animasyonu kapalıysa LED'i söndür
}
}


Bir şey istersen söyleyebilirsin.
 
C++:
const int buttonPin = 2;   // Buton için pin
const int ledPin = 13;     // LED için pin
bool isRunning = false;    // Animasyonun durumunu takip eden değişken
bool lastButtonState = LOW; // Butonun önceki durumu
unsigned long lastDebounceTime = 0; // Son debounce zamanı
unsigned long debounceDelay = 50;   // Debounce gecikmesi

void setup() {
  pinMode(buttonPin, INPUT_PULLUP); // Butonu pull-up ile yapılandır
  pinMode(ledPin, OUTPUT);         // LED pinini çıkış olarak ayarla
}

void loop() {
  // Butonun durumunu oku
  int reading = digitalRead(buttonPin);

  // Debounce kontrolü
  if (reading != lastButtonState) {
    lastDebounceTime = millis();
  }

  if ((millis() - lastDebounceTime) > debounceDelay) {
    // Butonun durumu değiştiyse
    if (reading == LOW) { // Düğmeye basıldığında
      isRunning = !isRunning; // Durumu değiştir
    }
  }

  lastButtonState = reading;

  // LED animasyonu
  if (isRunning) {
    ledAnimation();
  } else {
    digitalWrite(ledPin, LOW); // Animasyon durdurulunca LED kapalı
  }
}

void ledAnimation() {
  // Basit bir animasyon örneği: LED yanıp söner
  digitalWrite(ledPin, HIGH);
  delay(200);
  digitalWrite(ledPin, LOW);
  delay(200);
}
 
Bu siteyi kullanmak için çerezler gereklidir. Siteyi kullanmaya devam etmek için çerezleri kabul etmelisiniz. Daha Fazlasını Öğren.…